Windows Azure – 技術者でつなぐ日めくりカレンダー の 2/27 の記事です。
Windows Azureの日本データセンタがオープンしました。
東日本と西日本の2か所でDRも組める、つまり、日本国内だけで完結する世界的なパブリッククラウドとなったわけです。
しかし、すべての機能が日本のデータセンタで提供されている訳ではありません。
http://www.windowsazure.com/en-us/regions/?fb=ja-jp#services
東日本 | 西日本 | |
Cloud Services | ○ | ○ |
Mobile Services | ||
Virtual Machines | ○ | ○ |
Web Sites | ○ | ○ |
Active Directory | ○ | ○ |
Cache | ○ | ○ |
HDInsight | ||
Recovery Services | ||
SQL Database | ○ | ○ |
Storage | ○ | ○ |
BizTalk Servies | ||
Media Services | ○ | |
Multi-Factor Authentication | ○ | ○ |
Notification Hubs | ||
Scheduler | ||
Service Bus | ○ | ○ |
Visual Studio Online | ||
ExpressRoute | ||
Traffic Manager | ○ | ○ |
Virtual Network | ○ | ○ |
残念ながら、Mobile Services、Notification Hubsなどは日本リージョンではまだ提供されていません。
そこで、ないのなら作るのが開発者ということで、
日本リージョンにMobile Services(らしきもの)を作ってみましょう。
とはいえ本当につくるとなると大変なのであるものを使って作れないか試してみたいと思います。
その「あるもの」とは……………………
バックエンドを.NETとしたときのMobile Serviceです。
バックエンドを「.NET」とした場合、WindowsストアアプリのサンプルプロジェクトをダウンロードするとWindowsストアアプリプロジェクトとASP.NET Web APIプロジェクトが含まれたソリューションが入手できます。
このASP.NET Web APIプロジェクトをデプロイするときは、管理ポータルの該当Mobile Serviceから発行プロファイルを入手してデプロイ先が該当Mobile Servieになるように調整します。
勘の良い人ならもうわかったと思います。
発行先をWebsitesにしちゃったら日本リージョンにこのASP.NET Web APIプロジェクトがデプロイできるかも。
ということで早速やってみましょう。
ソリューションエクスプローラでASP.NET Web APIのプロジェクトを右クリックして[発行]メニューを選択します。すると[Webを発行]ダイアログが表示されます。
ここで[インポート]ボタンをクリックします。
[発行の設定のインポート]ダイアログがでます。
Webサイトが既にあればドロップダウンにでてきますが、なければ[新規]ボタンを押してWebサイトを作りましょう。
新規にWebサイトを作る場合、サイト名、場所、データベースサーバーなどが選択できます。
サイト名は、Mobile Serviceと同じ「dotNETBackend」にしてみましょう。もちろん、後半は「azure-mobile.net」ではなく「azurewebsites.net」になるので、(運よく誰もWebサイトで使ってなければ)Mobile Serviceのサブドメインと同じ名前は付けられます。
また、Mobile Serviceの場合、サイトとデータベースサーバーは同じ場所である必要がありましたが、Webサイトであればデータベースサーバーは別の場所でもOKなので、Webサイトは東日本にしておいて、データベースサーバーはMobile Serviceを作成した時に指定した(今回の例では東アジア)データベースサーバーを指定してみましょう。
これで、Mobile Serviesとは別の発行プロファイルができあがりました。
この発行プロファイルを使って発行を行えば、URLはWebsitesなのに表示はMobile Servieという画面が表示されます。
この時、指定したデータベースサーバーには既存データベースとは別に「dotNETBackend859」というデータベース作成されて、そこに接続するように設定されます。
次に、ストアアプリのApp.xaml.csの中にある接続先設定を「https://dotnetbackend.azure-mobile.net/」から「http://dotnetbackend.azurewebsites.net/」に変更してから実行してみます。
残念ながらうまく動きませんでした。
どうやらアクセス権のようですが、どうやって解決しましょ。
そこでふと気になったのがASP.NET Web APIプロジェクトのWeb.configにある次の2行です。
<add key="MS_MasterKey" value="Overriden by portal settings" /> <add key="MS_ApplicationKey" value="Overriden by portal settings" />
つまり管理ポータルにこの2行で定義されているKeyを定義し、Mobile Serviceにあるキー値を設定してあげたらいいのではないかと。
この設定をしてから、ストアアプリから実行すると……
無事動かすことに成功しました!
まとめ
- バックエンドが.NETのAzure Mobile Serviceを作成する
- サンプルプログラムをダウンロードする
- サンプルのASP.NET Web APIプロジェクトの発行先を変更する
- 管理ポータルのWebサイトの構成で、マスターキーとアプリケーションキーを設定する
- WindowsストアアプリのApp.xaml.csで接続先をWebサイトのURLに切り替える
それでは!
#このエントリは「Windows Azure アドベントカレンダー」への参加エントリです。