がりらぼ

WindowsRuntimeの応援ブログ

WindowsAzureでモバイルバックエンドを簡単につくる

WindowsAzureMobileServicesを使えば通常ならば難しいモバイルアプリケーションのサーバーサイドを簡単に実装することができます。

主にAPISQLデータベース、プッシュ通知などを簡単にじっそうできます。

ちょうど、アルパカ牧場のオンラインランキングを作ろうとおもっていたので今回はSQLデータベースを構築して、Windowsストアアプリと接続してみます。

※WindowsAzureMobileServiceはおそらくお金がかかると思います。従量課金制ですが、その力は強力なので運用コストを計算して、最適なプランを選んでください。

WindowsAzure管理ポータル

WindowsAzure管理ポータルにアクセスします、。ここではAzureの初期登録などはすませてあることを前提に進めます。

モバイルサービス→新規→作成 をします。

サーバーの名前や、地域など適当にせっていします。

1

データベース名やログインID、パスワードも適当に設定します。

2

ここまでできたら、Azureがサーバーの作成作業に入り、サーバーが構成されるとおもいます。

たったこれだけで、初期設定やセキュリティ設定など不要に、サーバーを作成できます。さすがクラウドですね!

4

作成したサーバーをクリックすると、このようなダッシュボードに入ります。

実はここに書いてあることをすべてするだけで、モバイルバックエンドは簡単に実装できちゃいます。

今回はWindowsストアアプリなので選択し、既存のWindowsストアアプリに接続するを展開します。

5

ここにかいてあることをコピペするだけでサーバーと接続できちゃいます。

上記の画像のコードをApp.csの適当なところに追加します。

しかし、windowsストアアプリの場合、Nugetで公開されているWindowsAzureMobileSericeのライブラリをインストールするひつようがあります。※これをインストールするためには、VisualStudio2012Update3が必要です。

6

Update3はいっているなら、Nugetからインストールします。

これでMobileServiceClientクラスを利用できます。

続いて、データベースのテーブル作成に移ります。

MobileServiceのサーバー上に作成したテーブル名、列と、C#コード側のクラス、プロパティはそれぞれ一致させる必要があります。

7

作成したサーバーのデータタブからテーブルを追加できます。

今回の場合、テーブル名は「onlinedata」としました。

初期状態でID列ができています。今回の場合、TwitterScreenName(string型)と牧場レベル(int型)を保存したいのでそれらの列を作成するひつようがあります。

しかし、AzureMobileServiceはC#クラス側でそれらのプロパティを作成しておくと、接続してinsertしたときに自動的に列を作成してくれます。

というわけでC#側でonlinedataクラスを作ります。

[csharp]

public class OnlineData

{

public int Id { get; set; }

public string Name { get; set; }

public int Level{get;set;}

public OnlineData(string name,int level)

{

this.Name = name;

this.Level = level;

}

}

[/csharp]

int型のIDプロパティは絶対です。あとはすきなプロパティを作成しておけば列として生成されます。 あとはこのようなコードで接続が可能です。

[csharp]

OnlineData data = new OnlineData(textID.Text, level);

await App.MobileService.GetTable<OnlineData>().InsertAsync(data);

[/csharp]

ちなみにNameプロパティが同一の場合上書きという処理はこうなります。

[csharp]</pre>

OnlineData data = new OnlineData(textID.Text, level);

var i = await App.MobileService.GetTable<OnlineData>().Where(p => p.Name == name).ToListAsync();

if (i.Count == 0)

{

await App.MobileService.GetTable<OnlineData>().InsertAsync(data);

}

else

{

data.Id = i.Single().Id;

await App.MobileService.GetTable<OnlineData>().UpdateAsync(data);

}

<pre>[/csharp]

これだけでSQLにデータが追加されています。 8 こんな簡単にモバイルバックエンドが作成できるなんてほんとにAzureはすごい!!!