2008年11月22日土曜日

Windows Azureで遊ぼう

とりあえずWebRoleでWebアプリケーションを作ってみたい。
Workerでごにょごにょするのも楽しそうだけどまずはWeb。
で、もちろんWebFormsじゃなくてASP.NET MVCでしょ!


Azure Services Platform

開発に必要なファイル類をダウンロードします。
Resources - Developer SDKs | Azure Services Platform
↑ここからね。

1.Windows Azure SDK。
2.Windows Azure Tools for Visual Studio

いろいろあるけど上記2つがあれば先に進めるよ。
.NET Services SDK(Account Control/Workflow/Service Busを試すときに使う)とSQL Data Services SDK(SDSのみ試したい時に使う)は使わないからほっとこう。
もちろんVisual Studio 2008とASP.NET MVC ベータ/SQL Server Expressは入れてあるって前提でね。
Azure SDKに開発に必要なAzure仮想環境がローカルに構築されます。なので、これが無いと開発できましぇん。Tools for VSが無いとテンプレートとか入らないし、たぶんファブリックとストレージを起動してくれないんだと思われる。入れてない環境で試さない安全主義!


img.aspx

↑これが仮想実行環境。Development Fabric。

img.aspx2

で、↑これが仮想ストレージ環境。Development Storage。
もちろんこれだけでもAzure上の開発は出来るんだけど、これじゃMVCにならないのでさらに追加でダウンロードするものが一つ。

Cloudy in Seattle : ASP.Net MVC on Windows Azure with Providers

↑ここで説明があるけど、MVCCloudServiceっていうテンプレートプロジェクトをダウンロード。

ASP.Net MVC Windows Azure Cloud Service – Home

で、このソリューションを開発を始めるタメのテンプレートに使います(簡単だね)。
ただし、Azure SDKに入ってるsamplesへのプロジェクトが2つあるので、その二つは手動でソリューションに追加しましょう。

対象になるプロジェクトはAspProviders/StorageClientの2つ。
AspProvidersがあればMembershipやSession、RolesのストレージにAzureのストレージが使えるようになるんだけど、その中でStorageClientを使うので(自分で書くプログラムでもね)、この2つは必須。
LINQ to SQLを使ってSqlServerにアクセスしないで、このStorageClientライブラリを使ってAzure上のStorageにアクセスするからね。LINQは使えるから安心だべ~!!

img.aspx3

img.aspx4

ほら、ちゃんと動く。
試しに"takehara"っていうユーザーを登録してみて、データベースを確認してみる。

img.aspx5

ServiceHostingSDKSampleデータベースのMembershipテーブルにユーザーが入ってるね~。あ、Profileがないな。まぁ、いいか。
AspProvidersがこのデータベースを使ってくれます。
Blob/Table/Queueはここじゃなくて、DevelopmentStorageDbっていう名前のデータベース。
ワクワクしてくるね~。

あ、Azureって何?ってことになる人もいるかもしれないけど、そこんところは他のサイトで色々説明があるから検索してみてね。簡単に言うとMicrosoft版Google App Engineね。簡単じゃね~よ!
で、データを保存する場所というか機能としてBlob/Table/Queueの3種類があるんだけど、このうちQueueはWorkerとの連携に使ったりするような簡易メッセージング機能なので今回はスルー。
BlobっていうのがファイルストレージでTableっていうのがデータベース。でもリレーショナルじゃないからSQL Serverみたいな感じで使えると思うと大間違いな設計になっちゃうので気をつけましょう(だってそうじゃないとスケールアウトも出来ないっしょ)。


Table にはStorageClientからアクセスするんだけど、なぜならRESTで自分でコード書くのが面倒だからだね。Blobにアクセスするときもそうだけど基本RESTで(CRUDはPOST/GET/PUT/DELETE)。SOAPもあるんだっけ?まぁ、いいや。

あと一つ、これはあった方がいいっていうツールがあります。

CodePlex.SpaceBlock – Home

これ、何する物かっていうとAzure Blobへのファイル操作を行う物。

img.aspx6

これがないとどうなるかっていうと...。PowerShell上でのコマンド処理ですから!
出来ない分けじゃないけど、面倒だしね。
ちなみにこのツールはAmazon S3にも使える優れものです。
ここまでで、だいたい準備完了。

これだけあれば開発出来るよ。
1.Azure SDKでローカルに仮想環境構築。
2.Tools for VSでVS統合。
3.MVCCloudServiceでASP.NET MVCテンプレートを準備。
4.SpaceBlockでBlobストレージへのGUIアクセス。

OK?

で、これだけだとAzure上にデプロイできません。ので、Azureを使えるようにアカウントを登録しないといけないのでレッツトライ。つか、最初にこれしとかないと...。
早速AzureサイトにアクセスしてSign inします。が、ここで悲しいお知らせが。

img.aspx7

Invitation Code(Resource Token ID)ていうのがメールで送られてこないと先に進めない...。
ぬかった。

Inviteをもらわないといけなかったのか。
そうだったのか。
と、いうわけで、現時点では実際にデプロイは出来ないってことになりまして...。
どうも、すいませんね。期待させちゃって。てへ。
これをcscfgファイル(AccountSharedKey)や、SpaceBlock(Access Key)に設定しとかないと、Azureにアクセス出来ないから面白くないんで、続きはInvite来たらってことで。