これは、Webアプリケーションの開始/ホスティングがどのように進化するかについての理解です。簡単な要約:
1.クラシックASP.NET:必須のIISパイプラインの最後のステップで実行するアプリケーションコードのみを記述します
2. ASP.NET with OWIN: .NET Webサーバーを構成し、アプリケーションコードを記述します。IISに直接結合されなくなったため、強制的に使用する必要がなくなりました。
3. ASP.NET Core:ホストとWebサーバーの両方を構成して、アプリケーションコードを使用および記述します。完全な.NET Frameworkの代わりに.NET Coreをターゲットにする場合、.NET Webサーバーを使用する必要はなくなりました。
次に、それがどのように機能するか、およびどのクラスを使用してアプリケーションを起動するかについてもう少し詳しく説明します。
従来のASP.NET
従来のASP.NETアプリケーションには、Global.asax
エントリポイントとしてファイルがあります。これらのアプリケーションはIISでのみ実行でき、コードはIISパイプラインの最後で実行されます(コードが実行される前にIISがCORS、認証などを担当します)。IIS 7以降では、ASP.NETランタイムをIISに統合する統合モードでアプリケーションを実行できます。これにより、ファイルのイベントでのURLの書き換えやファイルの新しいセクションの使用など、以前は(またはIIS自体では)不可能であった機能をコードで構成できます。Application_Start
Global.asax
<system.webserver>
web.config
OWINを使用したASP.NET
まず、OWINはライブラリではなく、.NET Webサーバー(IISなど)がWebアプリケーションと対話する方法の仕様です。マイクロソフト自体は、プロジェクトカタナ(いくつかの異なるNuGetパッケージを通じて配布)と呼ばれるOWINの実装を持っています。この実装は、クラスでIAppBuilder
遭遇するインターフェイスとStartup
、Microsoftが提供する一部のOWINミドルウェアコンポーネント(OMC)を提供します。使用するIAppBuilder
基本的にプラグアンドプレイでミドルウェアを構成して、Webサーバー用のパイプラインを作成します(上記のポイントのようにIIS7 +のASP.NETパイプラインに加えて)。 CORSのミドルウェアコンポーネント、認証のミドルウェアコンポーネント...)このため、アプリケーションはIISに明確に結合されなくなり、次のような任意の.NET Webサーバーで実行できます。
すべてが非常に混乱するのは、どちらもGlobal.asax
OWIN Startup
クラスと一緒にサポートされているということですが、どちらも同じようなことができます。たとえば、本当に混乱Global.asax
するOWINミドルウェアを使用してCORS と認証を実装することができます。
私の経験則では、OWINを追加する必要があるときはいつでもGlobal.asax
使用できるように、ファイルStartup
をすべて削除することです。
ASP.NET Core
ASP.NET Coreは次の進化であり、.NET Coreまたは完全な.NET Frameworkのいずれかをターゲットにできるようになりました。.NET Coreをターゲットにすると、.NET標準をサポートする任意のホストでアプリケーションを実行できます。つまり、(前のポイントのように).NET Webサーバーに制限されなくなり、Dockerコンテナー、Linux Webサーバー、IIS ...でアプリケーションをホストできます。
ASP.NET Core WebアプリケーションのエントリポイントはProgram.cs
ファイルです。そこでホストStartup
を構成し、パイプラインを構成する場所にクラスを再度指定します。OWINの使用(IAppBuilder.UseOwin
拡張メソッドを使用)はオプションですが、完全にサポートされています。
AreaRegistration.RegisterAllAreas();
この方法は、起動時にこのように使用することはできませんApplication_Start
。しかし、私のアプリケーションはAPIであり、この方法は、MVCアプリケーションのために明らかにのみ有用である:stackoverflow.com/questions/18404637/...