One ASP.NET,
OWIN & Katana
2013/11/09
今日話すこと
Visual Studio 2013 における、

ASP.NET と Web Tools の更新を紹介します
ではなく…

Visual Studio 2013 における、
ASP.NET と Web Tools の更新……の内、
重要である One ASP.NET, OWIN & Katana について

紹介します
アジェンダ


ASP.NET 更新概要



One ASP.NET
 概要
 New

Project

 Scaffolding


OWIN & Katana



Katana とは





OWIN とは
ASP.NET の対応

まとめ
セッションの ゴール


ASP.NET の注目すべき新機能を知る

One ASP.NET
OWIN & Katana


急速な Web 開発の進化に対応する ASP.NET を知る
対象者
ASP.NET 開発者
ASP.NET 更新概要
コア

各フレームワーク

One ASP.NET - ★

MVC 5

ASP.NET Scaffolding

Web API 2

ASP.NET Identity

SignalR 2.0

Katana - ★

Razor 3

Web Tools
Browser Link

Azure Web サイトのサポート
Web エディター
Web 発行機能
NuGet 2.7

Entity Framework 6
One ASP.NET
Sites
Web
Forms

Web
Pages

Services

Single
Page
Apps

MVC

ASP.NET
ASP.NET 基盤を元に、
各フレームワークを組み合わせて構築可能。

Web
API

SignalR
One ASP.NET
Services

Single
Page
Apps

MVC

Web
API

SignalR

ASP.NET

“1つにまとまった“だけではない!
→OWIN & Katana の説明後にて。

Nancy

???
One ASP.NET
New Project
One ASP.NET
New Project
One ASP.NET
New Project
One ASP.NET
New Project
・VS 2012 用も用意
・認証方法の選択
・フレームワークに依存しない認証のライブラリ
・個人アカウント

・ASP.NET メンバーシップシステム
・Social Account(Google, Twitter, Facebook, …)
・組織アカウント、Windows 認証
・Active Directory, Office 365, オンプレミス
One ASP.NET

スタートページ

テンプレートに合わせた次のステップへのガイド
One ASP.NET
Scaffolding

「MVC 5 依存関係」という選択肢も。
各フレームワークのコードが生成可能に。
One ASP.NET
まとめ

・× フレームワークがみんな1つになった

○ ASP.NET を基盤にして、既存・他(Nancy 等)の
フレームワークが使用できる。
→ 進化する Web 開発への対応

・前: ASP.NET = ASP.NET Web Forms
・今: ASP.NET = Web 開発総称
→ OWIN の対応により次のステップへ
Intermezzo★Bootstrap
・プロジェクトテンプレートに Bootstrap を採用
・レスポンシブデザイン
・テーマが選べます!

CSS 入れ替えでお手軽に

BootSwatch http://bootswatch.com/
Intermezzo★Bootstrap
お遊びおすすめプラン
①テンプレートの選択「MVC」
②App_Start/BundleConfig.cs

③App_Start/Startup.Auth.cs
コメントアウト

④ http://bootswatch.com/
⑤F5 でデバッグ実行
アジェンダ


ASP.NET 更新概要



One ASP.NET
 概要
 New

Project

 Scaffolding


OWIN & Katana



Katana とは





OWIN とは
ASP.NET の対応

まとめ
OWIN & Katana
Katana で ASP.NET アプリ開発を支援


OWIN とは



Katana とは



これからの ASP.NET にどのように関わるか


今回だけでなく、今後も関わってくる
OWIN とは
Open Web Interface for .NET
サーバーとアプリケーション間のインターフェイス

仕様
です

http://owin.org/

OWIN プロジェクトサイト
OWIN とは
補足情報

・Microsoft ではなく コミュニティによる
オープンソースプロジェクト
・node.js, Rack, WSGI にインスパイアされた
OWIN とは
目的

・サーバーとアプリケーションを切り離す
・新しいコンポーネントが、より簡単に開発され、
より簡単に使用される
・アプリケーションの移植を容易にする
OWIN とは

仕様 ~抽象的~
using AppFunc =
Func<IDictionary<string, object>, Task>;

2つの要素からなる
・IDictionary<string, object> “Environment Dictionary”
キーと値で、リクエスト・サーバー等の状態を表す

・Task
アプリケーションが担うタスク

非同期、連結可
OWIN とは

仕様 ~全体のイメージ~
サーバー

HTTP
Request

OWIN
↓

アプリケーション

IDictionary<str
ing, object>
を設定
IDictionary<string,
object>
を元に Task を作る

HTTP
Response

※イメージであり実際の処理の順番とは異なります。
OWIN とは

仕様 ~具体的~

・プロジェクトサイト http://owin.org/

・仕様書 http://owin.org/spec/owin-1.0.0.html
・HTTP リクエスト等の値をどんなキーで、
どんな値で格納するか、等が書いてある。

・たった1つのソース IAppBuilder インターフェイス
https://github.com/owin/owin/blob/master/src/Owin/IAppBuilder.cs

→ NuGet [Owin]で配布。Owin.dll
OWIN まとめ
・サーバーとアプリケーションのインターフェイス
・コミュニティによるオープンソースプロジェクト
・IDictionary<string, object>, Task

↑↑ここまで OWIN ---------------------ここから Katana ↓↓
・OWIN の実装
・Microsoft によるプロジェクト
アジェンダ


ASP.NET 更新概要



One ASP.NET
 概要
 New

Project

 Scaffolding


OWIN & Katana



Katana とは





OWIN とは
ASP.NET の対応

まとめ
Katana とは
・OWIN に対応するための、

コンポーネント・
フレームワークのセットのこと
・Microsoft.Owin 名前空間にある
ライブラリが含まれている

Katana Project http://katanaproject.codeplex.com/
Katana とは
補足情報

・Microsoft が提供
・オープンソース、NuGet による配布
Katana とは
目的

・今までの ASP.NET は、IIS(System.Web)に依存している。
→

IIS との切り離し

→

ASP.NET の Web 開発の進化への対応

・コンポーネントの再利用性
・認証、キャッシュ、ロギング等

・Azure 等のクラウドへの対応
Katana とは

どのように実装しているか
4 つの層に分けた

Host

Server
OWIN

起動、読み込み
ネットワークソケット解放、
IDictionary<string, object>

Middleware

Task を公開

Application

開発者が書くコード
Katana とは

どのように実装しているか
Host

IIS/ASP.NET、Custom コンソール
アプリ、OwinHost.exe …

Server

IIS/ASP.NET(System.Web)、
Microsoft.Owin.Host.SystemWeb、
Microsoft.Owin.Host.HttpListener …

Middleware

Nancy、Web API、SignalR、
Microsoft.Owin.Security.Google …

Application

Your Code.
黒字:Katana に含まれるコンポーネント
Katana とは
目標


Portable




Modular / Flexible




コンポーネントは置換できる
機能は小さく、コンパクト、取り外しを容易に

Lightweight / Performant / Scalable


高パフォーマンスなサーバーに、アプリケーションを壊すこ
となく置換できる
Katana とは
OWIN
Host
Server

Middleware /
Application
Katana とは
まとめ

・Microsoft による OWIN 対応のためのコンポーネント・
フレームワークのセット
・Host, Server, Middleware, Application の 4 つの層に
分けられる
・各コンポーネントの入れ替えが容易
アジェンダ


ASP.NET 更新概要



One ASP.NET
 概要
 New

Project

 Scaffolding


OWIN & Katana



Katana とは





OWIN とは
ASP.NET の対応

まとめ
OWIN & Katana
ASP.NET の対応

OWIN 非対応:ASP.NET Web Forms, MVC(現在)
IIS

System.
Web.dll

Web Forms,
MVC

OWIN で切り離せないっ
IIS 以外で Host できない
OWIN & Katana
ASP.NET の対応

OWIN 対応:ASP.NET Web API, SignalR
OWIN

何でも
OK

Web API,
SignalR
OWIN & Katana
ASP.NET の対応

が! ASP.NET MVC 5 のコードを見ると…

OWIN に関連するコードがある! なぜか?
Katana とは

ASP.NET の対応

たとえ、IIS でホストされていても、
認証等の Middleware を適用させるため
OWIN
IIS
System.
Web.dll

認証
ASP.NET MVC
(Middleware) (Middleware)
Katana とは

ASP.NET の対応

IIS で Host しているのに、OWIN の Middleware が作用する
かの仕組み
OWIN

IIS
System.
Web.dll

認証
ASP.NET MVC
(Middleware) (Middleware)
Microsoft.Owin.Hos
t.SystemWeb.dll
(Katana)
Katana とは
Middleware
・全処理共通の Middleware と、
個別フレームワークの Middleware がある
OWIN
Middleware
認証,
キャッシュ,
ロギング

ASP.NET MVC,
ASP.NET Web API,
SignalR
Katana とは
Startup.cs
・OWIN の処理に Middleware を登録するため
の Katana による設定クラス
OWIN
Startup.cs
(Katana)
Middleware/
Application
Katana とは
Middleware
・Startup.cs にて、Use…() メソッドにより、
Middleware を登録する
・いくつも連結可能
・アプリケーションのコードを壊すことなく、改善、
入れ替えができる。
・認証、キャッシュ、ロギングなど、Web フレームワーク
共通の処理をコンポーネントとして登録できる

これからの ASP.NET では、Web アプリ共通の処理が
OWIN の Middleware として、更新・改善されていく
(だろう)
OWIN & Katana
まとめ

・OWIN : サーバーとアプリケーション間インターフェイス
・Katana : OWIN の実装
・ASP.NET Web API, SignalR → OWIN 対応
・ASP.NET MVC, WebForms → OWIN 非対応
(System.Web に依存)

・OWIN 対応・非対応に限らず ASP.NET には、
Startup.cs と、Middleware が適用される
・どちらにしても、進化する Web 開発に対応するには、
OWIN & Katana、Middleware は今後も目が離せない。
OWIN & Katana
デモ
OWIN & Katana
例①

OwinHost.exe
(Katana)

OWIN

Microsoft.OwinHost.
HttpListener.dll
(Katana)

単純なコード
(Middleware)
OWIN & Katana
例②

IIS

OWIN

Microsoft.Owin.Host
.SystemWeb.dll
(Katana)

単純なコード
(Middleware)
OWIN & Katana
例③

OwinHost.exe
(Katana)

OWIN

Microsoft.OwinHost.
HttpListener.dll
(Katana)

ASP.NET Web API
(Middleware)
今回のまとめ
One ASP.NET

Web
Forms

Web
Pages

Single
Page
Apps

MVC

Web
API

SignalR

Any

ASP.NET

限定されたフレームワークだけでは、Web の進化に対応でき
ない
OWIN & Katana
OWIN

OWIN & Katana /
Middleware

Host
Server

Application
今回のまとめ
・One ASP.NET と OWIN & Katana は、
進化する Web 開発に対応するための
ASP.NET における重要なアップデート内容。
・次々と短くなっていくリリースの間隔…
・→柔軟に対応
・ASP.NET を上手く利用して 最適な Web 開発を。

One ASP.NET, OWIN & Katana