ASP.NET "NOW" and "NEXT"

68
ASP.NET "NOW" and "NEXT" OITEC 19回勉強会 2014/07/19 きよくら ならみ

description

2014/07/19 に OITEC 第19回勉強会にて発表した同名のセッションの資料 ASP.NETの登場から2014年7月現在までの歴史と経緯、今現在のOne ASP.NETの姿、そしてOWINから将来のvNextについてを一通り紹介するセッション

Transcript of ASP.NET "NOW" and "NEXT"

Page 1: ASP.NET "NOW" and "NEXT"

ASP.NET

"NOW" and "NEXT"OITEC第19回勉強会

2014/07/19

きよくらならみ

Page 2: ASP.NET "NOW" and "NEXT"

自己紹介

• きよくらならみ–@kiyokura

–kiyokura.hateblo.jp

• 岡山生まれ岡山育ちのソフトウェアエンジニア

• NET系の開発やWebアプリ開発–Microsoft MVP for ASP.NET/IIS

Page 3: ASP.NET "NOW" and "NEXT"

諸注意と免責事項

• 私個人による調査と見解であり所属する組織を代表するものではありません

• 万が一、本セッションの内容の誤りに起因する何らかの損害が発生した場合においても、私は一切の責任を負うことができませんご了承ください

Page 4: ASP.NET "NOW" and "NEXT"

アジェンダ

• “Web Forms”から“One ASP.NET”へ

• OWINとは

• 来るべき ”vNext”

Page 5: ASP.NET "NOW" and "NEXT"

“Web Forms”から“One ASP.NET”へ

現在のASP.NETの姿

Page 6: ASP.NET "NOW" and "NEXT"

ASP.NETとは

• .NET Frameworkを基盤としたWebアプリケーションのプラットホーム

Page 7: ASP.NET "NOW" and "NEXT"

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”です

Page 8: ASP.NET "NOW" and "NEXT"

ASP.NET Web Forms

• ASP.NET登場時からある一番の古株

– 2002年に登場

–現在の最新バージョンは「Web Forms 4.5.1」

• 当初は「ASP.NET=コレ」

–そもそもWeb Formsという名前は後述の「ASP.NET MVC」が出てきてから区別のために呼ばれ始めた

Page 9: ASP.NET "NOW" and "NEXT"

ASP.NET Web Forms

Page 10: ASP.NET "NOW" and "NEXT"

ASP.NET Web Forms

• Webアプリ”らしくない”開発

– IDEによる"ポトペタ開発"

–コントロールのドラッグ&ドロップ

– JavaScriptを1行も書くことなくAjaxを実現

• Web特有の事情を抽象化

–ViewStateとPostback

Page 11: ASP.NET "NOW" and "NEXT"

ASP.NET MVC

• その名の通り「MVCアーキテクチャ」

–2009年にリリース

–当初はアドオンとして登場

–現在の最新版は「MVC 5.x」

Page 12: ASP.NET "NOW" and "NEXT"

ASP.NET MVC

Controller

View Model

Page 13: ASP.NET "NOW" and "NEXT"

ASP.NET MVC

• フレームワークとしての機能– スキャフォールディング– 設定より規約– 割とRuby on Railsにインスパイア

• Viewはエンジンを選択可能– Razor / ASPXの他、 Hamlなどオープンソース等々

• モデルについては自由– 基本的に「これを使え」というは縛り無し

• 状況に合わせてテクノロジやアーキテクチャを選択すればよい、というスタンス

Page 14: ASP.NET "NOW" and "NEXT"

ASP.NET Web Pages

• ASP.NET中で最もシンプル

–2011年に最初のバージョンが登場

–MVCの既定ビューエンジン「Razorビューエンジン」をページフロント方式で使えるようにした感じ

Page 15: ASP.NET "NOW" and "NEXT"

ASP.NET Web Pages

• HTMLにコードを埋め込む方式– Classic ASPやPHP、JSPに近い

• Razor構文–@を使って、HTML中にコードを埋め込む–コードには、C#とVB.NETが利用可能

• C#とVB.NETの機能はフルに利用可能

• 事前のコンパイルが可能–サーバ上で直接編集も可能

Page 16: ASP.NET "NOW" and "NEXT"

ASP.NET Web Pages

Page 17: ASP.NET "NOW" and "NEXT"

ASP.NET Web API

• HTTPサービスを構築するためのもの

–2012年8月リリース

Page 18: ASP.NET "NOW" and "NEXT"

ASP.NET Web API

• RESTful

– REST

• Representational State Transfer

–HTTPの動詞とAPIのメソッドを対応させる• POST / GET / PUT / DELETE

• 汎用的な出力形式– JOSN

– xml

• OData対応

Page 19: ASP.NET "NOW" and "NEXT"

ASP.NET SignalR

• リアルタイムWeb通信を実現

–2013年2月に1.0リリース

Page 20: ASP.NET "NOW" and "NEXT"

ASP.NET SignalR

• リアルタイムWeb

–Webによる双方向通信

–WebSocket対応

• 状況に合わせてフォールバック–自動的に最善の手段を採用

• WebSocket

• Server Sent Events

• Forever Frame

• Ajax long polling

Page 21: ASP.NET "NOW" and "NEXT"

ASP.NET SignalR

• クライアント側にもライブラリを提供

– JavaScript

– .NET

– iOS

–Android

• 類似技術:Socket.IO

Page 22: ASP.NET "NOW" and "NEXT"

ASP.NET SPA

• Single Page Application

–2012年に登場

• VS2012 Update2より

• 単一ページ構成のAjaxアプリケーション

– JavaScriptのクライアントサイドライブラリを利用

Page 23: ASP.NET "NOW" and "NEXT"

ASP.NET SPA

クライアントサイド

HTMLページ

サーバ サイド

Webサービス(Web API 等)

ページ返却(MVC or 静的ページ等)

HTMLを一枚返す

JavaScript(クライアントサイド

MVCフレームワーク)

• ビジネスロジック• 画面遷移

データ

Page 24: ASP.NET "NOW" and "NEXT"

ASP.NET SPA

• 多様なJavaScriptフレームワークに対応– Knockout.js

– Backbone.js

– AngularJS

–DurandalJS

– EmberJS

• 各種テンプレートをダウンロード可能– http://www.asp.net/single-page-

application/overview/templates

Page 25: ASP.NET "NOW" and "NEXT"

ASP.NETの歴史

• 初めて登場したのは2002年

• 2014年の現在まで、かなりの速度で進化してきた

Page 26: ASP.NET "NOW" and "NEXT"

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のバグフィックス&安定版的な

Page 27: ASP.NET "NOW" and "NEXT"

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#の新しい構文などがインパクト大

Page 28: ASP.NET "NOW" and "NEXT"

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も登場

Page 29: ASP.NET "NOW" and "NEXT"

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の進化も止まらない

Page 30: ASP.NET "NOW" and "NEXT"

大体の歴史感

• VS2005時点でWeb Formsは概ね完成

–最近は大きな進歩はない

• 2009年に誕生したMVCは怒涛の勢いで進化

–MVC 3で大まかに固まって

–MVC 5.xまで堅実な進化

• Web APIやSignalRも着実に進歩中

Page 31: ASP.NET "NOW" and "NEXT"

One ASP.NET

• 数あるASP.NETのフレームワーク

• プラガブルに利用できるように

Page 32: ASP.NET "NOW" and "NEXT"

One ASP.NET

ASP.NET

Web

Forms

Web

PagesMVC

Web

APISignalR

Single Page Apps

Sites Services

Page 33: ASP.NET "NOW" and "NEXT"

Visual Studio 2013

Page 34: ASP.NET "NOW" and "NEXT"

キーポイント

• NuGet

–NuGetによってライブラリをプラガブルに

–各フレームワークを構成するライブラリをNuGetで柔軟かつ整合性のとれた管理を実現

Page 35: ASP.NET "NOW" and "NEXT"

より柔軟に

ASP.NET

Web

Forms

Web

PagesMVC

Web

APISignalR

Single Page Apps

Sites Services

YOU! YOU!

Page 36: ASP.NET "NOW" and "NEXT"

とはいえ…

• 何を使えばいい?

• 特に画面があるやつ

–Service系は特徴がハッキリしてるので

• あくまで私見ですが…

Page 37: ASP.NET "NOW" and "NEXT"

私の思う、選択のポイント

• MVCが最初の選択肢– 何を選んでいいかわからないならコレ

• ライトな目的ならWeb Pagesを検討– 3-4画面程度のちょっとしたアプリ– Webアプリ自体の勉強目的

• Web Formsの選択は慎重に– 幾つか要件が当てはまるなら採用して良い

• 要員にWeb Forms経験者• 商用コンポーネントの利用• 通信のオーバーヘッドの許容…等

– 例えばオンプレのエンプラアプリを商用コンポーネントをバンバン使って経験者が開発するとかならまだまだアリ

Page 38: ASP.NET "NOW" and "NEXT"

その他外せないポイント

• クライアントサイドテクノロジー

– jQueryをはじめとしたOSSの採用

–TypeScriptとの親和性

• ツールの充実

–Visual Studioの機能

–Web Essentials等の便利機能

Page 39: ASP.NET "NOW" and "NEXT"

OWINとは

次へつながるキーテクノロジー?

Page 40: ASP.NET "NOW" and "NEXT"

Open Web Interface for .NET

• WebアプリケーションとWebサーバーを接続するインタフェースの規格

Page 41: ASP.NET "NOW" and "NEXT"

オープンな”仕様”

• http://owin.org/

• コミュニティプロジェクト

Page 42: ASP.NET "NOW" and "NEXT"

アプリとサーバ間の接続を抽象化

• WebアプリとWebサーバの結合を疎に–移植性の向上

–多様なコンポーネント開発

• インスパイア元–Ruby- Rack

–Python - WSGI

–Perl- PSGI

Page 43: ASP.NET "NOW" and "NEXT"

OWINの仕様が決めていること

• アプリとサーバの間の接合方式

–インタフェースの仕様

–データ構造は二つ

• IDictionary<string, object>

• Func<IDictionary<string, object>, Task>

App

Serverここ!

Page 44: ASP.NET "NOW" and "NEXT"

OWINがASP.NETにもたらすもの

• IISへの依存から卒業

–Selfhost

– IIS以外のWebサーバ

• プラガブルなコンポーネント開発

–コンポーネントもIIS非依存

アプリ

IIS selfhost

アプリ

Page 45: ASP.NET "NOW" and "NEXT"

Katanaプロジェクト

• マイクロソフトによるOWINの実装

–OWIN自体はあくまで"規格“

–リファレンス実装としてのkatana

• katanaの概要

–https://katanaproject.codeplex.com/

–http://msdn.microsoft.com/ja-

jp/magazine/dn451439.aspx

Page 46: ASP.NET "NOW" and "NEXT"

Katanaのアーキテクチャ

Application

Middleware

Server

Host

Page 47: ASP.NET "NOW" and "NEXT"

Microsoft.Owin.*

• Katanaにって実装されているアセンブリ

–例:Microsoft.Owin.Host.SystemWeb

• OWINをSystem.Web(≒ 現在のASP.NET)で使うためのライブラリ

• ASP.NET Identity等で既に利用

Page 48: ASP.NET "NOW" and "NEXT"

OWINは既に使われている

• OWINの実装、katanaのプロダクトは既に使われている

–ASP.NET Identity

–SignalR 2.0

Page 49: ASP.NET "NOW" and "NEXT"

Helios

• OWINをIISにホストするためのライブラリ

–Microsoft.Owin.Host.IIS

–System.Webに依存しないラッパー

• 2014.07.15現在、まだα版

–Microsoft.Owin.Host.IIS 1.0.0-alpha1

Page 50: ASP.NET "NOW" and "NEXT"

ここまでのまとめ

• ”OWIN”とはASP.NETを次のステップへといざなうオープン規格

• "Katana Project“マイクロソフトによるOWINの実装

• OWINはVS2013世代で既に利用され始めている

Page 51: ASP.NET "NOW" and "NEXT"

来るべき ”vNext”

次のクラウドの時代へ

Page 52: ASP.NET "NOW" and "NEXT"

注意

※ここから先はアルファのお話。

※現時点ですぐに“使える”という類の話しではない

Page 53: ASP.NET "NOW" and "NEXT"

ASP.NET vNext

• ASP.NETの次バージョン

• 2014年5月、TechEd North America 2014で発表

Page 54: ASP.NET "NOW" and "NEXT"

オフィシャルな情報

• http://www.asp.net/vnext

–ただし正式リリース後はコンテンツは変わると思う(次世代バージョンのことなので)

Page 55: ASP.NET "NOW" and "NEXT"

特徴をピックアップ

• ASP.NET MVC 6, Entity Framework 7,

SignalR 3

• クラウドに最適化

• IISへの依存を解消

• DI (Dependency Injection)

• 破壊的な変更

• オープンソース

Page 56: ASP.NET "NOW" and "NEXT"

ASP.NET MVC 6, Entity Framework 7 ,

SignalR 3

• MVC 6はMVC, Web API , Web Pages

を含む

–名前空間やアセンブリを整理し統合

• Web FormsはvNextでバージョンアップしない

–Web Forms 4.5.xの実行はサポート

Page 57: ASP.NET "NOW" and "NEXT"

クラウド最適化

• side-by-sideでのデプロイ

–GACに依存しない

–ランタイムの事前インストール不要

• ランタイムごと配置

• Core CLR

• 事前のコンパイルも不要

– Roslynによる実行時コンパイル

–サーバー上にソースファイルのまま配置

Page 58: ASP.NET "NOW" and "NEXT"

IISへの依存を解消

• セルフホスト可能

• k runtime

• IISへはHeliosを使ってホスト

• mono上でも動作macやLinux上で動作

Page 59: ASP.NET "NOW" and "NEXT"

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等のコンテナも利用可能

Page 60: ASP.NET "NOW" and "NEXT"

破壊的な変更

• プロジェクトファイルの形式の変更

–プロジェクトファイルが「kproj」

–設定ファイルがjson形式

• System.Webの消失

–既存のSystem.Webに依存したコードは動かない

Page 61: ASP.NET "NOW" and "NEXT"

オープンソース

• Githubにてホスト

–https://github.com/aspnet

Page 62: ASP.NET "NOW" and "NEXT"

デモ

• Monaco上でvNextのアプリを編集

Page 63: ASP.NET "NOW" and "NEXT"

自分で触って試せます

• Visual Studio “14” CTP 2

–ダウンロード可能

–Azure VMのギャラリーに設定済みイメージ

CTPというのを理解して触って下さい安定動作は期待しない

パフォーマンスどういういう段階でもない

Page 64: ASP.NET "NOW" and "NEXT"

ここまでのまとめ

• ASP.NETはvNextへ

• vNextはよりクラウドを意識

• 破壊的な変更もある

• 乞うご期待!

Page 65: ASP.NET "NOW" and "NEXT"

本日のまとめ

たぶんまとまりきらない

Page 66: ASP.NET "NOW" and "NEXT"

本日の話題

• “One ASP.NET”という現在

• キーテクノロジー”OWIN”

• vNextはすぐそこまで来ている

Page 67: ASP.NET "NOW" and "NEXT"

是非このビデオを見てください

• 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

Page 68: ASP.NET "NOW" and "NEXT"

ご清聴ありがとうございました