SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Azure StorageとAzure SDKを使ってWindows Azureクラウドサービスアプリケーションを作成する

基本的な加算マシンをクラウドで構築し、アプリケーションの機能を理解する

Windows Azureアプリケーションを作成する

 Azureプロジェクトを扱う場合は、Visual Studioを常に管理者として起動する習慣を身につける必要があります。Azure tools for VSに同梱されているAzureの開発ファブリック(Development Fabric)と開発ストレージ(Development Storage)では、アプリケーションのデバッグの際に管理者権限を必要とします。開発ファブリックと開発ストレージは、ローカルで動作する、ユーザー独自の小さなクラウドのようなものだと考えることができます。

 Azure tools for VSをインストールすると、Visual Studioに、1つのテンプレートを含む「Cloud Service」という新しいプロジェクトタイプが追加されます。通常の新規プロジェクトの作成時と同様に、プロジェクトに名前を付けます。ここではプロジェクト名を、「MyCouldService」とします。

図1.1 新しいCloud Service
図1.1 新しいCloud Service

 [OK]をクリックすると、Visual Studioはウィザードインターフェースを起動します。このウィザードインターフェースを使って、以下のRoleをCloud Serviceプロジェクトに追加できます。

Role Description
ASP.NET Web Role A basic ASP.NET project type. Anything that runs in a standard IIS ASP.NET web site should work in Azure.
Worker Role Similar to a Windows service. Once deployed to Azure it is started andis only stopped when required.
CGI Web Role Allows any FastCGI application,like PHP,to be run in Azure.

 追加したRoleごとに、Visual Studio Solution Explorerにそれぞれ別個のプロジェクトファイルが作成されます。[OK]をクリックする前に、各Roleの名前の右にある鉛筆アイコンをクリックすることで、Role名を変更できます。これは、異なる機能を実行する複数のWeb RoleWorker Roleが存在する場合に便利です。

図1.2 Cloud ServiceのRoleを作成し、名前を付ける
図1.2 Cloud ServiceのRoleを作成し、名前を付ける

 [OK]をクリックしてウィザードを終了します。[Solution Explorer]ウィンドウを見ると、ウィザードで追加した2つのRoleプロジェクトの他に、3つ目のプロジェクトがあることに気付くでしょう。どのCloud Serviceソリューションにも、ServiceDefinitionとServiceConfirmationという2つのファイルを含む、3つ目のプロジェクトが追加されます。これらのファイルは、Azureが起動する各Roleのインスタンス数や、Azureストレージ設定などを制御するものです。

 今回は、AzureのTableストレージとQueueストレージを使用するつもりなので、ServiceDefinitionとServiceConfirmationの両方のファイルを開き、それぞれに以下のコードを追加します。

ServiceDefinition.csdef
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="MyAppWebRole" enableNativeCodeExecution="false">
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
    <ConfigurationSettings>
      <Setting name="AccountName" />
      <Setting name="AccountSharedKey" />
      <Setting name="QueueStorageEndpoint" />
      <Setting name="TableStorageEndpoint" />
    </ConfigurationSettings>
  </WebRole>
  <WorkerRole name="MyAppWorkerRole" enableNativeCodeExecution="false">
    <ConfigurationSettings>
      <Setting name="AccountName" />
      <Setting name="AccountSharedKey" />
      <Setting name="QueueStorageEndpoint" />
      <Setting name="TableStorageEndpoint" />
    </ConfigurationSettings>
  </WorkerRole>
</ServiceDefinition>
ServiceConfiguration.cscfg
<?xml version="1.0"?>
<ServiceConfiguration serviceName="MyCloudService"
     xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
  <Role name="MyAppWebRole">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="AccountName" value="devstoreaccount1" />
      <Setting name="AccountSharedKey"
value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
      <Setting name="QueueStorageEndpoint" value="http://127.0.0.1:10001" />
      <Setting name="TableStorageEndpoint" value="http://127.0.0.1:10002" />
    </ConfigurationSettings>
  </Role>
  <Role name="MyAppWorkerRole">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="AccountName" value="devstoreaccount1" />
      <Setting name="AccountSharedKey"
value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
      <Setting name="QueueStorageEndpoint" value="http://127.0.0.1:10001" />
      <Setting name="TableStorageEndpoint" value="http://127.0.0.1:10002" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

 開発環境では、AccountNameAccountSharedKeyの値は、上で示した値に固定されます(開発環境を使用する場合は、この名前とキーを使用する必要があります)。これにより、Azure Storageに対してデータをアクセスしたり保存したりする際の認証コードをテストできます。

 コードの中のエンドポイントの値は、開発環境のためのものです。開発環境のAzureストレージのエンドポイントを確認するには、アプリケーションをデバッグし、システムトレイにある[Development Storage]管理ウィンドウを開きます。開発ストレージを初めて起動する場合は、開発ストレージのテーブルがまだ作成されていないため、Tableサービスは停止しています。開発ストレージのテーブルは、後のステップで作成します。

図1.3 開発ストレージを初めて起動した様子
図1.3 開発ストレージを初めて起動した様子

 「Default.aspx」に、2つの数値を入力するための2つのテキストボックス、数値を加算するための1つのボタン、さらに取得キーを表示するための1つのラベルを追加します。次に、計算値を取得するためのテキストボックスとボタンを1つずつ、さらに計算値を表示するためのラベルを1つ追加します。各ボタンに対し、クリックイベントハンドラを作成します。図1.4に、すべてのコントロールをレイアウトし、ラベルを配置したフォームを示します。

図1.4 各種コントロールを配置したASP.NETフォーム
図1.4 各種コントロールを配置したASP.NETフォーム

 以上で、アプリケーションの初期設定を終え、Azure Storageのアカウント情報を設定し、ユーザーインターフェースのレイアウトを作成できました。以下では、Azure Storageを利用して、クラウドサービスのロール間でやり取りを行う部分を追加します。

次のページ
Windows Azure Storage

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Matt Goebel(Matt Goebel)

インディアナ州インディアナポリスにあるAP Innovation, Incの創設者兼社長。同氏への連絡は、859-802-7591またはmatt.goebel@apinnovation.comまでどうぞ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4705 2010/01/08 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー