ASP.Net 코어 3.0 시리즈 II를 탐험 : Startup.cs의 이야기 ASP.Net 코어 3.0

원본 : ASP.Net 코어 3.0 시리즈 II를 탐색 : Startup.cs의 ASP.Net 코어 3.0 이야기

서문 : .NET 코어 3.0 SDK는 준비가 만든 템플릿의 이전 버전보다 더 많이 포함되어 있습니다. 이 기사에서는 다른 템플릿 ASP.NET 코어 3 응용 프로그램의 사용의 숫자를 비교하며, ASP.NET 코어는 새로운 헬퍼 메소드를 구성 서비스 및 미들웨어 3.0에 대한 몇 가지를 볼 수 있습니다.

 번역 : 앤드류 잠금    https://andrewlock.net/comparing-startup-between-the-asp-net-core-3-templates/

 

ASP.NET 코어 3.0을 탐구 시리즈 : 새로운 프로젝트 파일, Program.cs 및 일반 호스트

ASP.Net 코어를 탐색 3.0 시리즈 세 : ASP.Net 코어 3.0 서비스 제공자 검증

ASP.Net 코어를 탐색 3.0 시리즈 4 : 당신은 ASP.NET 코어 3.0에서 응용 프로그램을 시작할 때 비동기 작업을 실행

ASP.Net 코어를 탐색 3.0 시리즈 다섯 : IHostLifetime을 소개하고 시작하는 일반 호스트를 명확하게 상호 작용

ASP.Net 코어 3.0 시리즈 여섯 탐험 : ASP.NET 코어 3.0의 새로운 기능은 구조화 된 로그 정보를 시작합니다

이제 ASP.NET 코어 템플릿을 살펴 보자 :

(1) ASP.NET 코어 빈 템플릿

(2) ASP.NET 코어 웹 API 템플릿

(3) ASP.NET 핵심 웹 응용 프로그램 (모델 - 뷰 - 컨트롤러) 템플릿
(4) ASP.NET 코어 웹 앱 (면도기) 템플릿

여기에 포함되지 않은 템플릿뿐만 아니라, 더 많은 템플릿 -Blazor 템플릿, 클라이언트 측 템플릿, 작업자 템플릿이 있습니다 - 당신이 DOTNET 새 목록을 실행하여 모든 템플릿을 볼 수 있습니다!

 

一, ASP.NET 코어 빈 템플릿

당신은 빈 웹 템플릿을 생성 할 수 있습니다, 당신은 아래의 일반 호스트 Program.cs의 표준 구성을 얻을 DOTNET 새로운 스파 스 Startup.cs에 의해 설명합니다 :

코드를 복사
공개  수업 시작은 
    { 
        // 이 메소드는 런타임에 의해 호출됩니다. 컨테이너에 서비스를 추가하려면이 방법을 사용합니다.
        //이 방문하여 응용 프로그램을 구성하는 방법에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkID=398940 
        공공  무효 ConfigureServices (IServiceCollection 서비스) 
        { 
        } 

        // 이 메소드는 런타임에 의해 호출됩니다. HTTP 요청 파이프 라인을 구성하려면이 방법을 사용합니다. 
        공공  무효 구성 (IApplicationBuilder 응용 프로그램, IWebHostEnvironment의 ENV) 
        { 
            경우 (env.IsDevelopment ()) 
            {
                app.UseDeveloperExceptionPage (); 
            } 

            app.UseRouting (); 

            app.UseEndpoints (엔드 포인트 => 
            { 
                endpoints.MapGet ( " / " , 비동기 컨텍스트 => 
                { 
                    기다리고 context.Response.WriteAsync를 ( " 안녕하세요! " ); 
                }); 
            }); 
        } 
    }
코드를 복사

은 ASP.NET 코어 2.x 응용 프로그램과 비교하여 큰 차이는 상당한 사용 엔드 포인트 경로입니다. 그것은하지만 MVC 컨트롤러, 2.2 년에 도입되었다. 3.0에서 엔드 포인트 라우팅은 여기에서 설정의 가장 기본적인를 제공하기 위해 선호되는 방법입니다.

엔드 포인트 라우팅은 엔드 포인트의 실제 실행에서 분리되는 "엔드 포인트"실행 프로세스를 선택합니다. 동작 모드 및 경로의 끝 구성을 실행하기 위해 호출합니다. MVC 동작이 예에서는,이 예와 같이 단순 할 수있다 람다 컨트롤러 일 수 있고, 우리 MapGet ()가 엔드 포인트를 만들어 사용한다.

UseRouting () 확장 방법은 들어오는 요청을 확인 구현되어야하는 포인트 방식을 결정하는 것이다. UseRouting 이후에 발생하는 모든 미들웨어 () 결국 엔드 포인트가 실행되는 알 호출합니다. UseEndpoints ()는 엔드 포인트를 강제 할 책임도 엔드 포인트를 구성 할 책임이있다.

당신은 엔드 포인트 라우팅, 제안 된 기준의 다음 문서에 익숙하지 않은 경우 :

나는 걱정하지 마세요, 특정 엔드 포인트 라우팅에 대해 얘기하고 돌아올 것이다. 다음을 볼 첫째.

 

二는 ASP.NET 코어 웹 API 템플릿

다음으로 가장 복잡한 웹 API 템플릿 webapi 템플릿은 DOTNET 새를 실행하여 생성된다. 여기에는 단순 [ApiController 상기 제어기는 get 메소드를 갖는다. 빈 템플릿보다 Startup.cs 파일 (아래 그림 참조) 더 복잡하지만 같은 측면을 많이 포함되어 있습니다.

 기본 템플릿은 IConfiguration를 사용하지 않고, IConfiguration이 템플릿 생성자를 주입. 실제 응용 프로그램에서, 당신은 거의 확실 서비스에 액세스하도록 구성해야합니다, 그래서 이것은 의미가 있습니다.

ConfigureServices에서는 코어 ASP.NET 3.0의 새로운 기능의 확장 방법 AddControllers ()를 호출한다. 2.X에서 종종 모든 ASP.NET 핵심 애플리케이션에 services.AddMvc ()를 호출. 그러나, 모든 내용은 면도기 페이지 및보기 렌더링과 같은 MVC 서비스를 구성하는 데 사용됩니다. 당신은 단지 웹 API를 작성하는 경우,이 서비스는 완전히 불필요합니다. 만 더 나은, 원치 않는되지 추가하지 않고, 웹 API는 정말 필요한 만들 콘텐츠를 추가!

 다음과 같이 그물 코어 3.0 webapi 샷은 다음과 같습니다 :

AddControllersCore는 다음에 해당 출처 :

다음과 같이 그물 코어 3.0 MVC 샷은 다음과 같습니다 :

 

 AddControllersWithViewsCore는 다음에 해당 출처 :

 

 다음은 HTTPS 리디렉션 미들웨어는 미들웨어는 요청이 보안 도메인 (이 확실히 가장 좋은 방법입니다) 확신 할 수있다. 후속 미들웨어 엔드 포인트 선택 행동을 결정하는 데 사용 할 수 있도록 다음, 우리는 다시 초기 경로에서 "경로"미들웨어를 사용합니다.

 인증 미들웨어 3.0의 새로운, 그리고 큰 정도 엔드 포인트 라우팅의 도입에 감사합니다. 당신은 여전히 ​​여기에 지금 이러한 특성의 구현을 [권한 부여] 속성 장식 컨트롤러 액션을 사용할 수 있지만. 진짜 장점은 비 MVC 엔드 포인트 인증 정책에 적용 할 수있는, 당신은 수동으로 이전 강제 식으로 처리 할 수 ​​있어야합니다.

마지막으로, endpoints.MapControllers를 호출하여 컨트롤러에 매핑 API (). 이것은 단지 매핑은 컨트롤러의 속성을 라우팅로 장식되어 있습니다 것 - 그것은 통상적 인 경로를 구성하지 않습니다.

 

三의 ASP.NET 코어 웹 앱 (MVC) 템플릿

웹 API에 비해 내용 MVC 템플릿 (DOTNET 새로운 MVC는) 더 자주 템플릿을 포함하지만, 2.x에서 동일한 기능과 비교하여, 그것은 약간 감소했다. 하나의 컨트롤러, 즉 HomeController, 뷰 및 관련 필수 공유 면도기 템플릿입니다.

Startup.cs 템플릿과 웹 API는 매우 비슷하지만, 약간의 차이는 아래에 설명되어 있습니다 :

코드를 복사
공용  클래스 시작 
{ 
    공개 시작 (IConfiguration 구성) 
    { 
        구성 = 구성; 
    } 

    공공 IConfiguration 구성 { 얻을 ; } 

    공공  무효 ConfigureServices (IServiceCollection 서비스) 
    { 
        services.AddControllersWithViews (); 
    } 

    공공  무효 구성 (IApplicationBuilder 응용 프로그램, IWebHostEnvironment의 ENV) 
    { 
        경우 (env.IsDevelopment ()) 
        { 
            app.UseDeveloperExceptionPage (); 
        } 
        다른
        { 
            app.UseExceptionHandler ( " / 홈 / 오류 " ); 
            app.UseHsts (); 
        } 

        app.UseHttpsRedirection (); 
        app.UseStaticFiles (); 

        () app.UseRouting; 

        app.UseAuthorization (); 

        app.UseEndpoints (엔드 포인트 => 
        { 
            endpoints.MapControllerRoute ( 
                이름 : " 기본 " , 
                패턴 : " ? {컨트롤러 = 홈} / {행동 = 인덱스} / {ID} " ); 
        }); 
    } 
}
코드를 복사

대신 AddControllers () 확장 방법을,이 시간 우리는 AddControllersWithViews 있습니다. 예상 할 수 있듯이, 이것은 MVC 컨트롤러와 MVC 보편적 서비스의 웹 API를 추가 할뿐만 아니라, 필요한 서비스를 보여주는 면도기보기를 추가합니다. 미들웨어 도관 외부 환경 미들웨어 개발 예외 처리기를 포함하고, 또한 2.2 HSTS 같은 미들웨어 및 HTTPS 재 첨가 그래서 이것은 MVC 애플리케이션이되기 때문이다.

다음 미들웨어를 라우팅하기 전에 위치하는 정적 파일 미들웨어이다. 이것은 각각의 정적 파일 요청이 MVC 응용 프로그램에서 흔히있을 수있는 라우팅 할 필요가없는 것을 보장한다.

유일한 차이점은 웹 API 엔드 포인트 라우팅 미들웨어 등록 MVC 컨트롤러와 템플릿입니다. 이 경우, 대신 라우팅 방법 웹 API의 전형적인 속성으로, MVC 컨트롤러에 대한 정기적 인 경로를 추가합니다. 다시 말하지만,이에 설정할 수 있지만 엔드 포인트 라우팅 시스템 조정 2.x으로 유사합니다.

 

四, ASP.NET 코어 웹 앱 (면도기) 템플릿

면도기 페이지를 ASP.NET 코어 2.0은 MVC 기반의 대안 페이지입니다 도입된다. , Startup.cs MVC 너무 DOTNET 새로운 웹 애플리케이션 버전은 매우 비슷 많은 애플리케이션의 경우, 면도기 페이지는 MVC 모델보다 더 자연 제공하지만, 그것은 기본적으로 MVC 인프라 구축을 기반으로합니다 :

코드를 복사
공용  클래스 시작 
{ 
    공개 시작 (IConfiguration 구성) 
    { 
        구성 = 구성; 
    } 

    공공 IConfiguration 구성 { 얻을 ; } 

    공공  무효 ConfigureServices (IServiceCollection 서비스) 
    { 
        services.AddRazorPages (); 
    } 

    공공  무효 구성 (IApplicationBuilder 응용 프로그램, IWebHostEnvironment의 ENV) 
    { 
        경우 (env.IsDevelopment ()) 
        { 
            app.UseDeveloperExceptionPage (); 
        } 
        다른 
        {
            app.UseExceptionHandler ( " / 오류 " ); 
            app.UseHsts (); 
        } 

        app.UseHttpsRedirection (); 
        app.UseStaticFiles (); 

        () app.UseRouting; 

        app.UseAuthorization (); 

        app.UseEndpoints (종점 => 
        { 
            endpoints.MapRazorPages (); 
        }); 
    } 
}
코드를 복사

이 파일의 첫 번째 변화는 AddControllersWithViews입니다 () () AddRazorPages를 교체했다. 예상 할 수 있듯이,이 면도기 페이지 필요한 모든 다른 서비스를 추가합니다. 흥미롭게도,이 표준 MVC 컨트롤러 면도기보기로 필요한 서비스를 사용하여 추가하지 않았다. 당신이 당신의 응용 프로그램에서 동시에 MVC와 면도기 페이지를 사용하는 경우 AddMvc () 확장 방법을 계속 사용해야합니다. Startup.cs의 유일한 변화는 MVC 면도기 페이지 엔드 포인트 엔드 포인트로 대체됩니다. 그리고 서비스는 동시에 응용 프로그램에서 MVC와 면도기 페이지를 사용하려는 경우처럼, 당신은 두 개의 엔드 포인트를 매핑해야합니다.

 

다음과 같이 코드입니다 :

코드를 복사
app.UseEndpoints (엔드 포인트 => 
{ 
    endpoints.MapControllers (); // 지도 속성 라우팅 API 컨트롤러 
    endpoints.MapDefaultControllerRoute (); // 기본 경로를 사용하여 기존의 MVC 컨트롤러지도 
    endpoints.MapRazorPages를 (); 
});
코드를 복사

 

V. 요약

이 문서에서는 ASP.NET 코어 Startup.cs 파일의 다양한 만들 간략한 개요 사용하는 템플릿을 제공합니다. 각 템플릿 추가 기능의 수에서 처음으로 증가 템플릿, 그리고 몇 가지 추가 기능을 제공합니다. .NET 코어 3.0 SDK 및 .NET 핵심 2.X 템플릿 템플릿 매우 유사합니다. 가장 큰 새로운 기능은보다 쉽게 ​​응용 프로그램이 MVC 서비스뿐만 아니라 .NET 코어 3.0 표준 라우팅 방법입니다 경로의 새로운 끝점에 필요한 최소를 포함 할 수있는 능력이다.

 

번역 : 앤드류 잠금    https://andrewlock.net/comparing-startup-between-the-asp-net-core-3-templates/

 

저자 : 구오 청

출처 : HTTP : //www.cnblogs.com/runningsmallguo/

이 문서에서는, 저자 및 블로그 공원 전체에 속하는 다시 인쇄에 오신 것을 환영합니다,하지만이 부분에 의해 선언 된 저자의 동의없이 유지하고 명백한 위치에 원래 기사 페이지의 링크를 제공해야합니다.

추천

출처www.cnblogs.com/lonelyxmas/p/11789434.html