[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OWIN]]

* 目次 [#p11234e4]
#contents

*概要 [#s2cb1789]
-セルフホストやOWINミドルウェアを使用するために、パイプラインをOWIN化すること。

-既存のWebアプリケーションは、IIS(System.Web)を使用しているため、~
IISでホストするためのMicrosoft.Owin.Host.SystemWebを使用することになる。

-手順
--[[ホスティング ランタイムをインストールする。>#le7af00c]]
--[[利用したい、OWINミドルウェアをインストールする。>#k436c439]]
--[[Startupクラスを追加して、OWIN関連の設定を行う。>#n017a299]]

*ホスティング ランタイム [#le7af00c]
**IIS [#s102fafa]
-IIS でホストするには、Microsoft.Owin.Host.SystemWebを使用する。

-NuGet で「Microsoft.Owin.Host.SystemWeb」をインストール。
 install-package Microsoft.Owin.Host.SystemWeb
 Install-package Microsoft.Owin.Host.SystemWeb

-必要に応じて、以下もインストールする。
 Install-Package Microsoft.Owin.ja
 Install-Package Microsoft.Owin.Host.SystemWeb.ja

-System.Webのパイプラインを[[OWIN]]のパイプラインに流すことができる。
-これにより、[[OWIN]]のミドルウェアをASP.NET Web Formsや、MVC 5でも使用できる。

**OwinHost.exe [#ibe04f08]
-Katana の OwinHost.exe でホストするには、OwinHostを使用する。

-NuGet で「OwinHost」をインストール。
 install-package OwinHost

*[[OWIN]]ミドルウェアのインストール [#qb0caac4]
**[[ASP.NET Identity]] [#x8cab528]
NuGet で「AspNet.Identity」をインストール。

 Install-Package Microsoft.AspNet.Identity.Owin
 Install-Package Microsoft.AspNet.Identity.EntityFramework
 Update-Package

Microsoft.AspNet.Identity.EntityFrameworkは、~
UserStoreクラスを自前で実装する場合、不要になる。

**[[ASP.NET SignalR]] [#x8cab528]
NuGet で「SignalR」をインストール。

 Install-Package Microsoft.AspNet.SignalR
 Update-Package

**[[ASP.NET Web API>ASP.NET Web API#rabd29db]] [#n4d2e2af]
NuGet で「WebApi.OwinSelfHost」をインストール。~
※ セルフホストの場合

 Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
 Update-Package

*Startupクラスの追加・登録 [#n017a299]
*[[OWIN]] Startupクラスの追加・登録 [#n017a299]
[[OWIN]]パイプラインでミドルウェアをつなげ全体を処理する。

Startupクラスは、
-ホスティング ランタイムと
-ミドルウェア

を指定して使用できるようにする。

**共通 [#ye660630]
既存のBundle、Routing等をGlobal.asax.cs から OWIN Startup.cs に移動してもイイが、必要性は無い。

-c# - Do I need a Global.asax.cs file at all if I'm using an OWIN Startup.cs class and move all configuration there? - Stack Overflow~
http://stackoverflow.com/questions/20168978/do-i-need-a-global-asax-cs-file-at-all-if-im-using-an-owin-startup-cs-class-and

**[[ASP.NET Identity]] [#u9644771]
Startup クラスで ConfigureAuth(app)メソッドを実行する。

 public partial class Startup
 {
   public void Configuration(IAppBuilder app)
   {
     ConfigureAuth(app);
     app.MapSignalR();
   }
 }

ConfigureAuthメソッドはテンプレート上、Partialクラスに定義されている。

 結構大きめの実装なので割愛
>結構大きめの実装なので割愛

実際に[認証の変更]→[個人のユーザアカウント]のオプションで~
プロジェクトテンプレートを使用してプロジェクトを生成して確認して下さい。
必要に応じて、実際に[認証の変更]→[個人のユーザアカウント]のオプションで~
プロジェクトテンプレートを使用してプロジェクトを生成して確認すること。

**[[ASP.NET SignalR]] [#x21f54e2]
Startup クラスで app.MapSignalR()メソッドを実行する。

 public partial class Startup
 {
   public void Configuration(IAppBuilder app)
   {
     ConfigureAuth(app);
     app.MapSignalR();
   }
 }

**[[ASP.NET Web API>ASP.NET Web API#rabd29db]] [#i12c4dba]
Startup クラスで Routing定義を行いapp.UseWebApi()メソッドを実行する。~
※ セルフホストの場合

 public static class Startup
  {
    public static void ConfigureApp(IAppBuilder app)
    {
      // Configure Web API for self-host. 
      HttpConfiguration config = new HttpConfiguration();
 
      config.Routes.MapHttpRoute(
       name: "DefaultApi",
       routeTemplate: "api/{controller}/{id}",
       defaults: new { id = RouteParameter.Optional }
     );
 
     app.UseWebApi(config);
   }
 }

.NET Frameworkのテンプレートでは、Routing定義は、~
Global.aspxのApplication_Startから呼びだされる~
RouteConfigクラスのRegisterRoutesメソッドで実行されれている。

*既定のプロジェクト・テンプレートの調査 [#e4fddd28]

**VS2010 [#ne9d5379]
[[OWIN]]もBundle、Routing、Authenticationテンプレートもサポートされていない。

***WebForms [#x12a00b7]
非[[OWIN]]

***MVC [#ob6f19b8]
非[[OWIN]]

**VS2012 [#jcd3c4f6]
-[[OWIN]]は、まだサポートされていない。
-Bundle、Routing、Authentication(OAuth)テンプレートがサポートされ始めた。

***WebForms [#n6268fca]
-非[[OWIN]]

-以下がサポートされた
--BundleConfig
--RouteConfig
--AuthConfig

-モジュール
--Bundleには以下のモジュールが使用されている。
---System.Web.Optimization

--Routingには以下のモジュールが使用されている。
---Microsoft.AspNet.FriendlyUrls

--Authentication(OAuth)には以下のモジュールが使用されている。
---DotNetOpenAuth
---Microsoft.AspNet.Membership
---System.Web.Security.Membership


***MVC [#f8de12b5]
-MVC3
--非[[OWIN]]
--OAuthは未サポート

-MVC4
--非[[OWIN]]
--Authentication(OAuth)には以下のモジュールが使用されている。
---DotNetOpenAuth
---Microsoft.Web.WebPages.OAuth
---Webmatrix.Webdata.Websecurity
---System.Web.Security.Membership

**VS2013 [#rea2d27d]
-[[OWIN]]化対応がなされた。
-様々な認証対応テンプレートも追加された。

***WebForms [#n6268fca]
-認証対応テンプレート

--組織アカウントの場合~
恐らくWIFを使用してWS-Federationの認証連携を行う。

--個人アカウントの場合~
---[[OWIN]]ミドルウェアである[[ASP.NET Identity]]を使用するために[[OWIN]]化対応がなされている。
---[[ASP.NET Identity]]によって、外部ログインや、OAuthServer実装もサポートされ始めた。

-[[上記>#n6268fca]]から以下の変更が加えられた。

--認証なし、~
個人アカウント、組織アカウント、Windows認証~
などの認証テンプレートがサポートされた。

--個人アカウントの場合~
Authenticationは以下のモジュールに変更された。
---Microsoft.AspNet.Identity.Core
---Microsoft.AspNet.Identity.Owin
---Microsoft.Owin.Security

***MVC [#f8de12b5]
-変更内容は[[WebForms>#n6268fca]]と同様。

**VS2015 [#h8e67ca1]
[[ASP.NET Core]]がサポートされた。

***.NET Framework [#gee7e68a]
大枠、[[2013>#rea2d27d]]と同じ。

***[[ASP.NET Core]] [#n563b16a]
[[ASP.NET Core]]用のテンプレートはすべて[[OWIN]]。~
(と言うより、[[ASP.NET Core]]自体が[[OWIN]]互換レイヤーを実装している)

*参考 [#m5f3b2af]

**[[OWIN]]ミドルウェア [#kdac234f]

-[[ASP.NET Identity]]
-[[ASP.NET SignalR]]
-[[ASP.NET Web API>ASP.NET Web API#rabd29db]]

**手順 [#r4fa42fe]

-Katana で Hello, world - miso_soup3 Blog~
http://miso-soup3.hateblo.jp/entry/2013/11/11/014258

-asp.net mvc - What is the new Startup.cs file for in Visual Studio 2013 projects? - Stack Overflow~
http://stackoverflow.com/questions/20034105/what-is-the-new-startup-cs-file-for-in-visual-studio-2013-projects

-c# - Do I need a Global.asax.cs file at all if I'm using an OWIN Startup.cs class and move all configuration there? - Stack Overflow~
http://stackoverflow.com/questions/20168978/do-i-need-a-global-asax-cs-file-at-all-if-im-using-an-owin-startup-cs-class-and

-OWIN Startup Class Detection | The ASP.NET Site~
https://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection
>Every OWIN Application has a startup class where you specify components for the application pipeline.~
There are different ways you can connect your startup class with the runtime,~
depending on the hosting model you choose (OwinHost, IIS, and IIS-Express).

----
Tags: [[:.NET開発]]
Tags: [[:.NET開発]], [[:OWIN]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS