43
mvcConf @:Japan ~ ASP.NET MVC ブート キャンプ ~ クラウドと HTML5 で作成するスケー ラブルな Web アプリ開発術 ~ Windows Azure + ASP.NET MVC 編~ 株式会社野村総合研究所 勇大地 (いさみ だいち) Microsoft MVP for Windows Azure

Mvc conf session_5_isami

Embed Size (px)

DESCRIPTION

mvcConf @:Japan ~ ASP.NET MVC ブートキャンプ ~ の資料です

Citation preview

Page 1: Mvc conf session_5_isami

mvcConf @:Japan ~ ASP.NET MVC ブート キャンプ ~

クラウドと HTML5 で作成するスケー ラブルな Web アプリ開発術

~ Windows Azure + ASP.NET MVC 編~

株式会社野村総合研究所 勇大地 (いさみ だいち)

Microsoft MVP for Windows Azure

Page 2: Mvc conf session_5_isami

セッションの目的とゴール

目的 ASP.NET MVC × jQuery の開発を学習する マルチデバス向け Web ゕプリ開発を学習する Web ゕプリのクラウド移行を学習する

ゴール ASP.NET MVC × jQuery の開発ができる マルチデバス向けの画面開発ができる クラウド上に Web ゕプリを配置できる

2

Page 3: Mvc conf session_5_isami

今回作成したサンプル

機能 コメント付きで投票 投稿の割合をグラフ化

3

http://mvcconfjapan120611.cloudapp.net/

Page 4: Mvc conf session_5_isami

アジェンダ

クラウド+ HTML5 が必要な理由は?

HTML5 画面開発のポントは?

クラウドに移行するには?

まとめ

Page 5: Mvc conf session_5_isami

HTML5 と クラウドの振り返り

HTML5 の振り返り

クラウドの振り返り

クラウド上で動く WEB ゕプリ

Page 6: Mvc conf session_5_isami

HTML4 の後継である次期標準仕様

新機能が追加 新規マークゕップタグの登場 新 API(ビデオ・音楽の再生、オフラン実行等)

HTML5の振り返り

・ 約 10 年ぶりの標準仕様改正

・ HTML 4.01 に比べ、適用可能な領域が増した

Page 7: Mvc conf session_5_isami

メリット 柔軟なスケールゕウト/スケールダウン

保守の手間、管理コストを削減

デメリット 環境カスタマズが容易でない ゕーキテクチャが従来と異なる

クラウドの振り返り 1/2

Page 8: Mvc conf session_5_isami

Windows Azure Marketplace

Windows Azure Platform

Windows Azure

コンピュート

•Webロール

•Workerロール

•VMロール

ストレージ

• Blob

• Table

• Queue

• Drive

Azure AppFabric • Service Bus • Access Control • Caching

SQL Azure • RDB • Data Sync • Reporting

DataMarket

Applications

Microsoft Pinpoint

クラウドの振り返り 2/2

Page 9: Mvc conf session_5_isami

クラウドと HTML5 の利用例

demo ...

9

Page 10: Mvc conf session_5_isami

キャッシュ機能

分散 KVS

セッション

永続データ

クラウドプラットフォーム

クラゕント

クラウド上で動く WEB アプリ 1/2

サーバ

Page 11: Mvc conf session_5_isami

クライアント jQuery

サーバ ASP.NET MVC

永続データ、セッション Windows Azure ストレージ サービス Windows Azure AppFabric キャッシュ

クラウド上で動く WEB アプリ 2/2

11

Page 12: Mvc conf session_5_isami

アジェンダ

クラウド+HTML5 が必要な理由は?

HTML5 画面開発のポントは?

クラウドに移行するには?

まとめ

Page 13: Mvc conf session_5_isami

HTML5 画面開発のポイント HTML5 新機能の利用 マルチデバイス対応 旧ブラウザとの共存

未だに消えない IE6 PC /スマフォへの対応

jQuery ×

ASP.NET MVC で解決

Page 14: Mvc conf session_5_isami

必修と化した jQuery !!

jQuery Core DOM 操作等のコゕ機能 jQuery Mobile スマフォ向け jQuery Template テンプレートエンジン jQuery Validate バリデーション jQuery UI UI コンポーネント jQuery Globalization 国際化

ASP.NET MVC との相性が良い!

Page 15: Mvc conf session_5_isami

15

//セレクタ var elem1 = $(‘#my_id’); //属性の操作 var link = $(‘#my_element’).attr(‘href’); //CSSの取得 var color = $(‘#my_element’).css(‘background’); //ベント追加 $(‘#mybutton’).click( function(){ alert(‘ボタン押下’); });

jQuery Core jQuery の主要機能(一部)

Page 16: Mvc conf session_5_isami

jQuery Mobile 1/3 現在のバージョン

は 1.0α4.1 モバル向けプラ

グン Windows Phone 7

にも対応 既存プラグンと

も連携可

Page 17: Mvc conf session_5_isami

<!-- ページ定義 --> <div data-role="page"> <div data-role="header"> Home </div> <div data-role="content"> ああああああ </div> <div data-role="footer"> <h1> &copy; 誰か</h1> </div> </div>

jQuery Mobile 2/3 画面定義

ページ

Page 18: Mvc conf session_5_isami

18

jQuery Mobile 3/3

<!-- ページ定義 --> <a href="#" data-icon="home“ data-iconpos="notext“ data-direction="reverse"> <!-- ページ定義 --> <ul data-role="listview" data-inset="true"> </ul>

画面要素定義

Home ゕコン

リストビュー

Page 19: Mvc conf session_5_isami

19

var dataObject = { name: ‚勇大地", comments: [‚Azureは良いねぇ…‛,‚チャックさんケメーン!"] }; $("#sometmpl").tmpl( dataObject ) .appendTo("ul");

jQuery Template JavaScript のテンプレートエンジン

<script id="sometmpl" type"text/x-jquery-tmpl"> <li>${$i}) ${name}(こめんと: {{each(i,comment) comments}}${comment}{{/each}})</li> </script> <ul></ul>

Page 20: Mvc conf session_5_isami

20

$(function () { $("#my_form").validate({ rules: { my_textbox: { required: true }}, messages: { my_textbox: { required: "1文字くらい入力してほしいお。。。" }} });});

jQuery Validate バリデーションのルールを設定

Page 21: Mvc conf session_5_isami

サーバサイドは ASP.NET MVC 意図通りの HTML を記述可能 URL ルーテゖング モデルバンダ グローバルフゖルタ 単体テストの容易化

jQuery との相性が良い!!

Page 22: Mvc conf session_5_isami

22

[HttpGet] public ActionResult JsonMethod(Person person) { //リクエストデータの表示 Trace.TraceInformation(person.ToString()); //JSON 形式のデータを返す return Json(new Person() { Name = "勇大地", Comment = "緊張して胃が痛い" } , JsonRequestBehavior.AllowGet); }

JSonValueProviderFactory JSON データの送受信(MVC3 の新機能)

Page 23: Mvc conf session_5_isami

HTML5 with jQuery Mobile

demo ...

23

Page 24: Mvc conf session_5_isami

アジェンダ

クラウド+ HTML5 が必要な理由は?

HTML5 画面開発のポントは?

クラウドに移行するには?

まとめ

Page 25: Mvc conf session_5_isami

Windows Azure 移行のポイント

アセンブリ配置

デバッグ手法の差異

データの永続化

セッションの取り扱い Appendix で

Page 26: Mvc conf session_5_isami

アセンブリ配置 1. 新規「ASP.NET MVC3 Web アプリケーション」を追加 2. 「ソリューション内の Web ロールプロジェクト」を追加 3. ASP.NET MVC 側のプロジェクトを右クリックし、「配置

可能な依存関係の追加」を選択

1. 2. 3.

Page 27: Mvc conf session_5_isami

デバッグ手法の差異 Web デプロイが便利!! 数秒で再デプロイ可能 Azure SDK 1.4.1 から 要リモートデスクトップ

Page 28: Mvc conf session_5_isami

データの永続化 データの例 量とサイズ 想定される形式

顧客マスタ 在庫マスタ

多い ・関係型 ・頻繁に参照される

入出庫データ 受注データ

多い ・関係型 ・レコードを蓄積

画像データ 動画データ

サズが巨大

・フゔル等

ログ テキスト

サズが小さい

・レコードを蓄積

伝搬メッセージ

サズが小さい

・キュー等

・Blob Storage ・Drive

・Table Storage

・Queue Storage

クラウドのストレージ活用がポイント

安価なスケーラブル Web ゕプリの要点

Page 29: Mvc conf session_5_isami

サンプルのアーキテクチャ

ロードバ

ランサ

Azure AppFabric キャッシュ

テーブル

セッション

永続データ

スケーラブル&マルチデバイス

IE9

スマートフォン

※認証にはAccess Controlを利用

Page 30: Mvc conf session_5_isami

ASP.NET MVC + Windows Azure

demo ...

30

Page 31: Mvc conf session_5_isami

まとめ

マルチデバイス対応向け開発方法を習得 HTML5 の仕様をキャッチゕップ jQuery の 各種プラグンを学習

クラウドを利用したサービス方法を習得 ゕセンブリ配置に注意 Web デプロを活用 永続化データの取り扱いに留意

Page 32: Mvc conf session_5_isami

appendix.

32

Page 33: Mvc conf session_5_isami

33

//SVG 対応の可否 alert("svg is " + Modernizr.svg); //GPS 位置取得の可否 alert("geolocation is " + Modernizr.geolocation); //ゕプリケーションキャッシュの可否 alert("applicationcache is " + Modernizr.applicationcache);

Modernizr の利用 1/2 ブラウザの HTML5 対応度合いを確認

F12 ツール

Page 34: Mvc conf session_5_isami

34

//<video /> タグへの対応 for (var key in Modernizr.video) { alert(key + " : " + Modernizr.video[key]); } //<audio /> タグへの対応 for (var key in Modernizr.audio) { alert(key + ‚ : ‛ + Modernizr.audio[key]); } //新しい <input /> タグのタプ( url、date 等) for (var key in Modernizr.inputtypes) { alert(key + " : " + Modernizr.inputtypes[key]); }

Modernizr の利用2/2 ブラウザの HTML5 対応度合いを確認

Page 35: Mvc conf session_5_isami

HTML5 の振り返り + α

2010 2011

1Q 2Q 3Q 4Q 1Q 2Q 3Q 4Q

★ 9/17β版リリース ★ 11/17 Platform Previwe 7リリース

★7/7 4βeta 1リリース ★11/10βeta 7リリース

★6/8 Safari 5リリース

★ 3/15 IE9 製品版リリース(HTML5対応)

★ 3/22 FF4 製品版リリース(HTML5対応)

★ 3/9 Safari 5.0.4 リリース(HTML5対応強化)

★ 3/22 Chrome 11 リリース(HTML5対応強化)

★ 4/13 IE10 Preview(HTML5対応強化)

★ 3/9 Chrome 10 リリース(HTML5対応強化) ★ 2/11 Chrome 9リリース(HTML5対応強化)

★ 2/11 Chrome 9リリース(HTML5対応強化)

主要ブラウザの HTML5 対応により、HTML5 のサービス展開が可能に

Page 36: Mvc conf session_5_isami

草案

最終草案

勧告候補

勧告案

勧告

2012年 2月予定

2014年 予定

2011年 5月現在

2012 年には、HTML4 での普及期だった勧告候補になる予定

現状は最終草案の段階

そろそろ HTML5 を学ぶ頃合

HTML5 の振り返り + α

Page 37: Mvc conf session_5_isami

Azure を無料で使うには?! 1/2 MSDN に無償で利用する方法が!

http://msdn.microsoft.com/ja-jp/windowsazure/gg674969

・クレジットカード登録不要

・30日間使いたい放題

・次ページ

Page 38: Mvc conf session_5_isami

Azure を無料で使うには?! 2/2 特別導入プランを利用

特別導入プランの無料枠

・コンピューテゖング

24 時間 * 30日 < 750 時間

・データ転送量

0.5 GB * 30 日 < 20 GB

・SQL Azure

タダ!

・特別導入プラン ・XS ンスタンス × 1 ⇒月額無料

Page 39: Mvc conf session_5_isami

学習のステップ

最初はローカルで

次は Azure Pass で

次は特別導入プランで

次は長期運用の他プランで

要クレジットカード

クレジットカード不要

Page 40: Mvc conf session_5_isami

環境構築の方法 Web Platform Installer を利用!

http://msdn.microsoft.com/ja-jp/windowsazure/cc974146

Visual Studio や環境設定も一括実施

Page 41: Mvc conf session_5_isami

セッションデータの共有方法に工夫が必要

ロードバ

ランサ

ユーザ ンスタンス2

ンスタンス1

ンスタンス3

インスタンス1のセッションデータ

インスタンス2のセッションデータ

インスタンス3のセッションデータ

セッションの取り扱い 1/2

Page 42: Mvc conf session_5_isami

セッションの取り扱い 2/2

MSDN Code Galleryのセッションプロバイダ

ASP.NET標準のセッションプロバイダ

自作セッションプロバイダ

Azure AppFabricキャッシュ

概要 Code Galleryのセッションプロバダを利用

ASP.NET標準のセッションプロバダを利用

Access mdb等のプロバダを書き換える

Azure AppFabric キャッシュを利用

利用ストレージ

Table Storage SQL Azure SQL Azure Azure AppFabric キャッシュ

難点 ・タムゕウトしたセッションを自分で削除する必要がある ・SQL Azureに格納するよりも遅い

・タムゕウトしたセッションを自分で削除 ・Azure向けのプロバダではないため、コードがいびつになる

・タムゕウトしたセッションを自分で削除する必要がある

・コストが高め

小 ← コスト&性能 → 大

セッション共有方法メリデメ

タムゕウトセッションデータを自分で削除

Page 43: Mvc conf session_5_isami

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the

part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.