この記事は機械翻訳されたものです。
Windows Azure の内側
Windows 8 と Windows Azure: クラウドに向かう動き (機械翻訳)
Bruno Terkaly
Ricardo Villalobos
今日のソフトウェア開発者魅力的な Windows ストア アプリケーションを作成するクラウド技術を採用する必要があります少しの質問です-膨大な数のユーザーおよびデバイスのことは非常に簡単。 地球の人口の 3 分の 1 以上は、インターネットに接続されている、今より多くのデバイスの人々 よりもオンライン リソースへのアクセスします。 さらに、モバイル データのトラフィック 2.3-fold の 2011 年の 4 年連続で 2 倍以上増加しました。 どのように見ても、非常に単純な結論と終了します。現代のアプリケーションをクラウドに接続が必要です。
価値命題のクラウドコンピューティングは、説得力があります。 ほとんどのオブザーバーは、オンデマンドのスケーラビリティとあなただけ何をクラウドを導入する原動力として使用のために支払うことにポイントします。 しかし、クラウドは実際にいくつか複数の接続されているデバイスの世界では不可欠な技術を提供します。 Windows ストアのアプリケーションのユーザーは、多くのアプリケーションと複数のデバイスを使用する可能性が高いデータが位置できるように期待します。 彼らは Windows Phone デバイス上のデータを保存する場合、また、錠剤または iOS と Android のデバイスを含むその他のデバイスにすぐに利用できるはずです。
Windows Azure マイクロソフトのパブリック クラウド プラットフォームは、バック エンドの最大のグローバルなリーチと最も包括的なサービスを提供しています。 自動 OS とサービスに対して修正を提供する複数の OS 言語、データベース、ツール オプションの使用をサポートしています。 基盤となるネットワーク インフラストラクチャでは、自動ロード ・ バランシングとハードウェア障害に対する弾力性を提供しています。 最後に、Windows Azure 開発者はアプリケーションのダウンタイムなしにアップグレードすることができます配置モデルをサポートします。
この記事で示す Web サービス アプリケーションは、ほんの数分でマイクロソフトのグローバル クラウド データ センターの 1 つ以上ホストできます。 To do リスト アプリケーション、ゲーム、またはさえビジネス ラインの会計アプリケーションを構築しているかどうか、どちらか完全にまたは時折接続クライアントに依存するシナリオをサポートするには、この記事のテクニックを活用することが可能です。
何を学びます。
まず、我々 が実行されているデバイスの種類に関係なく、非同期のクライアントをサポートする Windows Azure のクラウドでホストされる単純なサービスを構築する方法について説明します — 電話、スレート、タブレット、ラップトップまたはデスクトップ。 その後は Web サービスにデータを取得するには、Windows ストア アプリケーションから呼び出すことがいかに簡単かを紹介します。
一般的に言えば、データを Windows ストア アプリケーションに、その方法をすることができます 2 つの方法があります。 この記事「プル アプローチ」アプリケーションが実行されている必要がありますし、データ要求が HTTP Web 呼び出し経由で発行されるデータを取得するに焦点を当てます。 オープン標準 (HTTP、JSON は、具象的な状態を転送 [残り]) とほとんどに通常プル アプローチを活用 — すべてではない —の異なるベンダーからのデバイスの種類は、それの利点を取ることができます。
この記事での「プッシュ アプローチ」をカバーすること。 この方法で Windows をプッシュ通知サービス (クラウドでホストされるサービスの Windows ストア アプリケーションに不要なデータを送信することができます WNS)、依存しています。 このようなアプリケーションはフォア グラウンドで実行する必要はありません、メッセージの配信の保証はありません。 WNS の使用についてを参照してください bit.ly/RSXomc。
2 つのプロジェクト
完全なソリューションは、2 つの主要なコンポーネントが必要です。サーバー側または Web サービス プロジェクト (社内展開のことができるまたは Windows Azure) と新しい Windows UI をベース Windows ストア アプリケーションで構成されるクライアント側プロジェクト。 両方のプロジェクトは、Visual Studio 2012 を作成できます。
基本的には、Web サービス プロジェクトを構築するための 2 つのオプションがあります。Windows 通信基盤 (WCF) または ASP.NET MVC 4 に含まれている ASP.NET Web API は。 WCF 経由でサービスを公開するが広く記載されているため、このシナリオで我々 真 (Uri と動詞) の HTTP 概念を包含して、テーブルには、ASP.NET Web API をもたらしますより現代的なアプローチを使用します。 また、このフレームワークは、要求/応答ヘッダーおよびハイパー メディア構造などのより高度な HTTP 機能を使用するサービスを作成できます。
両方のプロジェクトを単一のマシンには開発中にテストできます。 ソリューション全体をダウンロードすることができます archive.msdn.microsoft.com/mag201210AzureInsider。
あなたが必要
最も明白な開始点は、Windows 8 が必要とのプロジェクトでダウンロードできる Visual Studio の最新リリースを使用して作成することは驚きとなるはずです bit.ly/win8devtools。
サーバー側のプロジェクトのための必要なアセンブリと Visual Studio 内からクラウド プロジェクトを作成するためのツールが含まれています最新 Windows Azure SDK、必要があります。 この SDK とに関連する工具をダウンロードすることができます bit.ly/NlB5OB。 また、Windows Azure アカウント必要があります。 無料試用版ダウンロード bit.ly/azuretestdrive。
歴史的に、SOAP Web サービスを設計する使用されています。 しかし、この記事 REST スタイルのアーキテクチャに焦点を当てます。 一言で言えば、残りの部分を使用する方が簡単ですより小さいペイロードを運ぶ、特別な工具は必要ありません。
開発者は Web サービスを構築するときもデータ交換の形式を選択する必要があります。 その選択は一般的に、JSON と XML 間です。 JSON は JavaScript 言語に基づいたコンパクトなデータ形式を使用します。 それははるかに小さい文法とクライアント アプリケーションで使用されるデータ構造に直接マップを持っているのでそれ頻繁に XML を「無料の脂肪代替」として呼ばれます。 我々 は我々 のサンプルの JSON データを使用します。
作られて、これらの決定を私たち私たちの Web サービスを作成する準備が整いました。 私たちの目標は、広範なブラウザーやモバイル デバイスなどのクライアントに達すると、HTTP ベースのサービスを構築することです。
Web サービスの構築
管理者として Visual Studio 2012 を起動してから始めましょう。 ここで ASP.NET MVC 4 Web API を使用して、サーバー側の Web サービスを作成する手順は次のとおりです。
- [ファイル] メニューをクリックし、新規作成 |プロジェクト (を参照してください図 1)。
- Visual c# を選択 |Web テンプレートの種類の。
- .NET Framework 4 の上部にあるドロップダウンを選択します。
- ASP.NET MVC 4 Web アプリケーションを選択します。
- 名前の web サービスとのあなたの選択の場所を入力します。
- [OK] をクリックします。
- ウィザード プロジェクトのテンプレートを選択する要求されます。 Web API を選択してに示すように、ビュー エンジンです (既定値) のかみそりを必ず図 2。
- さまざまなファイルは、Visual Studio によって生成されます。 これが圧倒的なことができますが、我々 のファイルのカップルについて心配するに示すようにだけ図 3。
.png)
図 1 新しいプロジェクト] ダイアログ ボックス
.png)
図 2 プロジェクト テンプレート] ダイアログ ボックス
.png)
図 3 ソリューション エクスプ ローラーの web サービス
Windows 8 クライアントは Web サービスに対して HTTP 要求を送信するときに実行されるコードが含まれているために、ValuesController.cs は重要です。 これは Windows ストア アプリケーションで必要な JSON データを返すコードを追加しますです。 示す ValuesController クラス、 図 4、Visual Studio によって生成される、それ ApiController は、シリアル化を JSON 形式で自動的にクライアントに送信されるデータを返しますから継承します。
図 4 ValuesController クラス
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
注意のメソッド図 4— 取得、投稿、置く、削除 — マップに固有の作成、読み取り、更新、および削除 (CRUD) 操作および Windows ストア アプリケーションによって実行される HTTP 動詞。 これは ASP.NET Web API フレームワークの美しさです。それは潜在的なプログラミングのミスを最小限に抑え、ValuesController クラスで定義されているメソッドに直接のクライアントによって使用される HTTP 動詞に自動的にルーティングします。
ボックスのうち、web サービス プロジェクトを実行する準備ができてです。 ValuesController クラスのメソッドは、自己文書化です。
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
Get メソッドは、HTTP 動詞 Get の URL http://localhost:[port]/api/values を使用してクライアントに発行するときに呼び出されます。 このデモのためコードに基づいて Web サービスから返された色の同心円を描画します。 上記のコードは、次のように変更します。
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "#0000FF", "#000000", "#FF0000",
"#FFFF00", "#00FF00" };
}
ご覧のとおり、我々 今、様々 な色の文字列の配列を返します。 作成する Windows ストア アプリケーションは着色された同心円として具体的には、実際の色としてこれらの文字列をレンダリングします。
ブラウザーによるテスト
Windows ストア アプリケーションを作成する前に、Web サービスをテストするをお勧めします。 あなたのような任意のブラウザーを使用します。
ブラウザーから Web サービスをテストするには、次の手順に従います。
- Visual Studio で [デバッグ] メニューをクリックし、[デバッグ開始] を選択します。
- 示すように既定の開始ページを参照する必要があります図 5。
- Visual Studio がこの場合 58428、任意のポートを選択することに注意してください。 Visual Studio のインスタンスが使用するポートが異なります。
- リコールするので、我々 は、Get メソッドは、(我々 の場合) の最終的な URL を http://localhost:58428/api/values する必要があることを意味呼び出されるので、「api の値」を URL に追加する必要があります。 Visual Studio プロジェクトを作成するとき、これは組み込みの機能です。 あなたのニーズに合わせてこのマッピングを変更できます。
- Visual Studio のアドレス バーに行くで http://localhost:58428/api/values を入力します。 ポート番号は独自の値で置き換えてください。
- ようなダイアログ ボックスが表示されます図 6。
- 保存をクリックし、メモ帳で values.json を開きます。
- 返される値は、メモ帳が表示されます。 注意してください図 7 返される、データを自動的に JSON 形式では、ASP.NET Web API フレームワークの礼儀です。
.png)
図 5 インターネット エクスプ ローラーを使用して Web サービスをテストするには
.png)
図 6 インターネット エクスプ ローラー] ダイアログ ボックス
.png)
図 7 Web サービスによって返される JSON データ
Windows は、8 を入力します。
我々 は、JSON データを Web サービスから返すの成功した今 Windows ストア アプリケーションからこのデータを使用する方法を見てみましょう。 目標は、色を読み取り、Web サービスから、Web サービスによって返される値に基づいて同心円を描くことです。 私たちの最終的な Windows ストア アプリケーションのようなイメージを生成する必要があります図 8。 カラーは、Web サービスによって定義されています。 返される色の Web サービスを変更した場合、Windows ストア アプリケーションではそれらの色を反映するあなたが見る同心円としてだろう図 8。
.png)
図 8 実行中の Windows ストア アプリケーション
Web サービス プロジェクトと同じソリューションに Windows ストア アプリケーションを作成することもできます。 または特に Windows 8 クライアント用の Visual Studio の新しいインスタンスを開始できます。 我々 Windows ストア アプリケーションを管理者として Visual Studio の新しいインスタンスを始めます。 これを行うには、これらの手順を実行します (を参照してください図 9)。
.png)
図 9 新しいプロジェクト] ダイアログ ボックス
- 2 番目のインスタンスの Visual Studio を管理者として起動します。
- [ファイル] メニューをクリックし、新規作成 |プロジェクト。
- Visual c# を選択 |テンプレートの種類の Windows ストア。
- .NET Framework 4 の上部にあるドロップダウンを選択します。
- 空白のアプリケーション (XAML) を選択します。
- 名前 Windows8Client とお好みの場所を入力します。
- [OK] をクリックします。
これらの手順を完了したら、[表示] メニューに移動し、ソリューション エクスプ ローラーを選択 (を参照してください図 10)、MainPage.xaml.cs ファイルを開きます。
.png)
図 10 ソリューション エクスプ ローラーの Windows8Client
Web サービスを呼び出す
我々 から Windows ストア アプリケーションに Web サービスを呼び出すコードを追加する準備が整いました。 Windows ストア アプリケーションは、Web サービスに対する Web 要求を発行します。
Web 要求をサポートするには、MainPage.xaml.cs がとおり変更されます。
- Loaded イベントは組み込みのグリッド コントロールに追加されます。
- Loaded イベントは、Web サービスの呼び出しには、非同期 Web 要求を提出します。 HttpClient のクラスは、この目的のため使用されます。
- 色の文字列から Web サービスを実際の色に変換するには、CircleColorFromString と呼ばれるメソッドが追加されます。
- 同心円の円を描画するには、AddCircle というメソッドを追加します。
Web サービスに対する Web 要求を発行するには、次の手順を実行します。
- MainPage.xaml を右クリックし、ビュー デザイナーを選択します。
- 次のように、GridLoadedEvent と Canvas コントロールを追加 (キャンバスは、我々 は円を描画しますです)。
<Grid Name="maingrid"
Background="{StaticResource
ApplicationPageBackgroundThemeBrush}"
Loaded="GridLoadedEvent">
<Canvas Name="myCanvas" Background="White"/>
</Grid>
- 3. ダブルクリック MainPage.xaml.cs。 MainPage.xaml.cs の分離コードが表示されます。
- 4 コードで追加する必要が異なる名前空間をサポートするには、MainPage.xaml.cs の上部に次の参照が含まれます。
using System.Net.Http; // for HttpClient()
using Windows.Data.Json; // for parsing JSON Array data
using Windows.UI.Xaml.Shapes; // for the Ellipse object
using Windows.UI // for the Color class
- 5、円を描画し、Web サービスによって送信される JSON 文字列データを解析するサポートのルーチンを追加します。 MainPage.xaml.cs のコードに示すように編集図 11。
図 11 MainPage.xaml.cs
public sealed partial class MainPage : Page
{
// [ Generated code omitted for brevity ]
private void AddCircle(Color color, int diameter, int t, int l)
{
//
// Build a circle using the attributes provided as parameters.
//
Ellipse newColoredCircle = new Ellipse();
newColoredCircle.Fill = new SolidColorBrush(color);
newColoredCircle.StrokeThickness = 1;
newColoredCircle.Stroke = new SolidColorBrush(color);
newColoredCircle.Width = diameter;
newColoredCircle.Height = diameter;
//
// Add the circle to the Canvas control.
//
myCanvas.Children.Add(newColoredCircle);
Canvas.SetTop(newColoredCircle, t);
Canvas.SetLeft(newColoredCircle, l);
}
Color CircleColorFromString(string rgb)
{
//
// Convert the string-based hex values
// into a Color object and return to caller.
//
Color ringColor = new Color();
byte a = 255;
byte r = (byte)(Convert.ToUInt32(rgb.Substring(1, 2), 16));
byte g = (byte)(Convert.ToUInt32(rgb.Substring(3, 2), 16));
byte b = (byte)(Convert.ToUInt32(rgb.Substring(5, 2), 16));
ringColor = Color.FromArgb(a, r, g, b);
return ringColor;
}
private async void GridLoadedEvent(object sender,
RoutedEventArgs e)
{
//
// Retrieve colors from Web service.
//
var client = new HttpClient();
client.MaxResponseContentBufferSize = 1024 * 1024;
//
// Asynchronously call into the Web service.
//
var response = await client.GetAsync(
new Uri("http://localhost:58428/api/values"));
var result = await response.Content.ReadAsStringAsync();
//
// Parse the JSON data
//
var parsedResults = JsonArray.Parse(result);
//
// Build concentric circles, repeating colors as needed
//
const double startingPercentage = 1.0;
const double desiredCircleCount = 50.0;
for (int i = 0; i < desiredCircleCount; i++)
{
Color circleColor = CircleColorFromString(
parsedResults[i % parsedResults.Count].GetString());
int circleDiameter = Convert.ToInt32((startingPercentage –
(i / desiredCircleCount)) * this.RenderSize.Width / 2.0);
int top = Convert.ToInt32((this.RenderSize.Height -
circleDiameter)/2.0);
int left = Convert.ToInt32((this.RenderSize.Width -
circleDiameter)/2.0);
AddCircle(circleColor, circleDiameter, top, left);
}
}
}
今は非常に簡単です、アプリケーションをテストします。
- Visual Studio で web サービス プロジェクトに戻り、[デバッグ] メニューの [デバッグ開始] を選択します。
- ブラウザー起動ことを確認します。 Windows8Client アプリケーションを起動する準備が整いました。
- Windows8Client プロジェクトに Visual Studio に戻り、[デバッグ] メニューの [デバッグ開始] を選択します。
- Windows ストア アプリケーションが表示されたらのようにを確認図 8。
Web サービスを Windows Azure に展開します。
Web サービスを作成ローカルでテストすると、次の論理ステップはスケーラビリティのためのクラウドに展開することです。 これは、Web サービスに割り当てられた計算容量を変化することができます — とそのコスト — として Windows 8 のデバイスからの要求の数が増加または減少します。 Visual Studio プロジェクト ASP.NET Web API を Windows Azure に展開するさまざまな方法で提供、クラウド サービス プロジェクトに Web サービス ソリューションを追加する唯一の前提条件であります。 次の手順に従います。
- ソリューション名を右クリックし、[追加] を選択します |新しいプロジェクト。
- Visual c# を選択 |プロジェクト テンプレートとしてクラウド (図 12)。
- .NET Framework 4 の上部にあるドロップダウンを選択します。
- Windows Azure のクラウド サービス Visual c# を選択します。
- 名前 WindowsAzureCloudService とお好みの場所を入力します。
- [OK] をクリックします。
- ソリューション エクスプ ローラーに今戻る。 ソリューションに新しいプロジェクトを見つけるし、[ロール] ノードを右クリックします。 [追加 |Web ロール プロジェクト。
- 以前に作成した web サービス プロジェクトを見つけます。 それを選択し、[ok] をクリックします。
- 今、[ロール] ノードの下に示すように記載されている web サービス プロジェクトを参照してくださいする必要があります図 13。
- それどこでそれをホストするつもりは、仮想マシン (VM) のサイズなどの Windows Azure に展開する前に web サービスの役割のためのさまざまな展開パラメーターとそれをサポートするインスタンスの数を変更できます。 これらのパラメーターを確認するには、ロール web サービス ノードを右クリックし、プロパティを選択します。 ダイアログ ボックスのような図 14 が表示されます。 インスタンスの数と役割を展開した後は、使用量を決定する VM サイズ パラメーターに特別な注意を払います。 Windows Azure コンピューティング インスタンスについては価格設定の詳細についてを参照してください bit.ly/SnLj68。
- Windows の右クリックAzureCloudService プロジェクトとパッケージを選択します。 サービスとビルド構成パラメーターで、デフォルトの選択を維持し、[パッケージ] ボタンをクリックします。 このアクションは、2 つのファイルを生成します。WindowsAzureCloudService.cspkg と ServiceConfiguration.Cloud.cscfg、ポータル経由で Windows Azure のクラウド サービスを作成する必要があります。 プロジェクトは Visual Studio から直接展開できますが、我々 はこのアプローチをここでカバーされません注意してください。
- ログインを Windows Azure アカウントに URL を開く manage.windowsazure.comでの指示に従って bit.ly/R15VNj 新しいクラウド サービスの作成とアップロードする 2 つの生成されたファイル。
- クラウド サービスを使用して名前によっては、新しい ASP.NET Web API は http://{cloudservicename}.cloudapp で利用可能になります。 net/api/値。
- Windows ストア アプリケーションこの URL をポイントして完了します。
.png)
図 12 Web サービス ソリューションをクラウド サービス プロジェクトの追加
.png)
図 13 WebService プロジェクトをクラウド サービスの役割に追加します。
.png)
図 14 Windows Azure 展開プロパティの web サービスの役割
クラウドで
ASP.NET の Web API を使用して、非同期的にコマンドの残りの部分を消費して、Web サービス経由でデータを取り込むのために使用するアプリケーションをサポートするためには非常に簡単です。 Visual Studio 2012 .NET フレームワーク 4.5 に含まれるライブラリ、Web サービスに対する非同期 Web 要求を発行する非常に単純なものです。 最後に、統合開発環境と Windows Azure のクラウドにサービス部分を迅速に展開する開発者できます、クラウド活用の拡張性と世界中のインフラストラクチャ機能を提供します。
Bruno Terkaly マイクロソフト デベロッパー エバンジェ リストです。 彼の深い知識は、多数のプラットフォーム、言語、フレームワーク、SDK、ライブラリ、および API を使用してコードを作成し、現場で長年の経験を積むことで得られたものです。コードの作成、ブログ、クラウド ベースのアプリケーション構築 (特に、Windows Azure プラットフォームの使用) に関するライブ プレゼンテーションに携わっています。
Ricardo Villalobos は、経験豊かなソフトウェア アーキテクトとして、サプライ チェーン管理業界の企業用アプリケーションを 15 年以上にわたって設計および作成しています。ダラス大学から経営管理修士の学位と同様にいくつかの技術認定資格を持って、彼はマイクロソフトのクラウド アーキテクトで Windows Azure CSV インキュベーション グループとして動作します。
この記事のレビュー、次技術専門家のおかげで:Robert Green