http://owin.org/spec/owin-1.0.0.htmlで OWIN 1.0 仕様を読んでいますが、それがどのように機能するかについて頭を悩ませることはできません。Katana のソースをダウンロードしましたが、サイズが大きく、何の役にも立ちませんでした。私は、インターフェースのみを備えたプロジェクト/アセンブリを持つやや標準的な方法に精通しています。これにより、直接の管理なしで2つのプロジェクトを統合できます。しかし、Web サーバーが Func<> と Action<> の定義だけで Web アプリを呼び出す方法を理解できません。
2 に答える
OWIN は次の 2 つに要約されます。
1) 「環境」辞書
2) リクエストを処理し、レスポンスを送信するメソッド。
#1 の場合、これは、要求ヘッダー、要求ストリーム、応答ヘッダー、応答ストリーム、およびサーバー データへのアクセスを提供する単なるプロパティ バッグです。これは、ASP.NET の HttpContext または System.Net.HttpListener の HttpListenerContext と考えてください。実際、より最近の Katana のビルド ( https://katanaproject.codeplex.com/、これは ASP.NET チームによるオープン ソースの実装です) では、これを簡素化してより簡単にするための改善 (今後さらに追加予定) が行われています。OwinRequest、OwinResponse、およびIOwinContextを含むオブジェクト モデルを使用します。
#2 の場合、これは「AppFunc」と呼ばれることが多く、署名は次のとおりです。
using AppFunc = Func<IDictionary<string, object>, Task>;
このシグネチャは、リクエスト ハンドラのパイプラインにある「ミドルウェア」に使用されるか、HTML を生成しているエンド アプリケーション、WebAPI などである可能性があります。
Katana には、前述の IOwinContext を使用するためにこの署名を単純化する、継承可能なクラスがあります。OwinMiddlwareを見てみましょう
また、Katana/OWIN の取り組みの概要を示したこの記事を読むこともできます: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana