web-dev-qa-db-ja.com

Webapi、Webhost、Owinの関係

私はwebapi、webhost(iis)、owinの関係に頭を悩ませようとしています。私の現在の理解を書き留めます、そしてそれが正しいかどうか教えてください。

  • Webapi、MVCとは異なり、ホストに依存しない方法で記述されています。これはオーウィン以前の時代でしたが、どうやら彼らはオーウィンが遅かれ早かれ起こるだろうと予想していました。ホストの独立性とは、主にSystem.WebがWebapiコードのどこにも使用されていないことを意味します。 IISのみに依存し、それなしでは機能しないのはSystem.Webです。このようにして、Webapiは理論的にはどこでもホストできます-他のホストが利用可能になると。
  • ウェブホストMicrosoft.Owin.Host.SystemWebMicrosoft.AspNet.WebApi.WebHost)は、上位レベルのAPI(Webapiなど)とIISの間のレイヤーです。 Webapiは当初ホストに依存していなかったため、IISなどの特定のホストで実行するには中間層が必要でした。 Webapiのウェブホスト(Microsoft.AspNet.WebApi.WebHost)このレイヤーを提供しました。後で、Owin用のWebhostレイヤーもあります(Microsoft.Owin.Host.SystemWeb)、IISでOwin互換のすべてをホストできるようになります。
  • Owinが最後に来ました。これは基本的に、owinとそのホストの間にレイヤーがある限り、理論的には任意のホストで任意のOwin互換アプリケーションをホストできるようにする抽象化を提供しました。 OwinにはWebhostが付属しています(Microsoft.Owin.Host.SystemWeb)(WebapiがWebhostに付属していた方法と同様)OwinアプリをIISでホストできるようにしました。セルフホストも付属しています(Microsoft.Owin.SelfHost)Owinアプリを実行可能ファイル内でホストできるようにしました。 Webapiに関する限り、OwinにはWebapi用のOwin Hostも付属しています(Microsoft.AspNet.WebApi.Owin)OwinスタックでWebApiを実行できるようにしました。

上記のすべては、IISでWebapiをホストする2つの異なる方法があることを意味します。これは、OwinなしでWebapi WebHostを使用して実行することも、Owin Host forWebapiおよびWebhostforOwinを使用して実行することもできます。

Nugetリファレンス:

この理解は正しいですか?

29
Andrew Savinykh

あなたの理解は一般的に正しいですが、OWINの役割は誤解されているようです。より完全なタイムラインは次のようになります。

  1. OWIN標準 一般的な.NET Webインターフェイス、つまりWSGI/Rake/Connectを記述するために開発されました( 2010年の最初のコミット )。
  2. ASP.NET WebAPIはホストに依存せずに開発されていますが、 https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/ でリリースされています。
  3. Katana ProjectはいくつかのOWINホストを実装しています:
    1. https://www.nuget.org/packages/Microsoft.Owin.SelfHost/
    2. https://www.nuget.org/packages/Microsoft.Owin.Host.HttpListener/
    3. https://www.nuget.org/packages/Microsoft.Owin.Host.IIS/
    4. https://www.nuget.org/packages/Microsoft.Owin.Host.SystemWeb/
  4. OWIN用のASP.NETWebAPIアダプターがリリースされました: https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin

あなたの要約:

上記のすべては、IISでWebapiをホストする2つの異なる方法があることを意味します。これは、OwinなしでWebapi WebHostを使用して実行することも、Owin Host forWebapiおよびWebhostforOwinを使用して実行することもできます。

私はそれを次のように言い換えます:

上記のすべては、WebAPIをホストする2つの異なる方法があることを意味します。 WebAPI WebHost を使用して、Owinなしで実行できます。または、 WebAPI用のOWINアダプター と任意のOWIN互換ホストを使用して実行できます。 IISのホスティングオプションは Microsoft.Owin.Host.IIS および Microsoft.Owin.Host.SystemWebMicrosoft。 AspNet.WebApi.OwinSelfHost も提供されます。

16
dahlbyk