Windows Azure Programming
Upcoming SlideShare
Loading in...5
×
 

Windows Azure Programming

on

  • 4,256 views

 

Statistics

Views

Total Views
4,256
Views on SlideShare
4,079
Embed Views
177

Actions

Likes
0
Downloads
65
Comments
0

4 Embeds 177

http://vsug.jp 149
http://www.slideshare.net 16
http://fullvirtue.com 11
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Windows Azure Programming Windows Azure Programming Presentation Transcript

  • VSUG DAY 2009 Winter VSUG DAY 2008 Winter 東京 プログラミング Windows Azureプログラミング ・ 基本の 基本のキ VSUG Visual Studio フォーラムリーダー 酒井 達明 Microsoft MVP for Solutions Architect VSUG DAY 2009.12.5
  • アジェンダ • Windows Azure Platformの変遷 • Windows Azure Platformを構成するサービス • Windows Azureファブリック • WebとWorker/2つのロール • 簡単なAzureアプリケーション • ストレージの使い方 • AppFabricによるサービス連携 VSUG DAY 2009.12.5
  • Azure Services Platform Azure Services Platform VSUG DAY 2009.12.5
  • Windows Azure Platform Windows Azure Platform 2009年3月 VSUG DAY 2009.12.5
  • Windows Azure Platform Windows Azure Platform 2009年7月 VSUG DAY 2009.12.5
  • Windows Azure Platform Windows Azure Platform 2009年9月 VSUG DAY 2009.12.5
  • Windows Azure Platform Windows Azure Platform 最終的にこれに落 最終的にこれに落ち着きました☺ にこれに きました☺ VSUG DAY 2009.12.5
  • Windows Azure Platformのサービス • – クラウドのためのオペレーティングシステム – 64bitベースのWindows Server 2008+IIS7 – .NET, Native C++(64bit), FastCGIアプリを実行 – 3種のストレージ(Blob,Table,Queue) • Blob内に仮想的なNTFSを作成可能(XDrive) – ロールベースアーキテクチャ • Webロール、Workerロール、VMロール VSUG DAY 2009.12.5
  • Windows Azure Platformのサービス • – 旧.NET Services – 最初は2種のサービスを提供 – サービスバス • 安全にオンプレミス&クラウドのサービスを連携 • ファイヤーウォールやNATを介した連携も可能 – アクセスコントロール • オンプレミス&クラウドの間でのシングルサインオンを 実現 • クレームベースのセキュリティトークンサービス VSUG DAY 2009.12.5
  • Windows Azure Platformのサービス • – 読んで字の如く「SQL Server on the Cloud.」 – TDS(Tabular Data Stream)をサポート • ADO .NET・・・・・OK! • ODBC・・・・OK! • SQL Client・・・・OK! • SQL CLR・・・・残念! • RESTful・・・残念!(ADO.NET Data Servicesを使って自作可能) – 最大10GBのデータ領域を利用可能 • ちょっと少なくないですか?でも、バージョン1ですから! – オブジェクトエクスプローラーも使用可 VSUG DAY 2009.12.5
  • プログラミング Windows Azureプログラミング VSUG DAY 2009.12.5
  • Windows Azure Fabric アプリケーション コンピュート ストレージ Config ファブリック AppFabric Applicatio Applicatio アプリケーション ns ns SQL Service Windows Azure Application Application アプリケーション ss Windows Windows Windows Clients Server XP/Vista/7 Mobile VSUG DAY 2009.12.5
  • 2つのロール バランス ロード Web ロール Worker ロール ストレージ アカウント ブロブ テーブル キュー VSUG DAY 2009.12.5
  • Web ロール • インターネット経由の リクエストを処理 インターネット • IIS7 ホスト – ASP.NET / WCF ホスト – SSL サポート Web • In-Bound接続のみ可能 ロール • Out-Bound接続なし ロード バランサー • Cloud Service プロジェクト ストレージ サービス VSUG DAY 2009.12.5
  • Worker ロール • バックグラウンド プロセス • Web ロールからは、キュー インターネット でリクエストを読込む • In-Bound接続なし • Out-Bound接続は可能 • Windows Azure Trust Policy Worker • Cloud Service プロジェクト ロール ストレージ サービス VSUG DAY 2009.12.5
  • 開発環境の構築 • OS及びVisual Studioの準備 • Windows Vista SP1以降, Windows Server 2008, Windows 7, Windows Server 2008 R2 • Visual Studio 2008 or Visual Studio 2010 – (Express Editionでも可) • SDKおよびツールをダウンロード – http://www.azure.com/ へアクセス – 「Get Tools & SDK」をクリック – ダウンロードするSDKおよびツールは1種類 • Windows Azure Tools for Microsoft Visual Studio • ツールのインストール VSUG DAY 2009.12.5
  • Azureのアカウントを作成する • CTPの招待キーはMicrosoft Connectで入手 – https://connect.microsoft.com/site/sitehome.aspx?SiteID=681 – ※招待キーの送付には数日かかります • Windows Azureポータルにログイン – http://windows.azure.com/ – 予めログイン用のLive IDを用意 – Accountでトークン(プロダクトキー)を追加する VSUG DAY 2009.12.5
  • VSUG DAY 2009.12.5
  • VSUG DAY 2009.12.5
  • ソリューションの作成 • Hosted Serviceのアイコンをクリック – Service LabelとService Descriptionは任意の値 を入力 – Hosted Service URLのService Name一意の値 • 英小文字数字 • 取得可能か否かは「Check Availability」で確認 – Hosted Service Affinity Groupはデフォルトで VSUG DAY 2009.12.5
  • demo 最も簡単なWebロールの例 Hello VSUGDAY VSUG DAY 2009.12.5
  • Visual Studioによる開発の流れ • プロジェクトの新規作成 – Cloud Serviceプロジェクトテンプレートを選択 – 追加したいロールを選択 • ロールは複数追加可能 – 各ロールの開発 – Development Fabric上でのテスト VSUG DAY 2009.12.5
  • 2通りのロールの連携 • WebロールとWorkerロールは疎結合 – WebロールによるWorkerロールの直接参照は NG(近い将来可能になる予定) – ストレージを介したコミュニケーションに限定 – リクエストはQueue – 付加的なデータはBlob or Tableで受渡し VSUG DAY 2009.12.5
  • ロールを分けるメリット ロードバランス Queue Worker ロール VSUG DAY 2009.12.5
  • Windows Azure ストレージ 3種類のストレージ 種類の 種類 • Blob – 単純な階層を持つファイルストレージ • テーブル – リレーショナルを持たない構造化ストレージ • キュー – メッセージ交換のための信頼性のあるストレージ Blob テーブル キュー VSUG DAY 2009.12.5
  • Queueストレージの構造 キュー メッセージ http://... uploadjob http://... Sakai indexjob http://... VSUG DAY 2009.12.5
  • Queue利用の流れ • ストレージアカウントのインスタンス生成 • Queueストレージインスタンス生成 • Queueの取得と生成 • 送信時 – Messageの作成 – Messageのポスト • 受信時 – Messageの取得 – 取得済Messageの削除 VSUG DAY 2009.12.5
  • Queueによるロール連携 メッセージ送信側 メッセージ送信側 //ストレージアカウントの生成 ストレージアカウントの ストレージアカウント CloudStorageAccount queueaccount = CloudStorageAccount.FromConfigurationSetting(”ConnectionString”); ストレージインスタンス生成 //Queueストレージインスタンス生成 ストレージインスタンス CloudQueueClient qsEvalAnswer = queueaccount.CreateCloudQueueClient(); try { ストレージから ストレージからQueueを取得 //Queueストレージから を CloudQueue qAnswer = qsEvalAnswer.GetQueueReference(“azurevalanswer”); qAnswer.CreateIfNotExist(); //Queueの新規作成 の //メッセージをポスト メッセージを メッセージ qAnswer.AddMessage(new CloudQueueMessage(“answes:12345”)); } catch (StorageClientException) { } VSUG DAY 2009.12.5
  • Queueによるロール連携 メッセージ受信側 メッセージ受信側 //Queueストレージインスタンスの作成までは先ほどと同じ ストレージインスタンスの作成までは先ほどと同 ストレージインスタンス までは bool exists; try { CloudQueue qAnswer = qsEvalAnswer.GetQueueReference(”azurevalanswer”); qAnswer.CreateIfNotExist(); //Queueの新規作成 の CloudQueueMessage msg = qAnswer.GetMessage(); if (msg != null) { メッセージを //メッセージをstringで取得 メッセージ で foo(msg.AsString); メッセージの qAnswer.DeleteMessage(msg); //メッセージの削除 メッセージ } } } catch (StorageClientException) { } VSUG DAY 2009.12.5
  • Blobの構造 アカウント コンテナ Blob img001.jpg Pictures img002.jpg Sakai Movies mov001.avi VSUG DAY 2009.12.5
  • Blockによるデータの分割 IMG001. JPG pictures IMG002. JPG Sakai Block 1 movies MOV1.AVI Block 2 Block 3 VSUG DAY 2009.12.5
  • Blob利用の流れ • ストレージアカウントのインスタンス生成 • Blobストレージインスタンス生成 • Containerの取得と生成(新規作成時) – 作成時にメタデータを設定 • Blobインスタンスの生成 – 作成時にメタデータを設定 VSUG DAY 2009.12.5
  • Blobの利用例 CloudStorageAccount strg_account; CloudBlobClient strg_Bolbs; strg_account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString“); Strg_Bolbs = strg_account.CreateCloudBlobClient(); CloudBlobContainer cntNewAlbum; コンテナの //コンテナの新規作成 コンテナ cntNewAlbum = m_PhotoBolbs.GetContainerReference(“mypictures”); cntNewAlbum.CreateIfNotExist(); コンテナの コンテナ メタデータ設定 //コンテナのメタデータ設定 cntNewAlbum.Metadata.Add("AlbumDescription“,description); cntNewAlbum.SetMetadata(); コンテナへのアクセス権 コンテナへのアクセス //コンテナへのアクセス権を設定 var permissions = cntNewAlbum.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; cntNewAlbum.SetPermissions(permissions); VSUG DAY 2009.12.5
  • Blobの利用例 //Blobの書き込みの例 の みの例 CloudBlob blbNewImage = cntAlbum.GetBlobReference(“blobname”); にデータを //Blobにデータを読み込む blbNewImage.UploadFile(“C:¥images¥newpicture.jpg”); のメタデータを //Blobのメタデータを設定 写真1 blbNewImage.Metadata[“description”] = HttpUtility.UrlEncode(“写真1”); 写真 blbNewImage.SetMetadata(); //Blob読み出しの例 読 しの例 CloudBlob blbPicture = cntBlobs.GetBlobReference(“blobname”); //メタデータを読み出す前にFetchAttributesを実行しておく メタデータを メタデータ を実行しておく blbPicture.FetchAttributes(); //メタデータの読出し メタデータの メタデータ 読出し string description = HttpUtility.UrlDecode(blbPicture.Metadata["description“]); VSUG DAY 2009.12.5
  • Blob使用時の注意事項 • メタデータはHTTPヘッダの一部として受渡 – そのままでは日本語が通りません! – URLエンコードするなどして対応 • コンテナ名は小文字英数字で! – コンテナ名がそのままサブフォルダ名に VSUG DAY 2009.12.5
  • demo Blobを使ったアプリケーションの例 写真共有サイトの構築 VSUG DAY 2009.12.5
  • 図5 アカウント テーブル エンティティ Name=…has h=… users Name=…has h=… Sakai Tag=…id= photoindex … http://<アカウント>.table.core.windows.net/<テーブル名> VSUG DAY 2009.12.5
  • 図6 プロパティ 必須 <Name, TypedValue> ペアが保 存 Partition Key Row Key Property 3 ….. Property n Document Version Modification Description Name Time 異なるプロパティの組み 合わせでもよい 福利厚生Doc V1.0 3/21/2007 ….. 2007年度 福利厚生Doc V1.0.6 9/28/2007 2008年度用 酒井作成中 勤怠Doc V1.0 3/28/2007 2007年度 勤怠Doc V1.0.1 7/6/2007 2008年度用 砂洲作成中 スキーマを持たない 255個以内のプロパティ VSUG DAY 2009.12.5
  • Tableストレージの使い方 • ADO .NET Data Servicesを利用 – Context:TableServiceContextを継承 – Entity:TableServiceEntityを継承 • 利用するプロパティの一覧を定義 • PartitionKeyとRowKeyはTableServiceEntity内で 定義済 • クエリはLINQを利用 VSUG DAY 2009.12.5
  • Tableの定義例 public class EvaluationsDataServiceContext : TableServiceContext { public EvaluationsDataServiceContext(CloudStorageAccount accountInfo) : base(accountInfo.BlobEndpoint.ToString(),accountInfo.Credentials) { } public IQueryable<EvaluationsRow> EvaluationsTable { get { return this.CreateQuery<EvaluationsRow>(“Evaluations”); } } } VSUG DAY 2009.12.5
  • Tableの定義例 public class EvaluationsRow : TableServiceEntity { public EvaluationsRow() : base() { } public EvaluationsRow(string EventID, string ID, string Title) { PartitionKey = EventID; RowKey = ID; EvalID = ID; EvalTitle = Title; EvalExp = DateTime.Today + new TimeSpan(90, 0, 0, 0, 0); } public string EvalID { get; set; } public string EvalTitle { get; set; } public DateTime EvalExp { get; set; } } VSUG DAY 2009.12.5
  • Tableの利用例 CloudStorageAccount strg_account; CloudTableClient strg_Table; strg_account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString“); strg_Table = strg_account.CreateCloudTableClient(); TableServiceContext svc = strg_Table.GetDataServiceContext(); var query = svc.CreateQuery<EvaluationsRow>("EvaluationsTable“).Select(c => c); VSUG DAY 2009.12.5
  • demo Table&Queueを使った アプリケーションの例 セッションアンケートサイトの例 VSUG DAY 2009.12.5
  • 既存のASP .NETからの移行 • 移行は簡単 – SQL Serverを利用している場合→SQL Azure • 既存のASP.NETプロジェクトをAzure化 • 空(ロールなし)のCloud Serviceプロジェクトを作成 • 既存のASP .NETプロジェクトをソリューションに追加 • パッケージの”Roles”にASP.NETを関連付け VSUG DAY 2009.12.5
  • demo 既存ASP .NETアプリケーションの Azure化 VSUG DAY 2009.12.5
  • 注意事項 • ASP .NETの.NET Frameworkバージョンは3.5SP1 – 他のバージョンで実行されている場合は3.5SP1に変更 • このままでは完全なAzureアプリではない – プロジェクトにMicrosoft.WindowsAzureライブラリを参照設定 – WebRole.cs(or.vb)を追加し、以下のイベントハンドラを実装 • OnStart • RoleEnvironmentChanging VSUG DAY 2009.12.5
  • WebRoleの利用例 using System.Linq; using Microsoft.WindowsAzure.Diagnostics; using Microsoft.WindowsAzure.ServiceRuntime; namespace WebRole1 { public class WebRole : RoleEntryPoint { public override bool OnStart() { DiagnosticMonitor.Start(“DiagnosticsConnectionString”); RoleEnvironment.Changing += RoleEnvironmentChanging; return base.OnStart(); } private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) { if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)) { e.Cancel = true; } ... VSUG DAY 2009.12.5
  • AppFabricの利用 の VSUG DAY 2009.12.5
  • AppFabricの概要 • Windows Azureはエンタープライズクラウド – エンタープライズ顧客が利用することを前提 – 他のクラウドにはない高信頼性が要求される – オンプレミスとクラウドのシームレスな連携 – 適材適所にサービスを配置 • AppFabricはエンタープライズ向けサービス – サービスバスによる安全なサービス連携 – アクセスコントロールによるシングルサインオン – キャッシュによるデータアクセス高速化(予定) – WF4ベースのワークフロー(予定) – WCFサービスのホスティング(予定) VSUG DAY 2009.12.5
  • AppFabricのアーキテクチャ アクセス ネーミング コントロール サービスバス サービスレジストリ サービス メッセージング 内製 クライアント オンプレミス ESB MS/3rd パーティー サービス サービス ESB Desktop, デスクトップ RIA, Web RIA Web VSUG DAY 2009.12.5
  • サービスバスによるサービス連携 sb://servicebus.windows.net/services/solution/a/b/ バックエンドの ネーミング・ ルーティング ③ルーティング ファブリック ①登録 サービスバス フロントエンド ノード NLB ① 接続 TCP/SSL TCP/SSL 双 808/828 828 ⽅ cp 向 t.t ア ne ウ ト ド バ ウン ウ ン トバ ド ソ アウ ケ ③メッセージ ッ ③メッセージ ⽅向 ト 接 ②⼀ 続 NAT クライアント ファイアウォール サービス Dynamic IP VSUG DAY 2009.12.5
  • AppFabricサービスバスメッセージング • プログラミング モデル – 専用の WCF バインディングを提供 お勧め!! VSUG DAY 2009.12.5
  • AppFabricの開発環境 • AppFabric(.NET Services) SDK – Nov. ‘09CTPが最新 • JavaおよびRubyからも利用可能 – Java:AppFabric SDK for Java Developers – Ruby: AppFabric SDK for Ruby Developers • Windows Azure SDKは必須ではない – オンプレミス内のサービスであれば、不要 VSUG DAY 2009.12.5
  • demo サービスバスサンプルの実行 VSUG DAY 2009.12.5
  • まとめ • Windows Azure Platformはエンタープライズ向け – Windows Azure – AppFabric – SQL Azure • ロールベースのアーキテクチャモデル – WebロールとWorkerロール – 疎結合モデル • 3種のストレージ – Blob, Table, Queue • サービスバスによるサービス連携 – 安全なサービスの公開を実現 VSUG DAY 2009.12.5
  • 参考文献/URL Microsoftの クラウドコンピューティング • Windows Azure入門 – アスキーメディアワークス刊 – 定価:2,730円 • Windows Azureポータル – http://azure.com/ • Windows Azure Platformデベロッパーセンター – http://msdn.microsoft.com/ja-jp/azure/default.aspx • Twitterタグ:#Azure • Tatsuaki Sakai’s Blog – http://ameblo.jp/louisville0919/ VSUG DAY 2009.12.5