書籍転載
|
|
|
■Azure AppFabric経由のサービスアクセス(クラウド環境)
サービスバスにサービスが登録(公開)できたところで、続いてサービスにアクセスするためのクライアントアプリケーションを作成しましょう。先述したように、今回はオンプレミス(AppFabricOnPremiseプロジェクト)で公開したサービスに対して、クラウド環境(CloudUIロール)からアクセスすることにします。
ということで、以降の操作はこれまで利用してきたCloudUIロールプロジェクトに対して行うようにしてください。
●[1]参照を追加する
Azure AppFabric、WCFサービス、Entity Frameworkを利用するために、[参照の追加]ダイアログから、
- Microsoft.ServiceBus.dll(Azure AppFabric)
- System.ServiceModelアセンブリ(WCFサービス)
- System.Data.Entity、System.Runtime.serialization、System.Security(Entity Framework)
への参照を追加しておきます。Microsoft.ServiceBus.dllは、「C:\Program Files\Windows Azure platform AppFabric SDK\V1.0\Assemblies\NET4.0」フォルダの配下に含まれています。また、Microsoft.ServiceBusアセンブリは、プロパティウィンドウから[ローカルコピー]をTrueに設定し、パッケージファイルにコピーされるようにしておきます*75。
*75 現時点で、Azure環境にはMicrosoft.ServiceBus.dllが用意されていないためです。この設定を行っておかないと、クラウド環境で実行した時に例外が発生します。 |
図6-46:ローカルコピーを有効化 |
●[2]サービスコントラクト/データモデルを追加する*76
前項で作成したサービスコントラクト(IBookService.cs/IBookService.vb)をServicesフォルダに、データモデル(MyDB.Designer.cs)をModelsフォルダに、それぞれ追加します*77。
*76 Visual Basicプロジェクトでは、代わりにAppFabricOnPremiseプロジェクトの「/bin/AppFabricOnPremise.dll」に対する参照を追加してください。 |
*77 Servicesフォルダはあらかじめ作成しておいてください。 |
既存のファイルをプロジェクトに追加するには、対応するフォルダを右クリックし、表示されたコンテキストメニューから[追加]−[既存の項目...]を指定します。
図6-47:[既存項目の追加]ダイアログ |
[既存項目の追加]ダイアログでファイルを選択した後、[追加]−[リンクとして追加]ボタンをクリックしてください。ファイルそのものを追加しても構いませんが、サービス(AppFabricOnPremiseプロジェクト)でコントラクト/データモデルに変更があった場合にも、リンクとして追加しておけば、変更がそのまま反映されますので便利です。
●[3]Azure AppFabric/WCFサービスのクライアント情報を定義する
Azure AppFabricサービスバスを介してWCFサービスにアクセスするため、アプリケーション構成ファイル(Web.config)に対して、Azure AppFabricの基本情報、そして、WCFサービスを利用するための定義情報を追加します。
|
|
リスト6-36 Azure AppFabric/WCFサービスの定義情報(Web.config) |
<appSettings>要素は、リスト6-34と同じです。
<system.serviceModel>−<client>要素は、クライアントアプリケーションから接続可能なエンドポイントの一覧を定義します。ここでは最低限、<endpoint>要素に表6-19の属性を追加しておきましょう。
属性 | 概要 |
name | エンドポイント名(識別のための任意の名前) |
binding | バインディングの種類 |
contract | 使用するサービスコントラクト(「名前空間.インターフェイス名」の形式) |
表6-19 <endpoint>要素の属性 |
contract属性の値は、サービス側での設定値と対応関係にある必要があります。binding属性も本来は、サービス側と一致している必要があるのですが、現在、Azure環境でnetTcpRelayBindingが認識できないようです。ここでは仮にnetTcpBindingをセットし、あとからアプリケーション側で改めてバインディング設定を行います。
●[4]ページをデザインする
サービス利用の準備ができたところで、クライアントアプリケーションのユーザインターフェイスを作成します。以下は、新規に作成したAppFabricClient.aspxのフォームレイアウトと、サーバコントロールのプロパティ設定です。
図6-48:AppFabricClient.aspxのフォームレイアウト |
コントロール | プロパティ | 設定値 |
DropDownList(ddlPublish) | AutoPostBack | True |
Items | 秀和システム/翔泳社/日経BPソフトプレス/インプレスジャパン | |
GridView(gridBook) | (オートフォーマット) | シンプル |
表6-20 AppFabricClient.aspxのプロパティ設定 |
●[5]サービスにアクセスする
最後に、Azure AppFabric経由でサービスにアクセスするためのコードを記述します。
|
||
リスト6-37 サービスバスへのアクセス(上:AppFabricClient.aspx.cs、下:AppFabricClient.aspx.vb) |
リスト6-37の内容は、ほとんどがこれまでの復習です。特にの内容はサービス側と同一のコードで記述できますので、迷うところはないでしょう。
の部分も「Chapter 4 Windows Azure ストレージ - テーブル/キュー/ドライブ編 -」の「補足:内部エンドポイントによるロール間通信」(※今回の転載では割愛)で解説した内容がほとんどそのままです。ただし、チャネルファクトリの作成方法が異なります(
)。
|
|
構文 ChannelFactory<TChannel>クラス(コンストラクタ) | |
config:エンドポイントの設定名 address:エンドポイントのアドレス |
エンドポイントの名前は、先ほどアプリケーション構成ファイルで設定した名前(ここではFabricEndpoint)と対応関係にある必要があります。
また、作成したチャネルファクトリに対して、Endpoint.Bindingプロパティでバインディングの設定を*78、Endpoint.Behaviors.Addメソッドで資格情報を関連付けておきます。
*78 これは、先ほど手順[3]で保留にしておいた設定です。 |
チャネルファクトリが準備できてしまえば、あとはサービスで定義済みのGetBookInfoByPublishメソッドを呼び出し、その結果をGridViewコントロールにバインドするだけです。
●[6]サービス/クライアントの動作を確認する
以上で、サービス/クライアント双方の開発は完了です。サービス(AppFabricOnPremiseプロジェクト)→クライアント(CloudUIロール)の順で起動し、図6-41のような結果が得られることを確認してください。
■
書籍『Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP』の部分転載は今回で最終回です。@ITで公開した部分は、「目次情報ページ」の各リンクから参照できます。
INDEX | ||
[書籍転載]Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP | ||
Windows Azure Platform AppFabricによるオンプレミス−クラウド連携 | ||
1.サービスの実装と公開(オンプレミス環境)(1) | ||
2.サービスの実装と公開(オンプレミス環境)(2) | ||
3.Azure AppFabric経由のサービスアクセス(クラウド環境) | ||
「Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|