最近ASP.NETでプロジェクトを作成すると, 以前はなかったStartup.csというファイルが生成されているはずです.
これは, はたして何なのだろうか.
これは, OWIN Open Web Server Interface for .NET に関連したファイルです.
OWINの詳細は, ここ に詳細が書かれています.
簡単に言うと, OWINは, サーバを抽象化することによってセルフホスティングを簡単にしたりするといったものであり, 例えば以前のSignalRでは, ASP.NETとコンソールそれぞれホストするために別のライブラリが必要となっていたところを, OWIN上にホストできるようになった現在では, 統一したライブラリでホストできるようになっています.
OWINを使用したアプリケーションは, どのコンポーネントもアプリケーションデリゲートを一つサーバ側に渡します.
アプリケーションは, 一つ用意されたパイプラインに接続され, それぞれのアプリケー所はパイプラインに対して要求を渡し, すべてが非同期に処理され, システムの効率化が行われます.
OWINは, アプリケーションに対するサーバの抽象化であり, node.jsに対するOWINモジュールも存在するため, サーバサイドjsとC#を連携させるといった一見難しそうなものも簡単にできるようになります.
OWINには, 非常に関係の深いKatanaというプロジェクトが存在します.
このKatanaは, 簡単に言うとOWINの仕様をそのまま実装して使えるようにしようとするプロジェクトです.
- Application
- Middleware
- Server
- Host
という4つのアーキテクチャを持ち, それぞれがOSI参照モデルのように階層化されているため, 必要な部分だけを必要な形に変更することが可能となり, 非常に効率的な開発ができるようになります.
Katanaは, まだほとんどリファレンスが無いに等しく, OWINもあえてOWINを使用する必要が感じられないのが実情です.
しかし, ASP.NETを使用せずにC#で実装されたサーバサイドアプリケーションをホスティングできる機能を持つため, 今後サーバサイドC#がもっと広まれば用途も見つかるかもしれません.