OwinベースのWebサーバKatanaリリース3
6763 ワード
ASP.NETは2002年に初めて発表された時、時代が変わった.当時、インターネットはまだスタート段階にあり、約5.69億人のユーザーがおり、ユーザー1人当たり1日平均46分、約3百万のサイトにアクセスしていた.わずか10年後、同じ測定指標によると、約22.7億人のインターネットユーザーがおり、1人当たり1日平均4時間、約5.55億人のウェブサイトにアクセスしている.ネットワークアプリケーション開発の進化に伴い、ASP.NETはASPのような新しい技術を生み出した.NET MVCとASP.NET WEB API.ネットワークアプリケーション開発の次の方向はクラウドコンピューティングに入り、KatanaプロジェクトはASP.NETは、ネットワークアプリケーションをより柔軟に、軽量化、移植しやすく、パフォーマンスを向上させるための基礎的なモジュールを提供しています.つまり、Katanaエンジニアリングはaspを最適化することができます.Netプログラム.
Katanaプロジェクトは、実際にMicrosoftの外部にあるOpen Web Interに遡ることができます.face for .NET(OWIN)のオープンソースプロジェクト.OWINは、Webサーバとアプリケーション・コンポーネントとの相互作用を定義する仕様です(owin.orgを参照).この規範の目的は広大で活力に満ちたMicrosoftに基づくものを発展させることである.NET FrameworkのWebサーバとアプリケーションコンポーネントエコシステムは、サーバとアプリケーション間のインタラクションをアプリケーション委任(AppFunc)と呼ばれる一部のタイプと単一の関数署名に減らすことができます.
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
OWINベースのアプリケーションの各コンポーネントは、サーバにアプリケーションの委任を提供します.その後、これらのコンポーネントはパイプにリンクされ、OWINベースのサーバがパイプに要求をプッシュします.リソースをより効率的に使用するために、パイプライン内のすべてのコンポーネントは非同期であるべきであり、Taskオブジェクトを返すアプリケーションの委任に反映されます.バージョン3のリリースに伴い、Kanataは現在完全にサポートされている.NET 4.5に新たに追加された非同期プログラミングモデル.ASP.NETは10年前から非同期プログラミングモデルをサポートしてきたが、.NET 2.0に導入されたIAsyncResultモデルは非常に煩雑で、多くの開発者はその存在さえ知らない.Node.jsは虚に乗じて入って、それは自分を高級な非同期web開発プラットフォームと呼んで、マイクロソフトは通過することを望んでいます.NET 4.5に導入されたasync/awaitモデルはこの称号を取り戻した.
アプリケーション・ステータス、リクエスト・ステータス、サーバ・ステータスなどを含むすべてのステータスは、アプリケーション・委任で指定されたIDictionaryオブジェクトに保存されます.このデータ構造は環境辞書と呼ばれ、要求がパイプを通過すると、あるコンポーネントから別のコンポーネントに渡されます.任意のキー/値データを環境辞書に挿入することができるが、OWIN仕様はいくつかのHTTPコア要素に対してキーを定義する.
HTTPリクエストの必須環境辞書キー
キー名
値の説明
"owin.RequestBody"
リクエスト本文(ある場合)を持つストリーム.本文を要求しなかったら、Stream.Nullはプレースホルダとして使用できます.
"owin.RequestHeaders"
要求ヘッダのIDictionary
"owin.RequestMethod"
要求されたHTTP要求メソッドを含む文字列(例えば、GETおよびPOST).
"owin.RequestPath"
リクエストパスを含む文字列.このパスは、アプリケーションが委任するルートの相対パスである必要があります.
"owin.RequestPathBase"
アプリケーションの委任に対応する「ルート」の要求パス部分を含む文字列.
"owin.RequestProtocol"
プロトコル名とバージョンを含む文字列(HTTP/1.0またはHTTP/1.1など).
"owin.RequestQueryString"
HTTP要求URIのクエリ文字列構成部分を含む文字列で、先頭"?(例えばfoo=bar&baz=quux).この値は空の文字列であってもよい.
"owin.RequestScheme"
要求のためのURIスキーム(例えばHTTPまたはHTTPS)を含む文字列.
基本的な環境辞書キー/値ペアのセットを定義することで、多くの異なるフレームワークとコンポーネントの作成者がOWINパイプで相互運用することができ、特定のものを強制的に実施する必要がない.NETオブジェクトモデルのプロトコル、例えばASP.NET MVCのHttpContextBaseまたはASP.NET Web APIにおけるHttpRequestMessage/HttpResponseMessageのプロトコル.
アプリケーション依頼と環境辞書の2つの要素がOWIN仕様を構成しています.Katanaプロジェクトは、Microsoftが作成し、発売したOWINベースのコンポーネントとフレームワークの集合です.
新しい機能特性では、新しいバージョンは主に「エンタープライズ認証機能および宣言ベースの識別(claims-based identity)」に注目しています.Katana 3プロジェクトに参加したVittorio Bertocciは、特に以下の3つのプロトコルに言及しています. WS-Federation OpenId Connect(id_tokenおよびid_token+code方式をフォーム送信方式で提供) . Web APIで使用可能なOAuth 2チケットトークン認証 Vittorioはまた、
このリリースでは、TwitterやGoogle APIの変更による問題も解決しました.アプリケーションでGoogle認証を使用し、Katanaバージョン3にアップグレードする場合は、この投稿を読んだことがあることを確認してください.
KatanaはNuGetパッケージとして入手できる.KatanaのWebサイトの説明によると、必要な特性に応じて、合計20を超えるパケットがダウンロードできます.(これは従来のASP.NETとは対照的で、後者はほとんどの特性を膨大なプログラムセットに積み上げる方法です.) Microsoft.Owin–補助タイプのセットと、OWINコンポーネントの作成を簡略化するために構築されたさまざまな抽象タイプを提供します. Microsoft.Owin.Diagnostics–OWINベースのアプリケーションの開発を支援するために、さまざまなミドルウェアコンポーネントが用意されています. Microsoft.Owin.FileSystems–このパッケージには、ファイルシステムに関する抽象と実装が提供されています. Microsoft.Owin.Testing–OWINコンポーネントのユニットテストを行ういくつかの補助クラスを提供します. Microsoft.Owin.SelfHost–独自に指定したプロセスでOWINベースのアプリケーションを管理するために必要なコンポーネントが含まれています. Microsoft.Owin.Hosting–OWINベースのアプリケーションを管理および実行するために必要なデフォルトのインフラストラクチャタイプを提供します. OwinHost–OWINベースのアプリケーションの実行を管理できる個別の実行可能プログラム(OwinHost.exe)が用意されています. Microsoft.Owin.Cors–このパッケージには、OWINミドルウェアでドメイン間リソース共有(CORS)を行うことができるコンポーネントが含まれています. Microsoft.Owin.StaticFiles–このパッケージには、ファイルとディレクトリを含むファイルシステムリソースからのリクエストを処理できるOWINミドルウェアが含まれています. Microsoft.Owin.Security–さまざまな認証ミドルウェアコンポーネントが共有する汎用タイプが含まれています. Microsoft.Owin.Security.ActiveDirectory–アプリケーションがマイクロソフト・テクノロジーを使用して認証できるミドルウェアのセット. Microsoft.Owin.Security.Cookies–アプリケーションがCookieに基づいて認証するミドルウェアを使用することを許可し、ASP.と同様である.NETにおけるフォーム認証方式. Microsoft.Owin.Security.Facebook–アプリケーションがFacebookで使用するOAuth 2.0認証ワークフローの一部のミドルウェアをサポートできるようにします. Microsoft.Owin.Security.Google–GoogleのOpenIdおよびOAuth 2.0認証ワークフローをサポートするミドルウェアのセットが含まれています. Microsoft.Owin.Security.Jwt–アプリケーションがJSON Webトークンを保護および検証できるミドルウェアのセット. Microsoft.Owin.Security.Microsoft Account–アプリケーションがマイクロソフトアカウント認証ワークフローをサポートできるミドルウェアのセット. Microsoft.Owin.Security.OAuth–アプリケーションが任意の標準OAuth 2.0認証ワークフローのミドルウェアをサポートできるようにします. Microsoft.Owin.Security.OpenIdConnect–アプリケーションがOpenIdConnect方式で認証できるミドルウェア. Microsoft.Owin.Security.Twitter–TwitterのOAuth 2.0認証ワークフローのミドルウェアをアプリケーションがサポートできるようにします. Microsoft.Owin.Security.WsFederation–アプリケーションがWsFederationを使用して認証できるミドルウェア. Microsoft.Owin.Host.HttpListener-ベース.Net FrameworkのHttpListenerクラスで作成されたOWINサーバは、現在自己管理用のデフォルトサーバでもあります. Microsoft.Owin.Host.SystemWeb–OWINサーバでも実現するが、OWINベースのアプリケーションをIISで実行し、ASPを使用することができる.NETのリクエストパイプ.
Katanaプロジェクトは、実際にMicrosoftの外部にあるOpen Web Interに遡ることができます.face for .NET(OWIN)のオープンソースプロジェクト.OWINは、Webサーバとアプリケーション・コンポーネントとの相互作用を定義する仕様です(owin.orgを参照).この規範の目的は広大で活力に満ちたMicrosoftに基づくものを発展させることである.NET FrameworkのWebサーバとアプリケーションコンポーネントエコシステムは、サーバとアプリケーション間のインタラクションをアプリケーション委任(AppFunc)と呼ばれる一部のタイプと単一の関数署名に減らすことができます.
using AppFunc = Func<IDictionary<string, object>, Task>;
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
OWINベースのアプリケーションの各コンポーネントは、サーバにアプリケーションの委任を提供します.その後、これらのコンポーネントはパイプにリンクされ、OWINベースのサーバがパイプに要求をプッシュします.リソースをより効率的に使用するために、パイプライン内のすべてのコンポーネントは非同期であるべきであり、Taskオブジェクトを返すアプリケーションの委任に反映されます.バージョン3のリリースに伴い、Kanataは現在完全にサポートされている.NET 4.5に新たに追加された非同期プログラミングモデル.ASP.NETは10年前から非同期プログラミングモデルをサポートしてきたが、.NET 2.0に導入されたIAsyncResultモデルは非常に煩雑で、多くの開発者はその存在さえ知らない.Node.jsは虚に乗じて入って、それは自分を高級な非同期web開発プラットフォームと呼んで、マイクロソフトは通過することを望んでいます.NET 4.5に導入されたasync/awaitモデルはこの称号を取り戻した.
アプリケーション・ステータス、リクエスト・ステータス、サーバ・ステータスなどを含むすべてのステータスは、アプリケーション・委任で指定されたIDictionary
HTTPリクエストの必須環境辞書キー
キー名
値の説明
"owin.RequestBody"
リクエスト本文(ある場合)を持つストリーム.本文を要求しなかったら、Stream.Nullはプレースホルダとして使用できます.
"owin.RequestHeaders"
要求ヘッダのIDictionary
"owin.RequestMethod"
要求されたHTTP要求メソッドを含む文字列(例えば、GETおよびPOST).
"owin.RequestPath"
リクエストパスを含む文字列.このパスは、アプリケーションが委任するルートの相対パスである必要があります.
"owin.RequestPathBase"
アプリケーションの委任に対応する「ルート」の要求パス部分を含む文字列.
"owin.RequestProtocol"
プロトコル名とバージョンを含む文字列(HTTP/1.0またはHTTP/1.1など).
"owin.RequestQueryString"
HTTP要求URIのクエリ文字列構成部分を含む文字列で、先頭"?(例えばfoo=bar&baz=quux).この値は空の文字列であってもよい.
"owin.RequestScheme"
要求のためのURIスキーム(例えばHTTPまたはHTTPS)を含む文字列.
基本的な環境辞書キー/値ペアのセットを定義することで、多くの異なるフレームワークとコンポーネントの作成者がOWINパイプで相互運用することができ、特定のものを強制的に実施する必要がない.NETオブジェクトモデルのプロトコル、例えばASP.NET MVCのHttpContextBaseまたはASP.NET Web APIにおけるHttpRequestMessage/HttpResponseMessageのプロトコル.
アプリケーション依頼と環境辞書の2つの要素がOWIN仕様を構成しています.Katanaプロジェクトは、Microsoftが作成し、発売したOWINベースのコンポーネントとフレームワークの集合です.
新しい機能特性では、新しいバージョンは主に「エンタープライズ認証機能および宣言ベースの識別(claims-based identity)」に注目しています.Katana 3プロジェクトに参加したVittorio Bertocciは、特に以下の3つのプロトコルに言及しています.
このリリースでは、TwitterやGoogle APIの変更による問題も解決しました.アプリケーションでGoogle認証を使用し、Katanaバージョン3にアップグレードする場合は、この投稿を読んだことがあることを確認してください.
KatanaはNuGetパッケージとして入手できる.KatanaのWebサイトの説明によると、必要な特性に応じて、合計20を超えるパケットがダウンロードできます.(これは従来のASP.NETとは対照的で、後者はほとんどの特性を膨大なプログラムセットに積み上げる方法です.)