OWIN (Open Web Interface for .NET) は、.NET Web アプリケーションと Web サーバー間のインターフェースの標準です。[ 1 ]これはコミュニティが所有するオープンソース プロジェクトです。OWIN 以前は、Microsoft のASP.NET [ 2 ]テクノロジーはIISの上に設計されており、Web アプリケーションを他の Web サーバーで簡単に実行することはできませんでした (ただし、これにもかかわらず、Mono コミュニティはXSPなどの ASP.NET 互換の Web サーバーをいくつか開発しました)。
OWINは、標準インターフェースを定義することで、 ASP.NET [ 1 ] [ 2 ]アプリケーションとIISの関係を分離することを目的としています。Webサーバーの開発者は、OWINを正しく実装すれば、ASP.NETアプリケーションがサーバー上で動作することを確信できます。同様に、ASP.NETの代替として新しいWebフレームワークを開発することもできます。OWINをターゲットにしている限り、IISを含むOWIN互換のWebサーバー上で動作します。[ 3 ] [ 4 ]
この点において、OWINはJavaサーブレットとサーブレットコンテナがJVMに対して行っていることを.NETに対して行うことを目指しています。Project Katanaは、Microsoftが開発したASP.NET(.NET Framework)用のOWINコンポーネントのセットです。ASP.NET Core(.NET)には、OWINに似た独自のミドルウェアシステムがあります。
OWINはWebフレームワークとWebサーバーを分離するだけでなく、ミドルウェアをパイプラインに連結することも可能にします。Webフレームワークは、基盤となるWebサーバーと直接やり取りしているのか、Webサーバーの上に構築された1つ以上のミドルウェア層(それぞれがOWINを実装している)とやり取りしているのかを意識することなく、OWINとやり取りできます。[ 5 ]
これにより、認証などのインフラストラクチャに関する懸念事項を個別のモジュールに分割できます。これは、アプリケーション自身のコードから切り離し、アプリケーション間で再利用できるようにするため望ましいことです。Project Katana では、Microsoft は、以前はコア ASP.NET フレームワークの一部であったいくつかの ASP.NET 機能を OWIN モジュールにしました。[ 6 ]これにより、他の Web フレームワークで再利用できるようになり、それらを使用するアプリケーションとの分離もより明確になります。