Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ASP.NET "NOW" and "NEXT"

23,827 views

Published on

2014/07/19 に OITEC 第19回勉強会にて発表した同名のセッションの資料


ASP.NETの登場から2014年7月現在までの歴史と経緯、今現在のOne ASP.NETの姿、そしてOWINから将来のvNextについてを一通り紹介するセッション

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ASP.NET "NOW" and "NEXT"

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

×