web-dev-qa-db-ja.com

ASP.NET vNextはホストに依存しませんが、それはどういう意味ですか?

ASP.NET vNextチュートリアル によると:vNext is Host agnostic . You can Host your app in IIS, or self-Host in a custom process

現在のasp.netホストと新しいホストの違いを示して、これを深く理解するのを誰かが助けてくれますか?

36
Amr Badawy

ASP.NETホスティングの歴史

2002年には、基本的に.NETプラットフォーム用のWebサーバーが1つあり、それがIISでした。数年後、Visual Studio開発Webサーバー(「Cassini」、以前は元のWeb Matrixの一部)が開発専用サーバーとして登場しました。しかし、これらはすべて、最終的にはSystem.WebをアプリケーションとWebサーバー間のホスティングレイヤーとして使用していました。 System.WebホストはIISと緊密に結合されており、他のホストで実行するのは非常に困難です。VSDevWebサーバーでの実装でさえ、特定の機能のみをサポートしているため制限されていました。 、System.Webに依存する典型的なASP.NETアプリケーションには、まだ1つの本番品質の「ホスト」しかありませんでした。

約10年早送りすると、アプリケーションとWebサーバー間のインターフェイスとして [〜#〜] owin [〜#〜] が登場しました。これにより、OWIN互換のアプリケーションは、OWINを介してOWIN互換のホスティングレイヤーを持つWebサーバーと通信できるようになりました。 Microsoftは、 Katana を、ASP.NET Web API、ASP.NET SignalR、およびIIS)を含む複数のサーバー上で多くのサードパーティフレームワークをホストできる1つのOWIN実装として記述しました。 (およびIIS Express)、Katanaのセルフホストサーバー、およびカスタムホスト(つまり、カスタムアプリでKatanaのホストを実行します) Nowin と呼ばれる別のOWIN実装があります。 Katanaと同じアプリを実行できる。これはホストに依存しない例です。

ここでさらに数年早送りすると、 ASP.NET vNext があります。これは、ミドルウェアとホストにとらわれないという点でOWINと非常によく似たモデルに従います。 ASP.NET vNextには、OWINミドルウェアアプリコンポーネントの互換性レイヤーもあります。

ASP.NETvNextホストの不可知論

ASP.NET vNextは、KatanaやOWINと同じように、ホストに依存しません。 ASP.NET vNextを使用して作成されたアプリケーションは、IApplicationBuilder(以前のIBuilder)インターフェイスなどのホスト抽象化レイヤーについてのみ認識します。アプリケーションはWebサーバーと直接通信しません。この抽象化の多くは「機能インターフェイス」を介して行われるため、一部のサーバーは機能を実装でき、他のサーバーは実装しないことを選択できます。

Webホスティングオプション

ASP.NET vNextアプリケーションは、IIS、IIS Express、独自のカスタムEXE、新しいクロスプラットフォーム Kestrel サーバーでホストでき、間違いなくさらに多くのホストが未来。

KatanaもASP.NETvNextも、IISまたは他のホストの代わりにはなりませんが、どちらにも代替Webサーバーがあります。IISは、比較していくつかのより高度な機能をサポートします。 KatanaおよびASP.NETvNextには、アプリケーションのウォームアップ、より豊富なアプリケーションの有効期間管理(つまり、アプリがクラッシュしたときの処理、使用するメモリ量の制御、その他の種類の調整)、リモート管理などがあります。

OWIN、ASP.NET vNext、およびホストに依存しないことの利点

私はそのグループの一員ではなかったので、OWINを作成する動機について話すことはできません。しかし、Webサーバーのホストを抽象化することのメリットはたくさんあります。

  • ホストを比較的簡単に切り替えることができます。たとえば、最小限の権限で実行できる開発専用サーバーでローカルに実行するのが一般的です。次に、本番環境に展開するときに、IISなどのよりフル機能のホストが使用されます。ただし、IISをインストールするには、管理者権限が必要です。これは、全員がワークステーションに持っているわけではありません。
  • より多くのホスティングオプションが存在する可能性があります。 ASP.NETがIIS 1つのホストしか存在できなかったため、他のホストの「市場」は事実上ありませんでした。
  • 特定の種類のテストは、メモリ内のテストホストを使用することで簡単に作成できます。これは、Webアプリケーションのスタック全体をテストするために頻繁に使用されますが、ネットワーク呼び出しはありません。

ASP.NET vNextの動機は、 はじめに チュートリアルの公式ASP.NETvNextサイトに部分的にリストされています。簡単な要約は次のとおりです。Webアプリとサービスを構築するためのクロスプラットフォーム、オープンソース、サイドバイサイド、従量課金制、ホストに依存しないプラットフォームを用意する。いくつかのマーケティング関連のように聞こえますが、これらはすべてシステムの重要な側面です。 NodeJSは、これとまったく同じ機能のセットを提供しますが、もちろん詳細を見ると、もちろん多くの実装の違いがあり、間違いなくいくつかのより深い哲学的な違いもあります。これらの機能をサポートする動機は、一般的に自明です。

ASP.NETの対象者

これは、ASP.NET Webフォームから、MVC、Web API、SignalR、Katana、ASP.NET vNextまで、すべてを含むASP.NETの一般的な対象者に関するものであることに注意してください。これらのフレームワークはいずれも、あらゆる規模のプロジェクトに適しており、適度に熟練した開発者が使用できる必要があります。これは、それらを使用するプロジェクトのサイズを見ると明らかです。このサイト(StackOverflow.com)は、一部の非常に高度な開発者(私が推測する)によってASP.NET MVCを使用して部分的に構築されていますが、比較的初心者によって構築されたMVCを使用するはるかに小さなサイトが多数あります。 ASP.NET vNextは、これらの同じフレームワークのほとんどの将来のバージョンであるため、同じタイプのアプリケーションと同じタイプの開発者を対象としています。

詳しくは

ASP.NET vNextとOWINの詳細については、開発者の1人からのブログ投稿を確認してください: http://whereslou.com/2014/06/10/asp-net-vnext-moving-parts -owin /

65
Eilon