ASP.NET CORE 기본 구성 (feat.ASP.NET CORE 시작하기)

ASP.NET CORE 기본 구성 (feat.ASP.NET CORE 시작하기)

ASP.NET Core 기본구성

구성

ASP.NET CORE를 한 부분 한 부분 살펴보기 전에 전체적인 구조를 알고 공부하면 조금 더 쉽게 공부할 수 있습니다.

그래서 먼저, 전체적인 구성은 어떤 부분이 어떤 역할을 하고, 어떻게 웹 서버가 구동이 되는지 살펴 보려고 합니다.

먼저, 해당 자료는 대부분 microsoft 공식문서를 보면서 만든 것 입니다.

Program class

가장 먼저 살펴볼 부분은 웹 서버를 생성하는 진입점인 Program.cs 파일의 Program class입니다.

기본적인 코드를 살펴보면 아래와 같습니다.

using Microsoft.AspNetCore;

using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp

{

public class Program

{

public static void Main (string[] args)

{

BuildWebHost(args).Run();

}

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.UseStartup()

.Build();

}

}

-> ASP.NET CORE 응용 프로그램은 Main 메서드에서 웹 서버를 생성하는 콘솔 앱입니다.

Main 메서드는 웹 응용 프로그램 호스트를 만드는 WebHost.CreateDefaultBuilder를 호출합니다. 이 빌더는 웹 서버를 정의하고 시작 클래스를 정의(UseStartup) 메서드들을 제공합니다.

Startup class

그 다음은 Program class에서 호출하는 Startup class를 살펴보겠습니다.

Startup class 는 요청 처리 파이프라인을 정의하고 앱에 필요한 모든 서비스를 구성하는 class 입니다.

Program class에 직접 바로 구성할 수 있지만, 대부분은 Startup class를 따로 구현해서 구성합니다.

public class Startup

{

public void ConfigureServices(IServiceCollection services)

{

// 앱에 사용할 서비스들을 추가합니다.(MVC, Entity Framework, Identity 등)

Services.addMvcCore()

.addAuthorization()

}

public void Configure(IApplicationBuilder app)

{

// 앱에 사용할 요청 파이프라인의 미들웨어(middle ware)를 정의합니다.

app.UseAuthentication();

app.UseMvc();

}

}

Startup class와 Program class의 자세한 사항들은 다음에 정리해도록 하겠습니다.

콘텐츠 루트

콘텐츠 루트는 앱에서 사용되는 뷰, Razor 페이지 및 static file 과 같은 모든 콘텐츠의 기본 경로입니다.

기본적으로 콘텐츠 루트는 앱을 호스팅하는 실행 파일의 응용 프로그램의 기본 경로와 동일합니다.

웹 루트(wwwroot)

Visual studio에서 MVC 스타일의 프로젝트를 생성하면 자동으로 wwwroot 라는 디렉토리가 생성됩니다.

쉽게 말해서 프로젝트의 static resource (js, css, image 등)가 위치하는 디렉토리입니다.

종속성 주입 (dependency injection)

서비스는 여러 앱에서 공통으로 사용하기 위한 구성 요소입니다.

서비스는 종속성 주입을 통해서 사용되게 됩니다.

Ex) services.addMvcCore()

ASP.NET Core에는 기본적으로 생성자 주입을 지원하는 컨테이너가 포함되어 있고, 컨테이너를 교체할 수도 있습니다.

자세한 내용은 따로 정리하도록 하겠습니다.

미들웨어 (Middleware)

위에 Startup class의 configure 함수에서 app의 미들웨어를 설정해준다고 했었습니다.

여러 웹 프레임워크와 마찬가지로 Asp.net core에서도 middleware를 사용해서 요청 파이프라인을 구성합니다.

public void Configure(IApplicationBuilder app)

{

// 앱에 사용할 요청 파이프라인의 미들웨어(middle ware)를 정의합니다.

app.UseAuthentication();

app.UseMvc();

}

위에서 mvc미들웨어 위에 authentication 이 있기 때문에 먼저 authentication과 관련된 부분을 처리하고 mvc 부분을 처리하게 됩니다.

조금 더 설명하면 HttpContext 상에서 비동기 로직을 수행한 다음, 순서 상에서 다음 미들웨어를 호출하거나 다음 미들웨어가 없다면 그대로

요청을 종료하게 됩니다.

ASP.NET Core는 다양한 기본 제공 미들웨어들을 함께 제공합니다.

HTTP 요청 시작하기

IHttpClientFactory 를 등록하여 앱에서 HttpClient 인스턴스를 구성하고 생성하는 데 사용할 수 있습니다.

사용할 수 있는 방법은 여러가지가 있지만 services.AddHttpClient(); 와 같이 종속성 주입을 하고 IHttpClientFactory를 통하여

httpclient 인스턴스를 만들어서 사용할 수 있습니다.

환경 변수 구성

다른 웹 프레임워크와 마찬가지로 환경 별로 환경 변수를 구성할 수 있습니다.

자세한 사항은 마찬가지로 추후에 정리해 보겠습니다.

라우팅

라우팅 기능은 들어오는 요청을 경로 처리기에 매핑하는 일을 담당하는데 경로는 ASP.NET 앱에서 정의되고 앱 시작 시 구성됩니다. 경로는 URL에서 필요에 따라 값을 추출할 수 있으며 이러한 값을 요청 처리를 위해 사용될 수 있습니다.

- 기본 ASP.NET MVC 스타일 예시

routes.MapRoute(

name: "default",

template: "{controller=Home}/{action=Index}/{id?}");

기타 구성, 로깅, 오류 처리, 라우팅, 파일 공급자, 정적 파일, 호스팅, 세션 및 앱 상태, 서버, 백 그라운드 작업은 하나하나 나중에 살펴보도록 하겠습니다.

감사합니다.

from http://blog.doosikbae.com/108 by ccl(A) rewrite - 2020-03-07 03:56:16

댓글

이 블로그의 인기 게시물

HTML 13단계 - 폼(Form) 1탄

임시 인터넷 파일캐싱을 위한 방지 html,css,javascript

[C#]Log4Net 사용법