web-dev-qa-db-ja.com

OWIN Katanaはいつ使うべきですか?

私はOWINとKatanaが初めてです。なぜ私はOWINを使うべきなのか、私はIISを使うことができますが、実際にはわかりません。簡単に言うと、私の質問は、「OWINの学習をスキップしてIISを自分のWebサイトに使用した場合、どうしたらいいですか?」です。

私はグーグルしましたが、簡単な説明はありません。いくらかの情報があります ここ 、しかし彼らはいくつかの専門用語を使っているので理解できません。

267

Asp.net WebApi v2では、OWINパイプラインがデフォルトになります。それはいずれのasp.netプロジェクトでも最終的には標準的なパイプラインになるでしょう。

私はそれがここに書かれているものよりも良くすることはできません: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

セクション「.NET用オープンWebインタフェース(OWIN)」では、OWINの目標について完全に説明しています。

OWINがないと、asp.netのビットはIISがアプリケーションと通信する方法に結び付けられます。 OWINはWebサーバーとフレームワークコンポーネントを抽象化します。つまり、あなたのアプリケーションコードはOWINインターフェースを認識しますが、リクエストを処理しているウェブサーバーは認識しません。

その見返りに、アプリケーションは、ホストと、場合によってはプラットフォーム/オペレーティングシステム全体の間でより簡単に移植できます。たとえば、コンソールまたは任意のプロセスでアプリケーションをホストする機能により、Monoはそれを簡単にホストできます...(Raspberry Piだれでも)

2番目の側面は、それがパイプラインとして機能するということです。


Owin Pipeline


Webサーバーとアプリケーションの間には、任意のミドルウェア(および必要に応じていくつでも)を接続できます。
これにより、よりモジュール化されたソリューションが可能になります。アプリケーションとの間でやり取りされる要求/応答に影響を与える可能性がある再配布可能なミドルウェアを開発することはできますが、これらのモジュールはアプリケーションコードから分離したままにしてください。

このモジュール方式の利点を理解するために、OWINで利用可能なnugetパッケージを見てください。 http://www.nuget.org/packages?q=owin

これらのパッケージの多くは、以前はasp.netのコア機能であり、ミドルウェアとして抽出されました。
たとえば、さまざまなOAuthプロバイダを使用してログインにサポートを追加することはインフラストラクチャの懸念(ミドルウェア)になり、アプリケーションコードの一部にする必要はもうありません。

あなたのウェブサイトのすべての画像をかわいい猫の画像に自動的に置き換えたい場合は、それを透過的に行うこともできます。

https://github.com/serbrech/Owin.Catify

編集:それは今、ニュートパッケージとして利用可能です: Owin.Catify

275
Stéphane
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

はい、そうです。 OWINはインターフェース、Katanaは実装 OWINインターフェースのMicrosoftです。したがって、私たちはこれら2つの単語(OWIN/KATANA)を一緒に聞き、多くの場合これら2つの用語の違いを混同します。だから、KatanaはマイクロソフトのOWINインターフェースの実装です。 OWINの独自の実装を作成したいと考えているBIG-BOSSという名前の別の会社があるとします。

だから、なぜOWIN !!!

移動に利用できる唯一の車両がトラックである国について考えてください。他に何もない。あなたが車を買いたいのなら、あなたはトラックを買うでしょう。ええ、それは昔から役に立ちましたが、人々は映画を見に行ったり牛乳を買いに行きたいときには特にトラックを必要としないことに気付き始めました。運転にストレスを加える。しかし、そう、彼らがたくさんの重いものを運びたいのであれば、トラックはその目的に非常に役立ちます。

それから、その国の政府は自動車メーカーのための仕様を思い付きました。仕様は以下のとおりです。

  1. 車両には4つの車輪が必要です
  2. 車両にはステアリングが必要です。
  3. 車両にはヘッドライトと信号灯が必要です。

したがって、これらの仕様に基づいて、だれでもさまざまなニーズに応じて車両を製造でき、それに応じて自分の車両に名前を付けることができます。そのため、セダン、ピックアップトラック、SUV、VANなどあらゆる種類の自動車が市場に登場しました。誰かがいつも重いものを持ち歩く必要がないのであれば、むしろ職場に行くためだけに車を必要とするのであれば、彼/彼女は少しセダンを買うことができます。彼がもう少し力を必要とすれば誰かがSUVを買うことができる。

上記の例に基づいて、私たちのASP.NET Webアプリケーションは(トラックのように)高負荷のSystem.Webアセンブリを使用していて、私たちの目的が単にファイルベースのファイルを提供することである場合ごく一部の要求では、System.Web Assembly(トラック)という重いものを使用することになります。今、OWINが現れます。 OWINは、サーバーを定義する一連の仕様(これをインターフェースと呼びます)です。その仕様に基づいて、(自動車メーカーのような)誰かが特定の問題領域/アプリケーションのニーズに基づいてさまざまな種類のサーバーを作ることができます。マイクロソフトは、Web APIを提供できるのと同じ方法で、独自のKatanaという名前のOWIN用の実装を作成しました。 WebAPIは、本格的なSystem.Webのものを必要としない軽量のテクノロジであるため、KatanaでホストされているWeb Apiを使用すると、軽量のServer実装(Katanaなど)でパフォーマンスが大幅に向上します。

さて、あなたが尋ねれば、 '私はそれが必要ですか'?答えは「あなたのパフォーマンスの必要性によります」です。映画を見に行ってもトラックを運転しても構わないのであれば、おそらくOWINは必要ありません。あなたがそれを感じるなら、あなたが街の中で運転する必要があるのは、軽量のセダン車だけです。映画を見るなど。はい、あなたはOWINのどんな実装が市場で利用可能であるかチェックするかもしれません。 KatanaはOWINの実装の1つなので、Katanaが提供するものを確認できます。 Katanaだけでなく、他の会社が特定のドメインに従ってOWINを実装している場合(たとえば、最新の医療情報をダウンロードする医療機器用のサーバーなど)、あなたが医師であれば、おそらくOWINの実装を確認できます。さらに、あなた自身が、特定のニッチをターゲットにしたOWINのあなた自身の実装を作成することができます。

単純なWeb開発者で、クライアント用にカスタムWebサイトを開発している場合は、Webアプリケーションに関して、OWINのカスタム実装について心配する必要はありません。これは、IISがバランスの取れた方法で役立つためです。 。 Web APIプロジェクトを構築すると、KatanaベースのテンプレートがVisual Studio - > New Projectから作成されるので、Katana固有のテクニックを学ぶ以外に心配する必要はありません。現時点では、KatanaはASP.NET MVCのIISの必要性を完全に置き換えるほど成熟していませんが、おそらく将来はそうなるでしょう。

では、いつ自分のOWIN実装を書く必要があるのでしょう?

回答:ええと、たとえば、バックグラウンドでサーバーとして実行し、ポート番号XXXXを監視する必要があるWindowsアプリケーションを開発したとします。あなたのサーバーは、このようないくつかのリクエストのみに応答します。

  1. 在庫をGETする
  2. 在庫IDを削除= 4
  3. PUT在庫ID = 5

それで全部です。何もありません。それでは、なぜこの小さなタスクに完全なIIS Webサーバーが必要なのでしょうか。その場合、あなた自身のOWIN実装を作成することができます。 (おそらく、あなたはそのためにKatanaを使うでしょう)

さて、私は、ASP.NET MVC Webサイトを作成したいのであれば、IISに代わる選択肢はありません。そのときはなぜKatanaについて知る必要があるのでしょうか?

回答:Katanaは、ASP.NET MVC Webサイトを直接KatanaでホストできるようにするためにIISの必要性を置き換えるほど成熟していませんが、KatanaはOWINのクールなインターフェイスを多数実装しています。これらの機能を並べて使用する利点たとえば、ユーザーがFacebook、Google、Twitterなどを使用してログインできるようにすることは、これまであまり簡単ではありませんでした。 Katanaには(ミドルウェアとして)多数のフックが用意されているため、配管コードを書かなくてもKatanaに外部のソーシャルメディアベースの認証を簡単に任せることができます。 Katanaを使用することには他にも多くの利点があります。この技術を使い始めるとわかるかもしれません。

206
Emran Hussain

その答えの簡単なバージョンは、KatanaがSystem.Web Assemblyと古いASP.NETパイプラインを完全に置き換えようとしているということです。

だから誰もが今その進化を見て、それがついに完成したときに切り替える準備ができているべきです。

以下は、Microsoftが含めていない詳細を記入するために描いた図です この記事

enter image description here

OWINは、アプリケーションフレームワークを実行させ、その下にあるすべてのことを忘れるような標準です。その一方で、OWIN自体はさまざまなホストアダプタを利用して、基盤となるWebサーバー(IISなど)と通信できるようにします。

私は今、OWIN/KatanaとJexusを橋渡しするためのホストアダプタをどのように書くことができるかを調査するためにJexus Webサーバの作者と協力しています。私たちはOWINが柔軟で高度にカスタマイズ可能であることを本当にうれしく思います。

参照: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/

45
Lex Li

IISを使用できるのに、なぜOWINを使用する必要があるのですか。

OWINはWebサーバーをあなたが働くフレームワークから切り離すように設計されています。それはアプリケーションを軽量で移植性のあるフレームワークやサーバーに移植することができます。

そしてKatanaは、MicrosoftによるOWINコンポーネントの実装です。

ここ数年以来、マイクロソフトはWebツールの計画が進行するにつれて、Webツールをより機敏にそしてレスポンシブにしています。例えば、ASP.Net MVCとASP.Net Web APIの開発です。彼らはSystem.Web dllに依存していませんが、これは彼らが今感じている大きな負担です。利点は、両方の開発修正がタイムリーに提供され、サイクルがかつてないほど速くなることです。また、開発者はこれらのアプリケーションをカスタムOWINホストまたはKatanaにデプロイできます。これはOWIN実装のリファレンスです。

結局、要点は何ですか?

Microsoftは軽量のOWINベースのWebホストで、IISの上に `Heliosというプロジェクトをリリースしました。目標は、OWIN仕様を実装するWebホスト上で独立して実行、インストール、および管理できる独立した小さなコンポーネントを提供することによって、ASP.NETとIISの関係を回避することです。

主な理由の1つはパフォーマンスファクタです。ヘリオスは標準的なASP.Netアプリケーションよりも2倍から3倍多いスループットを達成することができます。メモリ消費に関しては、HeliosはSystem.Web dllよりはるかに優れています。基準となるベンチマークでは、Heliosアーキテクチャにより、サンプルアプリケーションは標準のASP.NETアプリケーションと比較してオーバーヘッドが約1GB少ない、50000の同時要求を達成することができました。

14
nznoor

OWINはWebアプリケーションとホスティングプラットフォーム間の抽象化です。 OWINを使用してWebアプリケーションを作成する場合、IISに縛られていなくても、必要に応じて別のホストを使用できます。

あなたはなぜIISではなくOWINを使うのかと尋ねましたが、これらは互いの代替物ではありません。 OWINはIISとアプリケーションの間にあるので、アプリケーションを書き換えることなくIISを切り替えることができます。

このページをチェックしてみてもいいでしょう https://github.com/Bikeman868/OwinFramework/wiki/OWIN

0
bikeman868