web-dev-qa-db-ja.com

KatanaとOWINを簡単な言葉と使い方で説明する方法

私はOWINとKatanaプロジェクトに関する多くの記事を読んだことがありますが、全体像を把握することはできませんでした。

ASP.NETを使用する通常のWeb開発者にとって:

  1. 厳密にはOWINとは何か、そしてそれがどのような問題を解決するのか(簡単な言葉で)。 IISとの関係は何ですか?
  2. OWINはIISを置き換えますか?そうでない場合、どのような状況でOWINが最も適していますか?
  3. 私の日常の仕事のプロジェクトで、OWINはどのように私を助けることができますか?
  4. 自己改善プロジェクトにおいて、OWINはどのように私を助けることができますか?
324
ebram khalil

上記のコメントに関して、OWINはフレームワークではありません。 OWINは、WebサーバーとWebアプリケーションを分離し、ASP.NETアプリケーションを以前にはサポートされていなかった環境に移行するために、WebサーバーとWebアプリケーションをどのように構築するかに関する仕様です。

OWIN以前は、ASP.NETアプリケーションを構築する際、System.Webアセンブリへの依存度が高いため、本質的にIISに拘束されていました。

System.WebはASP(非.NETバージョン)以来ずっと存在していて、必要ではないかもしれない多くのもの(WebフォームやURL承認など)を内部的に含んでいます。そのため、リソースを消費し、ASP.NETアプリケーションは一般的にNode.jsなどの対応物よりもはるかに遅くなります。

OWIN自体にはツール、ライブラリ、その他はありません。あくまで仕様です。

一方Katanaは、現在のASP.NETフレームワークとOWIN仕様の間の橋渡しをするために作られた完全に開発されたフレームワークです。現時点で、Katanaは次のASP.NETフレームワークをOWINにうまく適用しました。

  • Web API
  • シグナルR

ASP.NET MVCとWebフォームはまだSystem.Webを介して排他的に実行されており、長期的にはそれらを分離する計画があります。

一方、IISは、Webサーバーにとって優れたリソースの豊富なホストです。 IISを使用した場合のASP.NETのパフォーマンスに関する問題は、すべてSystem.Webのみで発生します。最近まで、Webサーバーをどのようにホストするかを決める際には、2つの選択肢がありました。

  • IIS
  • セルフホスト

あなたがパフォーマンスを望んでいるのであれば、あなたはセルフホストのオプションを選ぶでしょう。あなたがIISが提供する多くの独創的な機能が欲しいなら、あなたはIISのために行くでしょうが、あなたはパフォーマンスを失うでしょう。

さて、3つ目のオプション、 Helios (現在のコード名)というMicrosoftライブラリがあります。これはSystem.Webを邪魔にならないようにし、IISをもっと "きれい"に使用できるようにするものです。 "不要なライブラリやモジュールを使わずにHeliosは現在プレリリース版であり、Microsoft製品を完全にサポートするために、コミュニティからのフィードバックをお待ちしています。

この説明があなたにとってより良いものになることを願っています。

編集(2014年9月):

ASP.NET vNextが開発中のため、Katanaは徐々に引退しつつあります。バージョン3.0は、おそらくスタンドアロンのフレームワークとしてのKatanaの最後のメジャーリリースになるでしょう。

ただし、Katanaで導入されたすべての概念はASP.NET vNextに統合されています。つまり、プログラミングモデルはほとんど同じです。 フォーラム投稿 David Fowler(ASP.NET vNextのアーキテクト)によって作成されました。

vNextはKatanaの後継者です(それがそれらがとてもよく似ている理由です)。 Katanaは、System.WebからWebスタック用のよりモジュール式のコンポーネントへの脱却の始まりでした。あなたはvNextをその仕事の続きとして見ることができますが、さらに進んでいます(新しいCLR、新しいプロジェクトシステム、新しいhttp抽象化)。

今日Katanaに存在するすべてのものはそれがvNextになるでしょう。

EDIT(2015年2月):

ASP.NET vNextはASP.NET 5として知られるようになり、.NET Core 5の上に構築されます。NETCore 5は、ASP.NET 5および.NET Nativeの目標をサポートするために設計された軽量の.NET Frameworkバージョンです。 。ただし、ASP.NET 5は.NET Framework 4.6でもサポートされ、.NET Core 5と一緒に利用できるようになります。ASP.NET5と.NET Core 5の両方がMITの下でライセンスされます。コミュニティの貢献を受け入れます。

EDIT(2015年5月):

さらに、ASP.NET Web APIブランドは廃止されますが、そのテクノロジは新しいASP.NET MVC 6の基盤となる予定です。以前のASP.NET MVCバージョンは、System.Webで定義されているインターフェイスであるIHttpHandlerを実装することによって構築されました。 ASP.NET MVC 6はその依存関係を取り除き、さまざまなプラットフォームやWebサーバーに移植できるようにします。

EDIT(2016年5月):

ASP.NET 5は正式にASP.NET Coreに改名され、近日リリース予定のRelease Candidate 2から始まります。 Entity Framework 7にも同じことが適用され、Entity Framework 7に変更されます。公式発表とその背後にある理由についてのより多くの情報はScott Hanselmanのブログ投稿で見つけることができます: ASP.NET 5は死んでいます - ASP.NET Core 1.0と.NET Core 1.0の紹介

EDIT(2016年5月):

Release Candidate 2のリリースに伴い、ASP.NET Coreが変更され、将来のWebアプリは実際には着信HTTPリクエストを処理するための.NET Coreコンソールアプリに設定されるようになりましたこの概念により、ASP.NET Coreは、MicrosoftがマイクロサービスアーキテクチャのサポートおよびAzure Service Fabricを介したその実装に採用したアプローチと、より一直線になります。上のより多くの情報は公式のブログ記事で見つけることができます: ASP.NET Core RC2の発表

388
Admir Tuzović

私が自分でOWINを定義しなければならない場合、それは次のようになります。「RubyとNode.jsのWeb開発者コミュニティからの最高のアイデア、.NETにやってくる」

しかし、これはASP.NET開発者にとっては役に立ちません。私自身の定義は次のようなものです。

OWIN は、.NET WebサーバーとWebアプリケーション間の標準インタフェースを定義します。 OWINインターフェースの目的は、サーバーとアプリケーションを切り離すことです。私があなたが提起した質問に答えなければならない場合、それはここにあります:

  1. OWINはインターフェース仕様です。 WebアプリケーションをIISから切り離します。

  2. 既製のコンポーネントを使用している場合(これがKatanaのものです)、アプリケーション機能の一部は、古いASP.NETと比べて実装がはるかに簡単です。サードパーティのアイデンティティプロバイダ(Facebook、Twitter)による認証はその一例です。

  3. OWINは基本的に、Web開発コミュニティで証明されているベストプラクティスの集まりです。これは、拡張性に対して非常にオープンなWebアプリケーションを実装する方法を示しています。各Web開発者は常に新しいテクノロジの最先端を行く必要があるため、これは.NETだけでなくWeb開発コミュニティ全体を最新の状態に保つための1つの方法です。あなたがOWINを学ぶのであれば、Express for node.jsやRack for Rubyのような他のWeb開発フレームワークを学ぶのははるかに簡単でしょう。
71
Slavo

実用的な観点からそれをカバーしようとします。

Katanaはプロジェクト名です MicrosoftにOWINを実装する

正確にはOWINとは何か、そしてそれはどのような問題を解決しますか(簡単な言葉で)。 IISとの関係は?OWIN( .NET用Open Web Interface )は標準( OWIN Specification )で、Katanaです。 NETライブラリは、あなたがすることができます ここから軽蔑する 。 OWINとKatanaは、Web上で多少同義語になりました。
OWINを使う前は、OWINを使った唯一のオプションはIISでしたが、他のアプリケーション(エントリポイントがあるもの)をWebサーバーとして使うことができます。

IISに取って代わるものですか?そうでない場合、どのような状況でOWINが最も適していますか?
いいえ、IISに代わるものではありません。OWINとIIS Microsoft.Owin.Host.SystemWeb nugetがあります を使用できます。 IISでの処理方法を最適化/変更したい場合、またはWindowsフォームアプリケーションなどからカスタムWebサーバーを作成したい場合に最適です。

私の日々の仕事で私をどのように助けてくれるでしょうか?
WebサーバーをIIS(Windows)で実行する必要がなくなるため、サーバーの実行コストを削減できます(WindowsサーバーはUnixベースのものよりも高価で、次のもので実行できます)。 LinuxのMonoでのコンソールアプリケーション).

自己改善プロジェクトで私をどのように助けてもらえますか?
Microsoft.Owin(および他の関連するOWINライブラリ)を学ぶと、クライアントとWebサーバー間のHTTP通信がどのように機能するかについての知識が向上します。

KatanaとOWINが何であるかについてもっと理解したいなら、読んでください。

57

OWINって何ですか?

OWINは.NET用のOpen Web Interfaceの略です。 OWINは、ASP.NET MVCなどのWeb開発フレームワークがWebサーバーとどのようにやり取りするべきかを記述した仕様です。 OWINの目的は、抽象化層を導入することによってWebアプリケーションをWebサーバーから切り離すことです。このような抽象化により、OWINをサポートするすべてのWebサーバーで同じアプリケーションを実行できます。さらに、抽象化層がアプリケーションをホストするための軽量インフラストラクチャを提供できるため、システム全体が簡素化されます。 IISは、Webアプリケーションに豊富な機能を提供します。ただし、Webアプリケーションはこれらすべての機能を必要としない場合があります。最低限のHTTP処理機能を持っていれば十分でしょう。 OWIN互換ホストはこれらのアプリケーションにそのようなホスティング環境を提供することができます。さらに、要求処理中に使用されるモジュールのパイプラインを定義できます。 OWINパイプラインは、リクエストが通過するOWIN互換コンポーネントのチェーンです。

Katanaとは何ですか?

Katanaは、OWIN仕様を使用して構築されたMicrosoftの一連のコンポーネントです。これらのコンポーネントには、Web API、ASP.NET ID、およびSignalRが含まれます。

上記はCodeGuru記事からの抜粋です: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

8

ASP.NETは10年以上も前から存在しています。 Web開発の世界はここ数年で劇的に変化しました。ASP.NETを使用している間に私たち全員が直面したかもしれない課題のいくつかは以下のとおりです。

モノリシック:ASP.NETでは、アセンブリシステム。 WebにはすべてのASP.NET機能が含まれています。つまり、新しい機能は新しいフレームワークのリリースの一部としてのみリリースできます。

フレームワークにはASP.NET以外にも多くのコンポーネントが含まれているため、フレームワークのリリースはそれほど頻繁には行われず、したがってASP.NETの新機能はフレームワークに依存します。これはWebフォームの欠点です。

ここ数年で見てきたように、Webテクノロジは非常に速いペースで進化してきました。以前はaspのようなサーバーサイドスクリプティングテクノロジがあり、その後Javaやc#のようなコンパイルされた言語がサーバーサイド開発でかなり普及しました。現在、Web開発の世界はシングルページアプリケーションへと急速に移行しています。

この問題はMVCのような技術のリリースで後になって解決されました。MVCは別のnugetパッケージとしてダウンロードすることができます。これが意味するのは、MVCの更新が.NET Frameworkのリリースとは関係なくより頻繁に行われる可能性があるということです。新しいMVC機能のために、.NET Frameworkの新しいバージョンがリリースされるのを待つ必要はありません。

MVC機能はSystem.Web.Mvcに含まれています。これをnugetパッケージとして追加できます。

IISとの密接な連携:システム。 WebアセンブリはIISと密接に関連しています。ビジュアルスタジオWebサーバーのような他のホストもありますが、それらは限られたASP.NET機能のみをサポートしますが、デプロイメントのためのホスティングオプションは1つだけです。 enter image description here

HTTP PipelineのHTTPモジュールのような機能を無効にする簡単な方法はありません。ASP.NETには、次のようなもので構成される要求パイプラインがあります。 httpmodulesの種類、ページおよびコントロールのライフサイクル。これらはすべて要求パイプラインの一部であり、それらを無効にする簡単な方法はありません。

単純なアプリケーションでは、ページのライフサイクルのようにすべてのレイヤーを実行したくない場合があります。ハンドラからの応答を返し、残りのレイヤを無視したいだけかもしれません。

したがって、どのasp.net Webフォームアプリケーションでも、それがどのように単純であっても常に特定の要求パスをたどり、必要のない機能を使用するよう強制する必要があります。認証や他の多くのHTTPモジュールも同様です。

これにより、現代のWebフレームワークに存在するはずの属性のいくつかを理解できます。

疎結合:アプリケーションコンポーネント間に疎結合を作成すると、コンポーネントを別のコンポーネントと交換することができます。他のアプリケーションに影響を与えることなく、Webアプリケーションをホストしているサーバーを簡単に置き換えることができればそれは素晴らしいことです。

1。 OWINって何ですか??

  • OWIN仕様は、上記の問題に対する解決策を提供します。OWINは、Open Web Interface for .Netを表します。

enter image description here

  • 「OWINは、.NET WebサーバーとWebアプリケーション間の標準インターフェースを定義しています。 OWINインターフェースの目的は、サーバーとアプリケーションを切り離すことです」

  • OWINはWebサーバーをアプリケーションフレームワークから切り離します。これは単純な原則のように思えるかもしれませんが、考えてみると多くの意味があります。 Webサーバーはアプリケーションフレームワークから切り離されているため、さまざまなWebサーバーや他のコンポーネントと共にアプリケーションを使用できます。

OWINは単なる指定であり、OWINにはさまざまな実装が考えられます。Katanaはそのような実装の一例です。

2。カタナって何ですか??

OWINは単なる仕様なので、OWIN仕様を実装するには、具体的な実装が必要です。これが、Katanaが登場する場所です。Katanaは、Microsoftによって構築されたオープンソースのowinコンポーネントのセットです。 。

サーバーをロードする前にホストがアプリケーションと通信することを先に見たように、ホストにはOWINパイプラインの作成方法に関するアプリケーションからの情報が必要です。このパイプラインは私達の要求を処理するために使用されます。

2
Tahir77667