クラウドを利用したwindows ストアアプリ開発 ~ windows azure と連携する ~
DESCRIPTION
TRANSCRIPT
クラウドを利用したWindows ストアアプリ開発~ Windows Azure と連携する ~
日本マイクロソフト株式会社デベロッパー&プラットフォーム統括本部クライアントテクノロジー推進部エバンジェリスト 大西 彰 (@oniak3)[email protected]
http://aka.ms/wsazuredev
デバイスとサービスを組み合わせる
Windows Azure を知る
シナリオ別の実装方法を知る
Agenda
デバイスとサービスを組み合わせる
インターネット、グローバル利用の視点で考える
4 億Email アカウント
約 3 億接続ユーザー
4,800 万
サブスクライバー
200+サービス
24時間 / 7 日稼働
300 PByteBing データ
2.5 億アカウント
約 5,000 万Office Web Apps
ユーザー
55 億サーチ数 / 月
マイクロソフトが提供しているサービスマイクロソフトが提供しているサービス
クライアントサーバー型の考え方
クライアントからの要求に対して、
何らかのサービスを提供する側のアプリ
そもそも、サーバーって?
クライアント・サーバー型の構成
非同期通信の世界
時刻 t0
時刻 t1
リクエスト
レスポンス処理時間
クライアントとサーバーのデータ交換
時刻 t0
時刻 t1
リクエスト 文字列
レスポンス 文字列処理時間
JSON や XML
サービスにつながらない状況
デバイス&サービスこれからの考え方
・常時接続とは限らない
モバイルにおけるタブレット利用
・直接データベースに接続しない
サービスアプリを経由して通信
・文字列でデータ交換
XML :型を明確にするJSON :型を緩やかにする
ちょっと前までとは違った視点で開発
Windows Azure を知る
Windows Azure
世界規模のクラウド基盤サーバー/ ネットワーク/ データセンター
北米4カ所、ヨーロッパ2カ所、アジア2カ所、日本2カ所豪州2カ所 + CDN 24 カ所
高度な自動化
統合リソース管理
柔軟性
従量課金
ネットワーク
仮想ネットワーク
トラフィックマネージャー
コンピューティング
仮想マシン
クラウドサービス
Webサイト
モバイルサービス
開発言語
キャッシュ メディア CDN データ分析HPC 統合ID サービスバス
アプリケーション
バックアップ
データ管理
SQLデータベース ビックデータ テーブル BLOB
シナリオ別の実装方法を知る
代表的なシナリオ
シナリオ ストアアプリ側 クラウド側
Web ページの表示 WebView Web サイト
RSS / ATOM フィード SyndicationClient Web サイト上のブログ
画像、音楽、ビデオ Image, MediaElement Azure ストレージ
軽量なデータアクセス MobileServiceClient モバイルサービス
軽量なデバイスへの通知 MobileServiceClient モバイルサービス
REST サービスの呼出 HttpClient クラウドサービス
WCF サービスの呼出 サービス参照 クラウドサービス
<WebView x:Name="myWebView" />
myWebView.Navigate(new Uri("http://8store.azurewebsites.net"));
Web ページの表示
Navigate
LoadCompleted
RSS / ATOM フィード
async void LoadFeed()
{
var client = new SyndicationClient();var uri = new Uri("http://8store.azurewebsites.net/?feed=rss2");var feed = await client.RetrieveFeedAsync(uri);
}
await client.RetrieveFeedAsync
SyndicationFeed feed
画像
<Image Source=
"https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/onia3-beer.jpg" />
Source
画像の読み込みは非同期
画像のダウンロード
async void DownloadImage()
{
var client = new HttpClient();
var uri = new Uri("https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/onia3-beer.jpg");
var stream = await client.GetBufferAsync(uri);
var destination = Path.GetFileName(uri.LocalPath);
StorageFile file =
await KnownFolders.PicturesLibrary.CreateFileAsync(destination, CreationCollisionOption.GenerateUniqueName);
await FileIO.WriteBufferAsync(file, stream);
}
GetBufferAsync
音楽・ビデオの再生
<MediaElement x:Name="myME" AreTransportControlsEnabled="True" Width="640" Height="400"
Source="https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/Windows81intro.mp4"/>
Source
軽量なデータアクセス
public class TodoItem
{
public int Id { get; set; }
public string Text { get; set; }
public bool Complete { get; set; }
}
async void SaveData()
{
var newItem = new TodoItem {
Text = string.Format("{0} > Developer Camp デモ",
System.DateTime.Now.ToString("hh:mm:ss")) };
await App.MbClient.GetTable<TodoItem>().InsertAsync(newItem);
}
GetTable<TodoItem>().InsertAsync
MbClient はモバイルサービスのクライアント
軽量なデバイスへの通知Node.js サーバー側
クライアント側
async Task<string> GetFromWebAPI()
{
var client = new HttpClient();
var uri = new Uri("http://aka.ms/boyacatalog2");
return await client.GetStringAsync(uri);
}
REST サービスの呼び出し
GetStringAsync
string
async Task<string> PostMyMessage(string message)
{
ServiceReference1.MyServiceClient client =
new ServiceReference1.MyServiceClient();
var echo = await client.EchoAsync(message);
return echo;
}
WCF サービスの呼び出し
EchoAsync
string
デバイス&サービス考え方の一例
デバイス上でサービスのマッシュアップ
<Windows Azure Web サイト>商品サービス
ASP.NET Web API
<Windows Azure Web サイト>注文モニタ
ASP.NET SignalR
<Windows Azure モバイルサービス>注文サービス
TodoItemテーブル
通信
読み
書き
デバイス&サービス、これからの開発
デバイスアプリ
Windowsストア、Xamarin
Visual Studio(共通プラットフォーム/共通スキルで開発)
バックエンドサービス
WindowsAzureモバイルサービスなど
構築アプリ
活用サービス
開発ツール
マルチデバイス クラウド
オーダー
オーダー
オーダー
基幹システム
社内システム
リアルタイム/バッチ連携
パッケージ
クラウドを利用したWindows ストアアプリ
・非同期呼び出し
・仕事用も遊び用も
・グローバルリーチ