OWINカタナはいつ使用すべきですか?


270

OWINとKatanaは初めてです。OWINを使用する理由が本当にわかりませんが、は使用できますIIS。簡単にするために、私の質問は次のとおりです。OWINの学習をスキップしてWebサイトにIISを使用すると何が失われますか?

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



2
OWINの方向性は、IoTの影響をどの程度受けているのでしょうか。本当にIISをArduinoに貼り付けることはできません。
Sentinel

回答:


279

asp.net WebApi v2では、OWINパイプラインがデフォルトになります。最終的には、どのasp.netプロジェクトでも標準のパイプラインになります。

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

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

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

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

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


Owinパイプライン


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

このモジュラーアプローチの利点を理解するには、OWINで利用可能なnugetパッケージをご覧ください。http://www.nuget.org/packages?q = owin

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

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

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

編集:nugetパッケージとして利用可能になりました:Owin.Catify


あなたの答えは確かに賛成されているので良いですが、私がそれを理解するのは難しいです。
Seyed Morteza Mousavi、2014年

5
どうすれば改善できますか?何が分からないの?
ステファン・

1
OWINにはメリットがありますが、実行フローがミドルウェアからミドルウェアに効果的に「ジャンプ」するため、デバッグが難しいようです。それぞれが途中で応答を変更する可能性があります。Visual Studioのアタッチデバッガーがフローを追跡できないようです。(Webアプリケーションで)例外が発生すると、200 OK応答のある空白ページが表示されます。Windowsイベントログ以外にエラーはありません。
シンボロ2014

7
weblogs.asp.net/pglavich/owin-katana-and-getting-startedでの説明が役に立ちました。これは、アプリケーションをIISから切り離し、System.Webアセンブリへの依存を切り離す方法です。HTTPパイプラインにあるコンポーネントの量を減らし、それによってアプリを軽量に保ちます。
Terence

2
現在の環境で追加する必要があります。WebApiを使用するチームとNancyを使用するチームがあります。どちらもOWINの上にあるため、フレームワークとは関係なく、Apiキーの処理やステートレス認証などのミドルウェアを共有できます。チームに最も適したものを選択させます。これがOWINの真のメリットです。
ステファン・

209
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はMicrosoftによるOWINインターフェースの実装です。したがって、これらの2つの単語(OWIN / KATANA)を一緒に聞くと、多くの場合、これら2つの用語の違いが混乱します。したがって、KatanaはMicrosoftのOWINインターフェースの実装です。OWINの独自の実装を作成したいBIG-BOSSという名前の別の会社があるとします。彼らはそれを実行して、その実装を「BATANA」と名付け、OWIN / BATANAのようなフレーズを宣伝できます。

だから、なぜOWIN !!!

移動可能な唯一の車両がトラックである国について考えてみましょう。他には何もありません。車両を購入したい場合は、トラックを購入します。まあ、それは以前は良かったですが、人々はそれがトラックを必ずしも必要としないことに気づき始めました、特に彼らが映画を見たり牛乳を買いに行きたいときは、重いトラックを運転することは燃料だけでなくコストもかかる運転にストレスを加える。しかし、はい、彼らが重いものをたくさん運びたいなら、トラックは非常にうまく目的を果たします。

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

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

したがって、これらの仕様に基づいて、誰でもさまざまなニーズに応じて車両を作成でき、それに応じて車両に名前を付けることができます。したがって、セダン、ピックアップトラック、SUV、VANなど、あらゆる種類の車両が市場に登場しました。重いものをいつも運ぶ必要がなく、職場に行くためだけに車が必要な人は、小さなセダンを買うことができます。もう少しパワーが必要なら、誰かがSUVを買うことができます。

上記の例に基づいて、ASP.NET Webアプリケーションは、(トラックのように)負荷の高いSystem.Webアセンブリを使用し、目的がいくつかのファイルを提供することだけである小さなWebアプリケーションを作成したい場合、少しのリクエストでは、その重いSystem.Webアセンブリ(トラック)を使用する必要があります。OWINが表示されます。OWINは、サーバーを定義する一連の仕様(インターフェースと呼ぶことができます)です。その仕様に基づいて、(自動車メーカーのような)誰かが特定の問題ドメイン/アプリケーションのニーズに基づいてさまざまな種類のサーバーを作成できます。マイクロソフトは、Web APIを提供できるのと同じ方法でKatanaという名前のOWINの独自の実装を作成しました。WebAPIは軽量技術であり、本格的なSystem.Webのものが必要ないため、

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

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

次に、独自のOWIN実装を作成する必要があるのはいつですか。

回答:たとえば、バックグラウンドでサーバーとして実行し、ポート番号XXXXをリッスンするWindowsアプリケーションを開発したとします。サーバーは次のようなリクエストの一部のみに応答します。

  1. GETインベントリ
  2. DELETE Inventory ID = 4
  3. PUTインベントリID = 5

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

わかりました。ASP.NETMVC Webサイトを作成する場合、IISを置き換えるオプションがないので、なぜ現時点でKatanaについて知る必要があるのでしょうか。

回答:カタナは、ASP.NET MVC Webサイトをカタナで直接ホストできるように、IISの必要性に取って代わるほど成熟していませんが、カタナはOWINの多くの優れたインターフェースを実装しているため、これらの機能を活用することができます。横に。たとえば、ユーザーがFacebook、Google、Twitterなどを使用してログインできるようにすることは、以前は簡単ではありませんでした。Katanaは(ミドルウェアとして)多くのフックを提供するため、配管コードを記述せずにKatanaに外部のソーシャルメディアベースの認証を簡単に処理させることができます。Katanaを使用することには、他にも多くの利点があり、このテクノロジーの使用を開始するとわかる場合があります。


1
OWINがインターフェイスであるとは言いませんが、それは標準であり、アプリケーションがホストと通信する方法を標準化するプロトコルです。ただし、KatanaはMicrosoftによって開発および維持されているその標準の実装にすぎないことを正確に説明することが重要です。他の実装は、ここに記載されています:github.com/owin/owin/wiki/Implementations
ステファン・

1
車両の仕様が「4輪」で、誰かが18輪の車両を作ると言ったとき、少し混乱します...仕様に適合しないのですか?または私は何かが欠けていますか?とにかく良いアナロジー。わかりやすくしました
kurasa 2014

1
@Stephane:まあ、それは単なるインターフェイスのようなものではないかもしれません。誰かがOWINとKATANAの関係を理解できるように、多くの専門用語に圧倒されることなく、高レベルのアイデアを提供しようとしました。
Emran Hussain 14

1
「カタナはIISの必要性を置き換えるほど成熟していないにもかかわらず、ASP.NET MVC Webサイトをカタナで直接ホストできる」とは、カタナが1.0になるとIISは重要ではないことを示しているようです。いいえ、いいえ、それは正しくありません。マイクロソフトではMicrosoft.Owin.Host.IISを利用できます。これにより、Webアプリ+ KatanaをIISで直接ホストできます(もちろんSystem.Webは必要ありません)。IISは依然としてMicrosoftプラットフォーム上のASP.NETアプリケーションの主要コンポーネントです。
Lex Li 2014

2
あなたが私を理解するのを助けることができればそれは素晴らしいでしょうwhat is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Arindam Nayak '26 / 11/14

47

その答えのより簡単なバージョンは、KatanaがSystem.Webアセンブリと古いASP.NETパイプラインを完全に置き換えようとしているため、柔軟性(より多くのシナリオで使用し、好きな部分のみを使用)とパフォーマンスの両方を提供します。

したがって、誰もがその進化を今見て、それが最終的に完了したときに切り替える準備をする必要があります。

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

ここに画像の説明を入力してください

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

現在、JEXus Webサーバーの作成者と協力して、OWIN / KatanaとJexusをブリッジするホストアダプターを作成する方法を調査しています。OWINは柔軟性が高く、高度にカスタマイズ可能であることを知って本当に嬉しく思います。

リファレンス:http : //blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/


だから私はこの答えは、「カタナはSystem.Webアセンブリと古いASP.NETパイプラインを完全に置き換えるためにゴングだ」と言う。それは上の図のすべてのサーバーアダプター、または単にhost.systemwebを置き換えることができることを意味しますか?
18年

@netfedは残念ながらOWIN自体が実行し、現在はASP.NET Coreが引き継ぎます。この質問と回答はすべて古くなっています。
Lex Li

あはは!Asp.netコアにはOwinの容量がありますか?または、Asp.netコアはモジュールのコレクションとして機能し、必要なモジュールのみを実装でき、System.webに組み込まれているより大きな関数のコレクションを使用する必要はありませんか?
netfed '10年

2
@ netfed、OWIN が死にました(私のモバイルキーボードが私の言葉を変えました)。ただし、ASP.NET Coreはミドルウェアアプローチを維持し、そのコンポーネントを好きな方法でアセンブルできますSystem.Web
Lex Li

以上で終わりです:-)明確にしていただきありがとうございます。
netfed '10年

15

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

OWINは、Webサーバーを使用しているフレームワークから切り離すように設計されています。これにより、アプリケーションを軽量化し、ミキシングフレームワークとサーバーに移植することができます。

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

マイクロソフトはここ数年、計画の進捗に応じてWebツールの俊敏性と応答性を高めています。例として、ASP.Net MVCおよびASP.Net Web APIの開発。彼らはSystem.Web dllに依存していません。両方の開発の利点は、両方の開発修正をタイムリーに提供でき、サイクルがかつてないほど高速であることです。また、開発者はこれらのアプリケーションをカスタムOWINホストまたはOWIN実装のリファレンスであるKatanaにデプロイできるようになりました。

結局のところ、何がポイントなのでしょうか?

マイクロソフトは、IISをベースにした軽量のOWINベースのWebホストである「ヘリオス」と呼ばれるプロジェクトをリリースしました。目標は、OWIN仕様を実装するWebホスト上で独立して実行、使用、インストール、管理できるいくつかの独立した小さなコンポーネントを提供することにより、ASP.NET / IIS関係を回避することです。

中心的な理由の1つは、パフォーマンス要因です。Heliosは、標準のASP.Netアプリケーションよりも2〜3倍高いスループットを実現できます。メモリ消費量に関しては、HeliosはSystem.Web dllよりもはるかに優れています。採用されたベンチマークでは、Heliosアーキテクチャにより、サンプルアプリケーションは50000の同時リクエストを達成でき、標準のASP.Netアプリケーションと比較してオーバーヘッドが約1 GB少なくなりました。


1
この投稿は役に立ちます。simple-talk.com/dotnet/.net-framework/...
nznoor

0

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

IISではなくOWINを使用する理由を尋ねましたが、これらは相互に代わるものではありません。OWINはIISとアプリケーションの間にあり、アプリケーションを書き直すことなくIISを切り替えることができます。

このページをチェックすることもできますhttps://github.com/Bikeman868/OwinFramework/wiki/OWIN

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.