メッセージ中継の方式
それでは、具体的な連携方式について解説していきます。AppFabricサービスバスは、WCFをベースとした技術であるため、バインディングと呼ばれるいくつかのサービス提供方法(通信プロトコル)が用意されています(表1)。WCFに詳しい方なら、WCFのバイディングに対し「Relay」が付加されていることに気づくと思われますが、まさにこの「Relay」がサービスバスを中継してやりとりすることを表しているのです。
| リレーバインディング | WCF標準バインディングとの対応 | 概要 |
| NetOnewayRelayBinding | なし | 片方向 |
| NetEventRelayBinding | なし | 片方向マルチキャスト |
| NetTcpRelayBinding | NetTcpBinding | Tcp |
| BasicHttpRelayBinding | BasicHttpBinding | WS-I Basic Profile 1.1 |
| WebHttpRelayBinding | WebHttpBinding | RESTベース |
| WSHttpRelayBinding | WSHttpBinding | WS-*ベース |
| WS2007HttpRelayBinding | WS2007HttpBinding | WSHttpの拡張版 |
NetOnewayRelayBinding/NetEventRelayBindingバインディングは、WCFには用意されていないバインディングです。片方向メッセージや同報メッセージを扱うことができます。NetTcpRelayBindingは、相互運用が必要でない.NET Framework同士での連携に適しています。
Httpを含む各バインディングは、Webベースの標準的なプロトコルをサポートします。.NET以外との相互運用をする場合には、利用するプロトコルに応じてバインディングを選択できます。
これ以外にも、AppFabricサービスバス独自のREST APIベースで利用できるMessageBuffer、Queue、Topicといった機能も用意されていますが、これらについては省略します。
サービスバスの準備
サンプルプログラムの説明に先立って、AppFabricサービスバスの管理について説明します。AppFabricサービスバスの管理は、通常のWindows Azureと同じく「管理ポータル」から行います。
管理ポータルを開き、[サービスバス、アクセス制御、キャッシュ]を選択すると、AppFabricのツリーが表示されます(図2)。ツリーから、[サービスバス]を選択すると、AppFabricサービスバスの管理画面になります。
サービス名前空間の作成
AppFabricサービスバスを利用するためには、サービス名前空間(Service Namespace)を作成する必要があります。サービス名前空間は、他のAppFabricサービスであるアクセス制御、キャッシュと共用することもできますが、ここではAppFabricサービスバス専用の名前空間を作成してみましょう。
リボンから[新規作成]ボタンをクリックします。サービス名前空間の作成ダイアログが表示されます(図3)。
- 利用可能なサービスから、[サービスバス]をチェックします。
- 全般プロパティの[名前空間]に、利用したい名前を入力します。この名前はAzureサービスで一意である必要があります。[使用可能かどうかの確認]ボタンをクリックして、「利用可能」と表示されれば問題ありません。また、[国/地域]からはAppFabricサービスバスを配置する場所を選択します。
- [サービスバス-接続パックサイズ]からは、接続パック数(注2)を選択します。契約プランによっては、無料で利用できる接続パックがあります。ここでは、「0接続」を選択しますが、利用しているプランを確認して選択してください。
[名前空間の作成]ボタンをクリックし、しばらくして状態欄が「アクティブ」になれば作成完了です。
接続パック数の詳細は、Windows Azure AppFabricのFAQを参照してください。
また、サービス名前空間の削除は、リボンの[削除]ボタンをクリックすることで削除できます。検証が完了しサービス名前空間が不要になった場合には、サービス名前空間を削除してください。
AppFabric SDKのインストール
AppFabricサービスの利用には、Windows Azure SDKとは別に、Windows Azure AppFabric SDKが必要です。現在、並行して以下の2つのバージョンのSDKが提供されています。
最新のSDK 1.5はサービスバスが提供するすべての機能を利用できますが、.NET Framework 4向けのアセンブリのみの提供です。.NET Framework 3.5からサービスバスを利用したい場合は、SDK 1.0を利用する必要がありますが、新規に追加されたQueue/Topicといった機能が利用できません。
上記のURLからは、32bitと64bit環境向けのインストーラがダウンロードできます。お使いの環境に合わせてインストールしてください。
サービスバスの構成設定
最新のSDK 1.5から、インストール時にサービスバスの設定が、マシン構成ファイル(Machine.config)(注3)に対して行われなくなりました。これにより、SDK 1.0までは特別な設定をしなくても動作していたプログラムが、SDK 1.5から動作しない場合があります。SDK1.5の場合は、あらかじめ以下のいずれかの方法を実施しておく必要があります。
マシン構成ファイルとは、OS全体の構成設定に利用されるコンフィグファイルです。通常は、「%SYSTEMROOT%systemroot\Microsoft .NET\Framework\バージョン\CONFIG\Machine.config」に格納されています。
[1]RelayConfigurationInstallerの実行
サービスバスのインストールフォルダに、RelayConfigurationInstaller.exeが格納されています。管理者権限で実行することにより、必要な設定がマシン構成ファイルに対して行われます。64bitの開発環境を利用している場合は、32bitモード向けの構成変更も必要となるため、32bit向けの実行ファイルも併せて実行してください。
[2]アプリケーション構成ファイルにサービスバスの設定を追加
SDK 1.5からは、アプリケーション構成ファイルにサービスバスの設定が可能になりました。以下のURLからサービスバスの定義をアプリケーション構成ファイルにコピーすることで、サービスバスの構成設定が可能です。
上記URLから、リスト1のextension要素全体をコピーし、アプリケーション構成ファイルのsystem.ServiceModel要素に追加してください。
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="connectionStatusBehavior" ... />
<add name="transportClientEndpointBehavior" ... />
….
</extension>
</ystem.serviceModel>
また、AppFabricサービスバスのアセンブリは、「C:\Program Files\Windows Azure AppFabric SDK\V1.5\Assemblies\NET4.0」にインストールされます。AppFabricサービスバスを利用してプログラムするためには、ここの格納された「Microsoft.ServiceBus.dll」を参照設定してください。
本稿では、AppFabric SDK 1.5を使用し、[2]の方法でサービスバスの構成設定を行っています。SDK 1.0を利用する場合には、特にこれらの設定をしなくても特に必要ありません。


