login register Sysop! about ME  
qrcode
    최초 작성일 :    2016년 05월 20일
  최종 수정일 :    2016년 05월 20일
  작성자 :    Jake
  편집자 :    Jake (류 지형)
  읽음수 :    24,763

강좌 목록으로 돌아가기

필자의 잡담~

이번 강좌를 시작으로 완전히 새로운 ASP.NET인 ASP.NET Core 강좌를 본격 개시합니다. 모든 컬럼은 http://docs.asp.net의 내용을 참고하여 번역한 것입니다.

Windows 뿐만 아니라 Linxu, OS X에서도 동작하는 완전한 크로스 플랫폼 서버기술인 ASP.NET Core! 기대해 주세요.

본 번역문서는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.

원문: https://docs.asp.net/en/latest/conceptual-overview/aspnet.html

ASP.NET Core 소개

원문 작성 : Daniel Roth

ASP.NET Core는 ASP.NET을 완전히 새롭게 재설계 하였다. 이 글은 ASP.NET Core의 새로운 개념을 소개하고 그 것들이 어떻게 모던 웹앱을 개발하는데 도움이 되는지 설명한다.

ASP.NET Core는 .NET을 이용하여 현대적인 클라우드 기반 웹 응용 프로그램을 개발하기 위해 오픈소스로 새롭게 개발된 크로스 플랫폼 프레임워크다. ASP.NET 개발팀은 클라우드뿐 아니라 온프레미스 환경에도 배포하여 수행할 수 있는 앱을 개발하기 위한 최적화된 개발 프레임워크를 제공하기 위해서 완전히 새롭게 개발을 진행하였다. 이 프레임워크는 오버헤드를 최소화한 모듈화된 컴퍼넌트로 구성되어 있어서, 솔루션 구성시에 유연성을 유지할 수 있다. 이를 이용하면 사용자는 윈도우, 맥, 리눅스에서 수행할 수 있는 ASP.NET Core 응용 프로그램을 개발할 수 있다. ASP.NET Core는 GitHub를 통해 완전히 오픈 소스의 형태로 개발되고 있다.

ASP.NET 1.0의 최초 프리뷰가 나온 것이 어느 덧 15년 전의 일이다. 그 이래로 정말 많은 개발자들이 ASP.NET을 사용하여 훌륭한 웹 응용프로그램을 만들어 왔고 우리는 그 동안 수 많은 기능들을 추가하고 발전시켜왔다.

ASP.NET Core에서 우리는 상당히 많은 아키텍쳐 변경을 통해 군더더기 없이 모듈화된 코어(core) 웹 프레임워크를 만들고 있다. ASP.NET Core는 System.Web.dll 에 더이상 기반하지 않고, 잘게 분리된 NuGet 패키지들에 기반해서 여러분의 요구에 최적화된 앱을 만들 수 있게 해준다. 응용프로그램이 필요 이상의 모듈을 포함하지 않기 때문에 보안상 개선 효과가 있고, 서비스 하는 부담 또한 줄여준다. 결국, 사용한만큼 지불하는(pay-for-what-you-use) 모델을 채택함으로써 응용프로그램의 성능이 개선된다.

ASP.NET Core는 모던 웹 응용프로그램에 대한 필요를 염두에 두고 만들어졌다. 웹 사용자 인터페이스를 만드는 것, 클라이언트 측 프레임워크와 통합되는 Web API들을 만드는 것, 이런 개발 작업의 흐름이 통일된 하나의 스토리가 된다. ASP.NET Core는 또한 클라우드 준비된(cloud-ready) 프레임워크라고 할 수 있다. 환경 기반의 구성(environment-based configuration)이 가능하고, 빌트-인 종속성 주입(dependency injection)을 제공하기 때문이다.

보다 다양한 개발자들의 주목을 끌기 위해, ASP.NET Core는 윈도우, 맥, 리눅스에서 크로스플랫폼 개발을 지원한다. 전체 ASP.NET Core 스택은 오픈 소스이고 커뮤니티의 기여와 참여를 장려하고 있다. 비주얼 스튜디오는 완벽한 커맨드-라인 인터페이스를 지원하면서 새롭고 민첩한 프로젝트 시스템을 도입하여 여러분이 원하는 도구를 사용해서 개발할 수 있다. (역주: 비주얼 스튜디오에 대한 설명이 다소 추상적인데 bower, npm 등을 사용할 수 있다는 느낌으로 해석할 수 있겠다)

정리하자면, ASP.NET Core에서는 다음과 같이 기초적으로 중대한 개선사항이 포함되었다.

  • 새롭게 경량화되고 모듈화된 HTTP 요청 파이프라인
  • IIS 또는 개발자 자신의 프로세스에서 셀프 호스트할 수 있는 능력
  • 닷넷 코어에 기반한 진정한 sidy-by-side 앱 버전 관리(versioning)
  • 모든 기능이 NuGet 패키지 형태로 추가
  • NuGet 패키지들을 생성하고 사용하는 것에 대한 통합된 지원
  • 웹 사용자 인터페이스와 웹 API를 위한 단일 웹 스택
  • 클라우드를 위한 환경 기반 구성
  • 내장된 종속성 주입 기능
  • 모던 웹 개발을 단순화 시킨 새로운 도구들(tooling)
  • 윈도우, 맥, 리눅스에서 개발하고 실행할 수 있는 크로스플랫폼
  • 오픈 소스와 커뮤니티에 초점

ASP.NET Core 응용프로그램은 Startup 클래스를 사용하여 정의된다.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }
    public void Configure(IApplicationBuilder app)
    {
    }
}

ConfigureServices 메서드는 응용프로그램에 사용될 서비스들을 정의하고 Configure 메서드는 요청 파이프라인을 구성할 미들웨어를 정의하는데 사용된다. 보다 자세한 사항은 Application Startup 아티클을 참조하자.

서비스는 응용프로그램에서 공통적으로 사용하고자 하는 목적의 컴포넌트다. 서비스들은 종속성 주입을 통해 사용이 가능하다. ASP.NET Core 는 간단한 내장(built-in) IoC 컨테이너를 포함하고 있는데 생성자를 이용한 주입 방식을 기본으로 지원하고 있다. 그러나, 여러분이 사용하는 IoC 컨테이너로 쉽게 대체할 수도 있다. 자세한 내용은 Dependency Injection 아티클을 참조하자.

ASP.NET Core 에서 서비스는 세 가지 종류(singleton, scoped, transient)로 구분된다. Transient 서비스는 컨테이너로부터 요청될 때마다 생성되고 Scoped 서비스는 현재 scope에 서비스가 존재하지 않을 때만 서비스를 생성한다. 웹 응용프로그램에서 컨테이너의 범주는 매 요청에 해당하므로 scoped 서비스는 요청당 서비스로 생각할 수 있다. 반면, Singleton 서비스는 오직 한번만 생성된다.

ASP.NET Core에서는 Middleware를 사용하여 요청 파이프라인을 구성한다. ASP.NET Core 미들웨어는 HttpContext 에 대해 비동기 로직을 수행하고 선택적으로 다음 미들웨어를 호출하거나 요청 처리 작업을 중단한다. 일반적으로 미들웨어를 사용하는 방식은 Configure 메서드에서 IApplicationBuilder의 "Use"로 시작하는 확장 메서드를 실행하는 것이다.

ASP.NET Core는 다음과 같이 사전 작성된 풍부한 미들웨어를 제공한다.

여러분은 자신만의 Custom Middleware를 작성할 수도 있다.

또한 OWIN 기반의 미들웨어를 ASP.NET Core와 함께 사용할 수 있다. 자세한 내용은 OWIN 아티클을 참조하자.

ASP.NET Core 호스팅 모델은 요청을 직접 수신하지 않는 대신, HTTP server 구현에 의지하여 응용프로그램에 대한 요청을 (HttpContext 와 작용하는 기능적인 인터페이스들의 모음으로서) 표면화한다. ASP.NET Core는 Kestrel 이라고 불리는 매니지드 크로스플랫폼 웹서버를 포함한다. Kestrel은 여러분이 통상적으로 운영환경의 웹서버로 사용하고자 하는 nginx같은 것이다.

응용프로그램내의 웹 루트는 프로젝트에서 루트 위치이다. 이 곳으로부터 예를 들면, 정적 파일 요청 같은 HTTP 요청이 처리된다. ASP.NET Core 응용프로그램의 웹 루트는 project.json 파일의 "webroot" 속성을 사용하여 설정된다.

ASP.NET Core는 간단한 이름-값 쌍을 다루는 새로운 구성모델을 사용하며 이 새 모델은 System.Configuration 또는 web.config 에 기반하지 않는다. 새 구성 모델은 구성 제공자(configuration provider)의 순차적인 집합에서 정보를 얻는다. 내장된 구성 제공자는 XML, JSON, INI 파일등 다양한 파일 형식을 지원하며 또한, 환경 기반의 구성을 가능케 하는 환경 변수도 지원한다. 여러분은 이와 더불어 사용자 정의 구성 제공자를 작성할 수도 있다. Development, Productions 처럼 환경 자체가 ASP.NET Core에서는 가장 우선시 되는 개념이고 환경 변수를 사용하여 설정된다.

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
 
if (env.IsDevelopment())
{
    // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
    builder.AddUserSecrets();
}
 
builder.AddEnvironmentVariables();
Configuration = builder.Build();

새로운 구성모델에 대한 자세한 내용은 Configuration 아티클을 참조하고 ASP.NET Core 에서 환경과 관련된 작업에 대한 자세한 내용은 Working with Multiple Environments 아티클을 참조하자.

ASP.NET Core는 클라이언트 측 프레임워크와 매끄럽게 통합되도록 설계되었고 AngularJS, KnockoutJS, Bootstrap 같은 프레임워크를 포함한다. 이와 관련하여 자세한 내용은 Client-Side Development 아티클을 참조하자.


authored by

  boxcar
  2016-05-23(13:42)
캐릭 이미지
잘 봤습니다~ 감사합니다~
  jhjh0206
  2016-05-25(21:15)
캐릭 이미지
감사합니다.
  yjhs1400
  2017-03-22(11:43)
캐릭 이미지
잘봤습니다.
  jhmin1125
  2017-05-16(08:09)
캐릭 이미지
잘봤습니다. 감사합니다.

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})