web-dev-qa-db-ja.com

Visual Studio 2013プロジェクトの新しいStartup.csファイルとは何ですか?

Visual Studio 2013をインストールし、MVC Webアプリケーションプロジェクトを作成したところ、Startup.csというプロジェクトテンプレートに新しいファイルがあることに気付きました。

これは何ですか、これはGlobal.asax.csとどのように異なりますか?また、これを何に使用するかについてのベストプラクティスはありますか?

54
Mark Redman

すべてのOWINアプリケーションには、アプリケーションパイプラインのコンポーネントを指定するスタートアップクラスがあります。

新しいVisual Studioプロジェクトを開始すると、その中にOWINの断片が表示されます。 OWINは、フレームワークとサーバーが連携するためのAPIを定義する仕様です。 OWINのポイントは、サーバーとアプリケーションを分離することです。たとえば、ASP.NET IdentityはOWINセキュリティを使用し、SignalRセルフホスティングはOWINホスティングを使用します。例ではすべてOWINを使用するため、「Startup.cs」ファイルで定義されるスタートアップクラスが必要です。

Global.asax、ASP.NETアプリケーションファイルは、ASP.NETまたはHttpModulesによって発生したアプリケーションレベルのイベントに応答するためのコードを含むオプションのファイルです。

詳細については:

[〜#〜] owin [〜#〜]

http://www.asp.net/aspnet/overview/owin-and-katana

Global.asax

http://msdn.Microsoft.com/en-us/library/1xaas8a2(v = vs.71).aspx

次の記事で、OWINの理由に関するより多くのアイデアを見つけることができます。

http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

32
Lin

ファイルはSignalRに関連しているようです。 VS 2013リリースノート

OWIN上に構築

SignalR 2.0は完全にOWIN(.NET用のOpen Web Interface)上に構築されています。この変更により、SignalRのセットアッププロセスは、ウェブでホストされたSignalRアプリケーションとセルフホストされたSignalRアプリケーション間でより一貫したものになりますが、いくつかのAPIの変更も必要になりました。

MapHubsとMapConnectionがMapSignalRになりました

OWIN標準との互換性のために、これらのメソッドはMapSignalRに名前が変更されました。パラメーターなしで呼び出されたMapSignalRは、すべてのハブをマップします(MapHubsがバージョン1.xで行うように)。個々のPersistentConnectionオブジェクトをマップするには、typeパラメーターとして接続タイプを指定し、最初の引数として接続のURL拡張子を指定します。

MapSignalRメソッドは、Owinスタートアップクラスで呼び出されます。 Visual Studio 2013には、Owinスタートアップクラス用の新しいテンプレートが含まれています。このテンプレートを使用するには、次の手順を実行します。

  1. プロジェクトを右クリック
  2. [追加]、[新しいアイテム...]を選択します.
  3. Owin Startupクラスを選択します。新しいクラスにStartup.csという名前を付けます。

Webアプリケーションでは、次に示すように、MapSignalRメソッドを含むOwinスタートアップクラスが、Web.Configファイルのアプリケーション設定ノードのエントリを使用してOwinのスタートアッププロセスに追加されます。

セルフホストアプリケーションでは、StartupクラスがWebApp.Startメソッドのtypeパラメーターとして渡されます。

7
user247702

Startupクラスは、Katana/OWINがパイプラインを初期化するために探す規則です。アプリが起動すると、構成関数内のコードが実行され、使用するコンポーネントがセットアップされます。 MVC 5テンプレートでは、すべてOWINの上に構築された認証ミドルウェアを接続するために使用されます。

OWINで依存性注入を使用する場合は、GitHubでこのプロジェクトを確認してください。 DotNetDoodle.Owin.Dependencies

6
cecilphillip