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アプリケーションの使用回数を比較し、サービスおよびミドルウェア3.0 ASP.NETコアは、新たなヘルパーメソッドを設定するためのいくつかを表示します。

 翻訳:アンドリュー・ロック    https://andrewlock.net/comparing-startup-between-the-asp-net-core-3-templates/

 

ASP.NETコア3.0を探求シリーズ:新しいプロジェクトファイルでProgram.csと一般的なホスト

ASP.Netコアを探検3.0シリーズ3:ASP.Netコア3.0サービスプロバイダの検証

ASP.Netコアを探検3.0シリーズ4:あなたはASP.NETコア3.0でアプリケーションを起動したときに非同期タスクを実行しています

ASP.Netコアを探検3.0シリーズ5:IHostLifetimeを導入し、開始ジェネリックホストを明確に相互作用

ASP.Netコア3.0シリーズ六おすすめ情報ASP.NETコア3.0の新機能は、構造化されたログ情報を開始します

のは、ASP.NETのコアテンプレートを見てみましょう。

(1)ASP.NETコア空のテンプレート

(2)ASP.NETコアのWeb APIテンプレート

(3)ASP.NET Webアプリケーションのコア(モデル-ビュー-コントローラ)テンプレート
(4)ASP.NET Webアプリケーションのコア(レイザー)テンプレート

ここでは関与していないテンプレートに加えて、複数のテンプレート-Blazorテンプレート、クライアント側のテンプレート、労働者のテンプレートがある - あなたはDOTNET新しいリストを実行して、すべてのテンプレートを見ることができます!

 

一、ASP.NETコア空のテンプレート

あなたは空のWebテンプレートを作成することができ、あなたは以下の一般的なホストの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(" Hello Worldのを!" );
                });
            });
        }
    }
コードをコピー

ASP.NETコア2.xアプリケーションと比較すると、主な違いは、重要な用途のエンドポイントのルートです。これは、しかし、唯一のMVCコントローラ用、2.2で導入されました。3.0では、エンドポイントルーティングは、ここでの設定の最も基本的なを提供するための好ましい方法です。

エンドポイントルーティングは、エンドポイントの実際の実行から分離する「エンドポイント」実行処理を選択します。動作モードとルートの最後は、組成物を実行するために呼び出します。MVCのアクションは、この例では、この例では、我々は(MapGetを使用するように、単純なラムダとすることができるコントローラであってもよい)エンドポイントを作成します。

UseRouting()拡張メソッドは、着信要求を確認し、実施すべきエンドポイント方式を決定することです。(UseRouting後に発生し、任意のミドルウェアは)最終的に実行されるエンドポイントを知っているだろう呼び出します。UseEndpoints()エンドポイントを強制する責任も、エンドポイントを設定するための責任があります。

あなたは、エンドポイントルーティング、提案参照以下の記事に精通していない場合:

私は心配しないで、特定のエンドポイント・ルーティングの話に戻ってきます。以下を見てまず。

 

二、ASP.NETコアウェブAPIテンプレート

次の最も複雑なWeb APIテンプレートWEBAPIテンプレートはDOTNET新を実行することによって作成されます。これは、単純な[ApiController]コントローラは、Getメソッドを持っています。空白のテンプレートよりStartup.csファイルには、(以下に示すように)より複雑な、しかし同じ側面の多くが含まれています。

 デフォルトのテンプレートは、IConfigurationを使用していないが、IConfigurationは、このテンプレートコンストラクタを注入されました。任意の実際のアプリケーションでは、ほぼ確実にサービスにアクセスするように設定する必要がありますので、これは理にかなっています。

ConfigureServicesでは、ASP.NETコア3.0の新機能である拡張メソッドAddControllers()を呼び出します。2.xでは、多くの場合、すべてのASP.NETコアアプリケーションのためのservices.AddMvc()を呼び出します。しかし、すべての内容は、そのようなカミソリページやビューのレンダリングなどMVCサービスを構成するために使用されます。あなただけのWeb APIを作成する場合は、これらのサービスは完全に不要です。のみのWeb APIを作成するためにコンテンツを追加本当に良く、不要ではない追加することなく、必要とされています!

 次のようにネットコア3.0 WEBAPIショットは以下のとおりです。

AddControllersCoreに対応するソースは次のとおりです。

次のようにネットコア3.0 MVCのショットは、以下のとおりです。

 

 AddControllersWithViewsCoreに対応するソースは次のとおりです。

 

 次HTTPSリダイレクトミドルウェアは、ミドルウェアは、要求がセキュリティドメイン内(これは間違いなくベストプラクティスである)ことを確認することができ、あります。その後のミドルウェアは、エンドポイントの選択行動を決定する際に使用することができるように続いて、我々は、初期のルートに再び「ルート」のミドルウェアを使用します。

 認証ミドルウェアは3.0で新しく追加され、エンドポイントの導入のおかげで大幅にルーティングします。あなたはまだここに装飾コントローラのアクションが、今はこれらの属性の実装を属性[承認]を使用することができます。本当の利点は、あなたが手動で前に強制的な方法、それを処理する必要があり、あなたは非MVCのエンドポイントの認可ポリシーに適用することができるということです。

最後に、endpoints.MapControllersを呼び出すことによって、コントローラのマッピングAPI()。これは、マッピングは、コントローラのルーティング属性で装飾されます - これは、任意の従来の経路を設定しないであろう。

 

三、ASP.NET Webアプリケーションのコア(MVC)テンプレート

ウェブAPIよりもコンテンツMVCテンプレート(DOTNET新しいMVC)は、より頻繁にテンプレートが含まれていますが、2.xの同等の機能と比較して、それがわずかに減少しました。一つだけのコントローラ、すなわちにHomeController、ビューと関連する必要な共有カミソリテンプレート。

Startup.csテンプレートとWeb 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アプリケーションで非常に一般的でありうる、ルーティングする必要がないことを保証します。

唯一の違いは、Web APIエンドポイントルーティングミドルウェア登録MVCコントローラとテンプレートです。この場合は、代わりにルーティング方法のWeb APIの典型的な属性から、MVCコントローラの定期的なルートを追加します。再び、これはに設定するが、エンドポイント・ルーティング・システムの調整から2.xと同様です。

 

四、ASP.NET Webアプリケーションのコア(レイザー)テンプレート

レイザーページASP.NETコア2.0が導入され、それはMVCベースの代替ページです。多くのアプリケーションでは、カミソリページはMVCモデルよりも自然提供しますが、それは基本的にMVCのインフラ整備に基づいており、Startup.cs MVCのようDOTNET新しいWebアプリケーションのバージョンは非常に似ています:

コードをコピー
パブリック クラススタートアップ
{
    公共のスタートアップ(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とカミソリのページを使用する場合のように、あなたは、2つのエンドポイントをマップする必要があります。

 

コードは以下の通りであります:

コードをコピー
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