ASP.NET "NOW" and "NEXT"
-
Upload
narami-kiyokura -
Category
Technology
-
view
22.691 -
download
0
description
Transcript of ASP.NET "NOW" and "NEXT"
ASP.NET
"NOW" and "NEXT"OITEC第19回勉強会
2014/07/19
きよくらならみ
自己紹介
• きよくらならみ–@kiyokura
–kiyokura.hateblo.jp
• 岡山生まれ岡山育ちのソフトウェアエンジニア
• NET系の開発やWebアプリ開発–Microsoft MVP for ASP.NET/IIS
諸注意と免責事項
• 私個人による調査と見解であり所属する組織を代表するものではありません
• 万が一、本セッションの内容の誤りに起因する何らかの損害が発生した場合においても、私は一切の責任を負うことができませんご了承ください
アジェンダ
• “Web Forms”から“One ASP.NET”へ
• OWINとは
• 来るべき ”vNext”
“Web Forms”から“One ASP.NET”へ
現在のASP.NETの姿
ASP.NETとは
• .NET Frameworkを基盤としたWebアプリケーションのプラットホーム
ASP.NETのフレームワーク
• MSが提供するフレームワーク
–ASP.NET MVC
–ASP.NET Web Forms
–ASP.NET Web Pages
–ASP.NET SPA
–ASP.NET Web API
–ASP.NET SignalR
• これらすべてが ”ASP.NET”です
ASP.NET Web Forms
• ASP.NET登場時からある一番の古株
– 2002年に登場
–現在の最新バージョンは「Web Forms 4.5.1」
• 当初は「ASP.NET=コレ」
–そもそもWeb Formsという名前は後述の「ASP.NET MVC」が出てきてから区別のために呼ばれ始めた
ASP.NET Web Forms
ASP.NET Web Forms
• Webアプリ”らしくない”開発
– IDEによる"ポトペタ開発"
–コントロールのドラッグ&ドロップ
– JavaScriptを1行も書くことなくAjaxを実現
• Web特有の事情を抽象化
–ViewStateとPostback
ASP.NET MVC
• その名の通り「MVCアーキテクチャ」
–2009年にリリース
–当初はアドオンとして登場
–現在の最新版は「MVC 5.x」
ASP.NET MVC
Controller
View Model
ASP.NET MVC
• フレームワークとしての機能– スキャフォールディング– 設定より規約– 割とRuby on Railsにインスパイア
• Viewはエンジンを選択可能– Razor / ASPXの他、 Hamlなどオープンソース等々
• モデルについては自由– 基本的に「これを使え」というは縛り無し
• 状況に合わせてテクノロジやアーキテクチャを選択すればよい、というスタンス
ASP.NET Web Pages
• ASP.NET中で最もシンプル
–2011年に最初のバージョンが登場
–MVCの既定ビューエンジン「Razorビューエンジン」をページフロント方式で使えるようにした感じ
ASP.NET Web Pages
• HTMLにコードを埋め込む方式– Classic ASPやPHP、JSPに近い
• Razor構文–@を使って、HTML中にコードを埋め込む–コードには、C#とVB.NETが利用可能
• C#とVB.NETの機能はフルに利用可能
• 事前のコンパイルが可能–サーバ上で直接編集も可能
ASP.NET Web Pages
ASP.NET Web API
• HTTPサービスを構築するためのもの
–2012年8月リリース
ASP.NET Web API
• RESTful
– REST
• Representational State Transfer
–HTTPの動詞とAPIのメソッドを対応させる• POST / GET / PUT / DELETE
• 汎用的な出力形式– JOSN
– xml
• OData対応
ASP.NET SignalR
• リアルタイムWeb通信を実現
–2013年2月に1.0リリース
ASP.NET SignalR
• リアルタイムWeb
–Webによる双方向通信
–WebSocket対応
• 状況に合わせてフォールバック–自動的に最善の手段を採用
• WebSocket
• Server Sent Events
• Forever Frame
• Ajax long polling
ASP.NET SignalR
• クライアント側にもライブラリを提供
– JavaScript
– .NET
– iOS
–Android
• 類似技術:Socket.IO
ASP.NET SPA
• Single Page Application
–2012年に登場
• VS2012 Update2より
• 単一ページ構成のAjaxアプリケーション
– JavaScriptのクライアントサイドライブラリを利用
ASP.NET SPA
クライアントサイド
HTMLページ
サーバ サイド
Webサービス(Web API 等)
ページ返却(MVC or 静的ページ等)
HTMLを一枚返す
JavaScript(クライアントサイド
MVCフレームワーク)
• ビジネスロジック• 画面遷移
データ
ASP.NET SPA
• 多様なJavaScriptフレームワークに対応– Knockout.js
– Backbone.js
– AngularJS
–DurandalJS
– EmberJS
• 各種テンプレートをダウンロード可能– http://www.asp.net/single-page-
application/overview/templates
ASP.NETの歴史
• 初めて登場したのは2002年
• 2014年の現在まで、かなりの速度で進化してきた
2002~2003年 ASP.NETの登場
• 2002年、ASP.NET 1.0
– .NET Framework 1.0
–Visual Studio .NET
• 2003年、ASP.NET 1.1
– .NET Framework 1.1
–Visual Studio 2003
1.1は1.1のバグフィックス&安定版的な
2005~2008年Web Formsの完成へ
• 2005年、ASP.NET 2.0– .NET Framework 2.0
– Visual Studio 2005
– アドオン:Ajax Extensions
Web Formはこの時点でほぼほぼ完成
• 2007年、ASP.NET 3.5– .NET Framework 3.5
– Visual Studio 2008
– Ajax Extensionsの内包ASP.NETそのものより、
LINQやC#の新しい構文などがインパクト大
2009~2012年進撃のMVC
• 2009年03月、MVC 1.0
• 2010年03月、MVC 2.0
• 2010年04月、ASP.NET 4.0– VS2010, .NET 4.0
– Web Forms 4.0
• 2011年01月、MVC 3.0, Web Pages 1.0
• 2012年08月、MVC 4.0, Web API 1.0, Web Pages 2– VS2012, .NET 4.5
– Web Forms 4.5
MVCが怒涛の勢いで進化 Web APIとWeb Pagesも登場
2013~2014年 SignalRの登場とMVC 5
• 2013年02月、SignalR 1.0
• 2013年08月、SignalR 2.0
• 2013年10月、MVC 5, Web API 2, Web Pages 3
– VS2013, .NET 4.5.1Web Forms 4.5.1
• 2014年01月、MVC 5.1, Web API 2.1, Web Pages 3.1
SignalRが登場MVCの進化も止まらない
大体の歴史感
• VS2005時点でWeb Formsは概ね完成
–最近は大きな進歩はない
• 2009年に誕生したMVCは怒涛の勢いで進化
–MVC 3で大まかに固まって
–MVC 5.xまで堅実な進化
• Web APIやSignalRも着実に進歩中
One ASP.NET
• 数あるASP.NETのフレームワーク
• プラガブルに利用できるように
One ASP.NET
ASP.NET
Web
Forms
Web
PagesMVC
Web
APISignalR
Single Page Apps
Sites Services
Visual Studio 2013
キーポイント
• NuGet
–NuGetによってライブラリをプラガブルに
–各フレームワークを構成するライブラリをNuGetで柔軟かつ整合性のとれた管理を実現
より柔軟に
ASP.NET
Web
Forms
Web
PagesMVC
Web
APISignalR
Single Page Apps
Sites Services
YOU! YOU!
とはいえ…
• 何を使えばいい?
• 特に画面があるやつ
–Service系は特徴がハッキリしてるので
• あくまで私見ですが…
私の思う、選択のポイント
• MVCが最初の選択肢– 何を選んでいいかわからないならコレ
• ライトな目的ならWeb Pagesを検討– 3-4画面程度のちょっとしたアプリ– Webアプリ自体の勉強目的
• Web Formsの選択は慎重に– 幾つか要件が当てはまるなら採用して良い
• 要員にWeb Forms経験者• 商用コンポーネントの利用• 通信のオーバーヘッドの許容…等
– 例えばオンプレのエンプラアプリを商用コンポーネントをバンバン使って経験者が開発するとかならまだまだアリ
その他外せないポイント
• クライアントサイドテクノロジー
– jQueryをはじめとしたOSSの採用
–TypeScriptとの親和性
• ツールの充実
–Visual Studioの機能
–Web Essentials等の便利機能
OWINとは
次へつながるキーテクノロジー?
Open Web Interface for .NET
• WebアプリケーションとWebサーバーを接続するインタフェースの規格
アプリとサーバ間の接続を抽象化
• WebアプリとWebサーバの結合を疎に–移植性の向上
–多様なコンポーネント開発
• インスパイア元–Ruby- Rack
–Python - WSGI
–Perl- PSGI
OWINの仕様が決めていること
• アプリとサーバの間の接合方式
–インタフェースの仕様
–データ構造は二つ
• IDictionary<string, object>
• Func<IDictionary<string, object>, Task>
App
Serverここ!
OWINがASP.NETにもたらすもの
• IISへの依存から卒業
–Selfhost
– IIS以外のWebサーバ
• プラガブルなコンポーネント開発
–コンポーネントもIIS非依存
アプリ
IIS selfhost
アプリ
Katanaプロジェクト
• マイクロソフトによるOWINの実装
–OWIN自体はあくまで"規格“
–リファレンス実装としてのkatana
• katanaの概要
–https://katanaproject.codeplex.com/
–http://msdn.microsoft.com/ja-
jp/magazine/dn451439.aspx
Katanaのアーキテクチャ
Application
Middleware
Server
Host
Microsoft.Owin.*
• Katanaにって実装されているアセンブリ
–例:Microsoft.Owin.Host.SystemWeb
• OWINをSystem.Web(≒ 現在のASP.NET)で使うためのライブラリ
• ASP.NET Identity等で既に利用
OWINは既に使われている
• OWINの実装、katanaのプロダクトは既に使われている
–ASP.NET Identity
–SignalR 2.0
Helios
• OWINをIISにホストするためのライブラリ
–Microsoft.Owin.Host.IIS
–System.Webに依存しないラッパー
• 2014.07.15現在、まだα版
–Microsoft.Owin.Host.IIS 1.0.0-alpha1
ここまでのまとめ
• ”OWIN”とはASP.NETを次のステップへといざなうオープン規格
• "Katana Project“マイクロソフトによるOWINの実装
• OWINはVS2013世代で既に利用され始めている
来るべき ”vNext”
次のクラウドの時代へ
注意
※ここから先はアルファのお話。
※現時点ですぐに“使える”という類の話しではない
ASP.NET vNext
• ASP.NETの次バージョン
• 2014年5月、TechEd North America 2014で発表
オフィシャルな情報
• http://www.asp.net/vnext
–ただし正式リリース後はコンテンツは変わると思う(次世代バージョンのことなので)
特徴をピックアップ
• ASP.NET MVC 6, Entity Framework 7,
SignalR 3
• クラウドに最適化
• IISへの依存を解消
• DI (Dependency Injection)
• 破壊的な変更
• オープンソース
ASP.NET MVC 6, Entity Framework 7 ,
SignalR 3
• MVC 6はMVC, Web API , Web Pages
を含む
–名前空間やアセンブリを整理し統合
• Web FormsはvNextでバージョンアップしない
–Web Forms 4.5.xの実行はサポート
クラウド最適化
• side-by-sideでのデプロイ
–GACに依存しない
–ランタイムの事前インストール不要
• ランタイムごと配置
• Core CLR
• 事前のコンパイルも不要
– Roslynによる実行時コンパイル
–サーバー上にソースファイルのまま配置
IISへの依存を解消
• セルフホスト可能
• k runtime
• IISへはHeliosを使ってホスト
• mono上でも動作macやLinux上で動作
DI (Dependency Injection)
• DIのフレームワークレベルでのサポート
–http://blogs.msdn.com/b/webdev/archiv
e/2014/06/17/dependency-injection-in-
asp-net-vnext.aspx
• NinjectやUnity DI等のコンテナも利用可能
破壊的な変更
• プロジェクトファイルの形式の変更
–プロジェクトファイルが「kproj」
–設定ファイルがjson形式
• System.Webの消失
–既存のSystem.Webに依存したコードは動かない
デモ
• Monaco上でvNextのアプリを編集
自分で触って試せます
• Visual Studio “14” CTP 2
–ダウンロード可能
–Azure VMのギャラリーに設定済みイメージ
CTPというのを理解して触って下さい安定動作は期待しない
パフォーマンスどういういう段階でもない
ここまでのまとめ
• ASP.NETはvNextへ
• vNextはよりクラウドを意識
• 破壊的な変更もある
• 乞うご期待!
本日のまとめ
たぶんまとまりきらない
本日の話題
• “One ASP.NET”という現在
• キーテクノロジー”OWIN”
• vNextはすぐそこまで来ている
是非このビデオを見てください
• 5月に開催されたde:codeのビデオ
–この 10 年をキャッチアップ! .NET 開発者のための技術選択と「いま」
• http://channel9.msdn.com/Events/de-
code/2014/TL-001
–Web アプリケーションパターンの進化~ One ASP.NET の今とこれから~
• http://channel9.msdn.com/Events/de-
code/2014/TL-001
ご清聴ありがとうございました