ついに、 Azure Mobile Services のサーバーサイドで .NET がサポートされました!!!!!!111
Xamarinによるクライアントサイドがプラットフォーム問わずに C# で書けるようになったのになぜかサーバーサイドは Node.js のままだったわけですが、本日のアップデートでついに.NETで記述できるようになりました。MobileServices も含めての本日のアップデート一覧は安心と信頼のこちらでどうぞ。
とりあえず、.NET でやる方法も上の記事を参考にしてもらえればいいかと思います。で、サンプルおよび初期用としてダウンロードできるプロジェクトなんですが、DBアクセスには Microsoft Recommendedな Entity Framework が使われています。が、ここはあえて謎社で使われている dapper という軽量ORMを使ってみたいと思います。*1
それでは、まずControllerを追加してみましょう。 Cotrollers フォルダ以下に最初からある TodoItemController は TableController
UserDeviceQuery というのが Dapperを使ったクエリを行うクラスでこれから作成します。また、[RequiresAuthorization(AuthorizationLevel.Anonymous)] は認証なしでアクセス可能にするために必要です。何も属性つけないと、Mobile ServiceのAplicationKey を知っているユーザーとしてのアクセスが必要になります。
で、肝心のDapperを使ってクエリを投げることにします。まず、Nuget から「Dapper dot net」を追加します。そして次のようなクラスを作成します。
UserDevice クラスはDBのテーブルと対応するPOCOです。で、 UserDeviceQuery でとりあえず全件取得するクエリを発行しています。「MS_TableConnectionString」という名前の接続文字列はデフォルトで設定される接続文字列の名前です。
さて、Dapperを使う場合、DBのテーブルはあらかじめ作成しておく必要があります。EntityFrameworkのCodeFirstによるテーブル作成・変更は使えません*3。今までのNode.jsで作成した場合は Azure Portalからテーブル変更ができたのですが、.NET版だとなくなっているので、直接SQL Serverに接続して作業します。今回は Visual Studioのサーバーエクスプローラーから接続します。
SQLデータベースを右クリックして、SQL Server オブジェクト エクスプローラーで開きます。ここからテーブルを作るわけですが、今回はすでに作ってあるMobile Servicesのテーブル定義をもとに作成しました。以下にSQL文を載せておきます。(
ついでに数件データを追加しておきましょう。
これで準備完了です。ポータルのページから発行プロファイルをダウンロードしてVisual Studioから発行します。
発行するとこんなトップページが表示されます。かっこいいですね。
で、追加したAPIにアクセスすると、データを取得できます。
おそらくMobileServicesの推奨はEntityFrameworkで、今後も便利メソッドなどの提供があると思われますが、お好きなテクノロジを使ってDBアクセスすることができそうです。C# で書けるようになったことでもっと別の処理もお手軽に記述できるようになったので引き続き調べていこうと思います。