【T2-310補足2】BizTalk と Windows Azure の連携
環境 :
BizTalk Server 2009
Visual Studio 2008 SP1
WCF LOB Adapter SDK SP2
.NET Services SDK (July 2009 CTP)
こんにちは。
つぎは、失敗した S + S のデモの補足です。オオトリのデモで失敗すると悲惨な結果になる (セッション全体が無意味なものに思える。。。) という教訓を本日学びました。。。 (失敗した理由は、Relay バインディングのポートが空いていなかったことが原因でした。すみませんでした。。。)
デモで使用していた WCF のアダプターは、以下から入手できます。(方法を下記に記載します)
CodePlex : BizTalk Azure Adapters SDK (CTP)
http://btsazureadapters.codeplex.com/
なお、上記は現在、64 bit 版しか配布されていませんが、使用しているセットアッププロジェクト (インストーラプロジェクト) が64 bit 版になっているだけですので、セットアッププロジェクトの処理を 32 bit 対応 (カスタム動作のソースコードの変更、など) にすると 32 bit 環境でもちゃんと動作します。 ソースコードもすべて公開されていますので、そのまま鵜呑みにしてしまうのではなく、本日セッションで紹介したテクノロジの理解をベースに中身 (ソースコード) の接続方法を理解しておくと良いでしょう。(実運用でいろいろと応用も効きます。ソースコードでは、本日説明した WCF LOB Adapter SDK を使用したアダプターを使用しています。)
上記で、ソースコード (BizTalk Azure Adapters SDK 1.0 CTP - July 2009) をダウンロードして unzip すると、以下のフォルダが展開されます。
[ディレクトリ構成]
- BizTalk ISB Adapter (.NET Services のサービスバスと接続するアダプタと、それを使ったサンプルです。)
- Cloud Services (BizTalk プロジェクト, .NET Services に登録するサービス, ホストプログラムのそれぞれのサンプルが入っています)
- End (ISBアダプター本体のソースコードと、そのインストーラが含まれます)
- Install
- BizTalk LiveMesh Adapter (同様に LiveMesh 用のアダプターなどが含まれます。今回は省略します。。。)
- Referenced Assemblies (上記のプロジェクトで参照している dll が入っています。ビルドで必要になります。)
Visual Studio で BizTalk ISB Adapter\End\End.sln を開くと、今回使用するすべてのプロジェクトが参照できます。
- まず、使用するプロジェクトの構成を記載します。
- CloudServices\ISBServiceTester
サービスバス (.NET Services) に登録されるサービスとホストプログラムのサンプルです
- CloudServices\BizTalkClient
BizTalk プロジェクトのサンプルです
- ISBAdapter
ISBアダプターそのものです
- Setup\ISBAdapterSetupCustomAction
ISBアダプターのインストーラで実行されるカスタムアクションです。この中で、%windir%\Microsoft.NET\Framework64 下の machine.config への書き換えなどをおこなっていますので (本日セッションでご説明した、machine.config へのバインディング構成の追加です)、32 bit 環境では、ここのソースなどを書き換える必要があります。
- Setup\ISBAdapterSetup
セットアッププロジェクトです
- 上記で、ソースコード (BizTalk Azure Adapters SDK 1.0 CTP - July 2009) を展開した際の Referenced Assemblies フォルダで使用されている dll のバージョンに注意してください。例えば、私の環境では、.NET Services SDK の July 2009 CTP を使用しているため、Referenced Assemblies\Microsoft.ServiceBus.dll を自分の環境にあわせて入れ替えました。 (GAC 内のアセンブリとバージョンをそろえておきましょう。)
- セットアッププロジェクト (Setup\ISBAdapterSetup) をリビルドし、ビルドで作成された setup.exe を実行すると、本日ご説明した WCF LOB Adapter の dll の GAC 登録や、サービスバス接続用のバインディングが (machine.config に) 登録されます。
- CloudServices\ISBServiceTester の Program.cs に、.NET Services に接続するための SolutionName, Password が記載されていますので、これを皆さんの (.NEt Services の) アカウントに変更してください。
- CloudServices\BizTalkClient をリビルドし、配置してください。ただし、配置前にプロジェクトのプロパティで、展開先を (皆さんの) 環境にあわせて変更しておきましょう。
- 展開した BizTalkClient のバインドを構成します。バインドは、上記の展開したフォルダのInstall\Bindings\TechReady9.HOL.ISBAdapter.xml に入っていますので、これをインポートすれば OK です。(ただし、アプリケーション名として TechReady9.HOL.ISBAdapter という名前が使用されていますので、アプリケーション名を変えてしまった方は、こうした文字列も変更してからインポートする必要があります。)
- オーケストレーションのバインド構成で、今回は、送信ポートを [Send Message to Cloud]、受信ポートを [Receive Message from File System] に設定しましょう。

- 送信ポートの [Send Message to Cloud] のプロパティで、以下を変更しておきましょう。
- [資格情報] として、.NET Services のソリューション名とパスワードを設定します。
- [Assembly] として、Cloud Services\TestClient\bin\Debug\Microsoft.Azure.Samples.ISBServiceTester.exe (のフルパス) を設定します。

- 受信ポートの [Receive Message from File System] の受信場所のプロパティを存在するフォルダに変更しておきましょう。

上記でプロジェクトの準備は完了です。
ISBServiceTester (.NET Services の WCF サービス) を起動して、上記で配置した BizTalk アプリケーションを開始しておきます。(受信用のディレクトリが Polling されます。)
上記の受信用のディレクトリに、何でも構いませんので作成した XML ファイルを置くと、ポーリング時間を経過した際に BizTalk がサブスクライブし、.NET Services に記述内容が通知されます。
なお、ISBServiceTester のソースコードでは、Cloud Services (.NET Services) への Receive と Send の双方が可能なように構成されていますので、多少複雑なソースコードになっている点に注意してください。。。
デモでは、SharePoint との連携のパターンも用意していましたが、これもまた出来ずに (時間がなく)、まったくお伝えしたかったポイントをお話できませんでした。SharePoint との連携については、以前、下記に掲載しましたのでご参照ください。(度々、すみません。。。)
SharePoint と BizTalk の連携 :
http://blogs.msdn.com/tsmatsuz/archive/2008/04/30/sharepoint-biztalk-1.aspx
このセッション後半で述べたかったポイントは以下です。
SharePoint のワークフロー、BizTalk のオーケストレーション、さらに .NET Services (Azure) にもワークフローサービスなどもありますが、それぞれは似た手法が重複して提供されているのではなく、目的 (用途や、アーキテクチャ上の位置づけ) が異なるという点を理解しておくことが重要です。
上記は非常に些細なサンプルですが、例えば、LiveMesh を経由して外 (取引先、派遣先、など) から登録されたデータを元に社内のオーケストレーションを稼働させるケースや、逆に、企業内で回覧され、Fix された内容を外に出して関係先 (外の企業) に情報を回覧するケース、あるいは、SharePoint で部門内で承認された情報をもとに企業内(エンタープライズ) の部門間で処理を連携させるケースなど、さまざまな組み合わせがあります。部門内やヒューマンワークフローで活躍する SharePoint と、社内の (部門を超えた) エンタープライズレベルでのオーケストレーション、外 (クラウド上) の関係者 (関係組織) 同士を連携する ISB (Internet Service Bus) としてのワークフローサービス (.NET Services) など、それぞれを適材適所に組み合わせて全体を構成しますが、WCF は、こうした全体の「系」の中で、セッションでご説明したWCFならではの特徴を生かした「道具」として利用される ( = WCF 自体が何かを解決するわけではない) という点を理解しておいてください。
WCF の特徴とメリットを理解し、「だから、ここで、こんな役割で使われているのかぁ」 という点を理解しておくことが重要です。(例えば、ADO.NET Data Services の内部でも使用されています。) WCF は、システム全体を構成する上で欠かせない「道具」です。