チュートリアル:WCF-NetMsmq アダプターを使用した WCF サービスの公開
Note
アダプターの詳細については、「BizTalk Serverのアダプター」を参照してください。
はじめに
BizTalk Serverでは、オーケストレーションを Windows Communication Foundation (WCF) サービスとして発行できます。 BizTalk 受信場所を通じて、オーケストレーションは WCF エンドポイントを公開できます。これにより、WCF クライアントから呼び出すことができます。 BizTalk WCF サービス発行ウィザードでは、オーケストレーションを受信場所として簡単に公開できます。
WCF-NetMsmq アダプターは 、NetMsmqBinding バインドを 使用して、基になるトランスポートとして Microsoft メッセージ キュー (MSMQ とも呼ばれます) を使用するためのサポートを提供します。 WCF サービスのクライアントは、WCF-NetMSMQ アダプターを使用するように構成された受信場所を使用して、WCF メッセージを MSMQ キューに送信します。 アダプターは、MSMQ キューから WCF メッセージを取得し、BizTalk Server形式に変換して、BizTalk Server MessageBox データベースに書き込みます。
このチュートリアルでは、WCF クライアント コンソール アプリケーションが WCF-NetMsmq アダプターを使用して、MSMQ メッセージ キューを介して .NET コンソール アプリケーションでホストされている WCF サービスと通信する方法について説明します。 BizTalk WCF サービス公開ウィザードで受信場所にメタデータを公開する方法について説明します。 公開メタデータをサポートするように Web アプリケーションを構成する方法についても説明します。
このチュートリアルを完了すると、次のタスクを実行できるようになります。
Visual Studio 内から Deploy コマンドを使用して、BizTalk アセンブリを BizTalk Server のローカル インスタンスに展開します。 これにより、アセンブリが含まれた BizTalk アプリケーションが作成されます。 BizTalk アセンブリには、オーケストレーション、パイプライン、スキーマ、マップなど、BizTalk ソリューションで使用するリソース情報が含まれます。
BizTalk Server管理コンソールから、発行された WCF サービスをホストする WCF-NetMsmq 受信場所を構成します。
BizTalk WCF サービス発行ウィザードから、既存の受信場所のメタデータを発行する Web アプリケーションを作成します。 このメタデータは、メッセージを受信場所に送信するクライアントによって使用されます。
前提条件
このサンプルの手順を実行するには、使用する環境が次の前提条件を満たしている必要があります。
アセンブリをビルドして展開プロセスを実行するコンピューターと、サンプルを実行するコンピューターの両方に、Microsoft Windows Server、.NET Framework、BizTalk Serverが必要です。
アセンブリのビルドと展開プロセスの実行に使用するコンピューターには、Microsoft Visual Studio が必要です。
サンプルを実行するコンピューターには、WCF アダプターと WCF 管理ツールが必要です。 これらは、Microsoft BizTalk Serverのセットアップ中にインストールするオプションです。
管理タスクの実行に使用するコンピューターで、BizTalk Server管理コンソール内でBizTalk Serverアプリケーション設定を構成するには、BizTalk Server Administrators グループのメンバーであるユーザー アカウントとして を実行する必要があります。 また、アプリケーションの展開、ホスト インスタンスの管理、およびその他の必要なタスクを実行するには、このユーザー アカウントはローカル管理者グループのメンバーである必要もあります。
WCF 機能を必要とする任意のコンピューターで、 の WCF サンプル https://go.microsoft.com/fwlink/?LinkId=135510の 1 回限りのセットアップ手順を完了します。
サンプルを実行し、バインドまたは .msi ファイルをBizTalk Serverにインポートするコンピューターで、ホストが信頼されたホストでないことを確認するか、インポートが失敗します。
チュートリアル コードをダウンロードし、コンピューターに抽出する必要があります。 このチュートリアルは、WCF アダプターチュートリアル パッケージ全体の一部です。 WCFAdapterWalkthroughs.exeファイルは、BizTalk Server デベロッパー センター () からhttps://go.microsoft.com/fwlink/?LinkId=194140ダウンロードできます。
BizTalk ソリューション BizTalkApp をビルドして展開する
WCFNetMsmqAdapterPublishing.exe を C:\WCFNetMsmqAdapterPublishing に抽出します。
Visual Studio で、 WCFNetMsmqAdapterPublishing.sln ファイルを 開きます。
ソリューション エクスプローラーで BizTalkApp を展開し、OrderProcess.odx を開いて確認します。 サンプル オーケストレーションは注文要求メッセージを受信し、単に注文応答メッセージを返します。
BizTalkApp アセンブリは GAC にインストールする必要があるため、展開プロセスを完了するには厳密な名前キー ファイルが必要です。 BizTalkApp プロジェクトを右クリックし、[プロパティ] をクリックします。 [ プロパティ ] ページで、[ 署名] をクリックし、[ アセンブリに署名する] を選択します。 [Choose a strong name key file]\(厳密な名前のキー ファイルの選択\) ドロップダウン リストで下向き矢印をクリックし、[新規>] をクリックして<、キー ファイル名ボックスに「」と入力
keyfile.snk
します。 [ パスワードでキー ファイルを保護する] をオフにし、[OK] をクリック します。[展開] タブをクリックし、LOCALHOST 以外の BizTalk 管理データベースに別のデータベース サーバーを使用する場合は、Server プロパティを変更します。 BizTalk アプリケーションの値が WCFNetMsmqAdapterPublishing に設定されていることを確認します。 [グローバル アセンブリ キャッシュへのインストール] が [True] に設定されていることを確認します。
ソリューション エクスプローラーで、BizTalkApp プロジェクトを右クリックし、[リビルド] をクリックします。
ソリューション エクスプローラーで、[BizTalkApp] を右クリックし、[配置] をクリックします。
アプリケーションを構成する
次の手順で、Microsoft メッセージ キュー (MSMQ) コンポーネントがコンピューターにインストールされていることを確認します。
[スタート] ボタンをクリックし、[コンピューター] を右クリックし、[管理] をクリックしてサーバー マネージャーを開きます。
[機能] ノードを展開します。 メッセージ キューがインストールされていない場合は、[機能] を右クリックし、[機能の追加] を選択します。 [メッセージ キュー] をオンにし、[次へ] をクリックし、[インストール] をクリックして、そのシステムに MSMQ をインストールします。
次の手順で、メッセージ キュー サービスがコンピューターで開始され、WCF-NetMsmq アダプターで使用できることを確認します。
[ スタート] ボタンをクリックし、[ 管理ツール] をポイントして、[ サービス] をクリックします。
[サービス] で、[メッセージ キュー サービスの状態] が [開始済み] になっていることを確認します。 サービスが開始されていない場合は、[ メッセージ キュー] を右クリックし、[ 開始] をクリックします。
WCF-NetMsmq アダプターがクライアントからの受信 WCF メッセージを取得する、受信場所で使用されるターゲット キューを作成します。
[スタート] ボタンをクリックし、[管理ツール] をポイントして、[コンピューターの管理] をクリックします。
[コンピューターの管理] で、[サービスとアプリケーション] を展開し、[メッセージ キュー] を展開し、[プライベート キュー] を右クリックし、[新規] をポイントして、[プライベート キュー] をクリックします。
[新しいプライベート キュー] ダイアログ ボックスで、[キュー名] テキスト ボックスに「」と入力
WCFNetMsmqAdapterPublishing
し、[トランザクション チェック] ボックスを選択し、[OK] をクリックします。
次の手順に従って、サンプル アプリケーションの WCF-NetMsmq 受信場所を作成します。
[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[Microsoft BizTalk Server 20xx] をポイントして、[BizTalk Server管理] をクリックします。
BizTalk Server管理コンソールで、[BizTalk グループ]、[アプリケーション]、[WCFNetMsmqAdapterPublishing] の順に展開し、[受信ポート] を右クリックし、[新規] をポイントして、[一方向の受信ポート] をクリックします。
[ 受信ポートのプロパティ ] ダイアログ ボックスの [名前 ] テキスト ボックスに「」と入力
WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder
し、[OK] をクリック します。BizTalk Server管理コンソールで、WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder を右クリックし、[新規] をポイントして、[受信場所] をクリックします。
[ 受信場所のプロパティ ] ダイアログ ボックスの [ 名前 ] テキスト ボックスに「」と入力します
WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder.NetMsmq
。[受信場所のプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [WCF-NetMsmq] を選択し、[構成] をクリックします。
[ WCF-NetMsmq トランスポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブの [ アドレス (URI)] テキスト ボックスに「」と入力
net.msmq://localhost/private/WCFNetMsmqAdapterPublishing
します。[WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [バインド] タブで、[トランザクション チェック] ボックスが選択されていることを確認します。
Note
ターゲット キューをトランザクション キューとして作成したため、このチェック ボックスをオンにする必要があります。 このチェック ボックスがオンになっていない場合、受信場所のトランザクション要件と基になる MSMQ キューのトランザクション要件との間に不一致が生じるため、受信場所が有効になりません。
[WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [セキュリティ] タブで、[セキュリティ モード] ドロップダウン リストから [なし] を選択します。
Note
このチュートリアルでは、コンピューターに Active Directory 統合が無効になっている状態で MSMQ がインストールされていることを前提としています。 Active Directory 統合が有効になっている場合、MSMQ 認証モード プロパティの既定値 WindowsDomain を使用できます。
[ 受信場所のプロパティ ] ダイアログ ボックスで、[OK] をクリック します。
サンプル アプリケーションの FILE 送信ポートを作成します。 このポートは、サービスの基となるオーケストレーションの注文書からの応答をルーティングします。
BizTalk Server管理コンソールで、[WCFNetMsmqAdapterPublishing] を展開し、[送信ポート] を右クリックし、[新規] をポイントして、[静的な一方向の送信ポート] をクリックします。
[ 送信ポートのプロパティ ] ダイアログ ボックスの [名前 ] テキスト ボックスに「」と入力します
WCFNetMsmqAdapterPublishing.SendPurchaseOrder.File
。[送信ポートのプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [ファイル] を選択し、[構成] をクリックします。
[ ファイル トランスポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブの [ 宛先フォルダー ] テキスト ボックスに「」と入力
C:\WCFNetMsmqAdapterPublishing\Out
し、[OK] をクリック します。[ 送信ポートのプロパティ ] ダイアログ ボックスで、[OK] をクリック します。
次の手順で、サンプル アプリケーションのホスト名とバインドを指定します。
BizTalk Server管理コンソールで、[WCFNetMsmqAdapterPublishing] を展開し、[オーケストレーション] を展開し、サンプル オーケストレーションを右クリックし、[プロパティ] をクリックし、[バインド] をクリックして、[ホスト] を BizTalkServerApplication または別の適切なホストに設定します。
[オーケストレーションのプロパティ] ダイアログ ボックスで、PurchaseOrderRequestPort の [受信ポート] ドロップダウン リストから [WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder] を選択します。
[オーケストレーションのプロパティ] ダイアログ ボックスで、PurchaseOrderResponsePort の [送信ポート/送信ポート グループ] ドロップダウン リストから [WCFNetMsmqAdapterPublishing.SendPurchaseOrder.File] を選択します。
[ オーケストレーションのプロパティ ] ダイアログ ボックスで、[ OK] をクリックして 構成を保存します。
WCF-NetMsmq 受信場所のメタデータを発行する
[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[Microsoft BizTalk Server 20xx] をポイントして、[BizTalk WCF サービス発行ウィザード] をクリックします。
[ BizTalk WCF サービス発行ウィザードへようこそ ] ページで、[ 次へ] をクリックします。
[WCF サービスの種類] ページで、[メタデータのみエンドポイント (MEX)] チェック ボックスを選択して、WCFNetMsmq 受信場所のメタデータを発行します。 [受信場所のメタデータを発行する] ドロップダウン リストから [WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder.NetMsmq] を選択し、[次へ] をクリックします。
[ WCF サービスの作成 ] ページで、[ BizTalk オーケストレーションを WCF サービスとして発行する] を選択し、[ 次へ] をクリックします。
[ BizTalk アセンブリ ] ページの [BizTalk アセンブリ ファイル (*.dll)] テキスト ボックスで、[ 参照 ] をクリックして C:\WCFNetMsmqAdapterPublishing\BizTalkApp\bin\Development フォルダーを参照し、発行するサンプル オーケストレーションを含むアセンブリをダブルクリックし、[ 次へ] をクリックします。
[ オーケストレーションとポート] ページで、ページで [ ポート: PurchaseOrderRequestPort ] ノードが選択されていることを確認し、[ 次へ] をクリックします。
受信ポートの MEX が公開され、メッセージを受信場所に送信するためにクライアントによって使用されます。
[ WCF サービスのプロパティ ] ページの [ WCF サービスのターゲット名前空間 ] テキスト ボックスに、この公開された WCF サービスで使用する URI を入力し、[ 次へ] をクリックします。 このチュートリアルでは、既定の URI
http://tempuri.org/
である のままにします。[ WCF サービスの場所] ページで、次の操作を実行して、作成する WCF サービスの場所を指定し、[ 次へ] をクリックします。
[ 場所 ] テキスト ボックスに、WCF サービスを実行する Web ディレクトリ名を入力するか、[ 参照 ] をクリックして Web ディレクトリを選択します。 このチュートリアルでは、既定の場所 (http://localhost/<BizTalk アセンブリ名>) を [ 場所 ] テキスト ボックスに残します。
[ WCF サービスへの匿名アクセスを許可する] オプションを選択します 。 : このオプションでは、作成した仮想ディレクトリに匿名アクセスを追加します。 このウィザードで作成される Web アプリケーションに匿名認証を許可するには、このオプションをオンにする必要があります。
[ WCF サービスの概要 ] ページで、[ 作成 ] をクリックして WCF サービスを作成します。
[ BizTalk WCF サービス発行ウィザードの完了 ] ページで、[完了] をクリック します。
公開されたメタデータ サービスをホストする Web アプリケーションを構成する
コマンド プロンプトを開き、 C:\inetpub\wwwroot\Microsoft.Samples.BizTalk.WCF.NetMsmqPublishing.BizTalkApp フォルダーに移動します。 BizTalk WCF サービス発行ウィザード によって WCF サービスが作成されました。 メモ帳を使用して Web.config ファイルを開きます。
メモ帳で、system.web> 要素内に次の行を<追加します。
<trust level="Full" originUrl="" />
Note
この設定はオプションです。 公開された WCF サービスをホストしている ASP.NET アプリケーションに、オペレーティング システムのセキュリティの対象となるリソースへのアクセス権を付与します。
次の手順で、Internet Explorer を使用して、公開した WCF サービスをテストします。
[ スタート] ボタンをクリックし、[ 管理者ツール] をポイントし、[ インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
IIS マネージャーで、正しい BizTalk データベースのアクセス許可を持つ、このサービスを実行するアプリケーション プールを作成します。 [ アプリケーション プール] を右クリックし、[ アプリケーション プールの追加] をクリックし、アプリケーション プールの名前を入力して、[OK] をクリック します。
[ アプリケーション プール] を展開し、先ほど作成したアプリケーション プールを右クリックし、[ 詳細設定] を選択します。 [プロセス モデル] セクションの [ID] フィールドに、BizTalk Server データベースにアクセスできるアカウントを入力します。
[ Web サイト] を展開し、[ 既定の Web サイト] を展開し、BizTalk WCF サービス発行ウィザードで作成した Web アプリケーションを展開します。
IIS マネージャーの中央のウィンドウで、[ コンテンツ ビュー ] をクリックして、アプリケーションのファイルを表示します。
BizTalk WCF サービス発行ウィザードで作成したMicrosoft_Samples_BizTalk_WCF_NetMsmqPublishing_BizTalkApp_OrderProcess_PurchaseOrderRequestPort.svc サービス ファイルを右クリックし、[参照] をクリックします。 これにより、インターネット エクスプローラーが開き、WCF サービスのインスタンスが実行されていることを示す BizTalkServerInstance Service ページが表示されます。 このページには、サービス メタデータ ツール (svcutil.exe) または Visual Studio 内からコピーして使用できる完全な WSDL アドレスが表示され、プロキシ コードと、サービスのクライアント アプリケーションの作成に使用できる構成ファイルを取得できます。
前の手順でインターネットに表示された BizTalkServerInstance Service ページの完全な WSDL アドレスを含むコマンド ラインをクリップボードにコピーエクスプローラー。
svcutil.exe http://localhost/Microsoft.Samples.BizTalk.WCF.NetMsmqPublishing.BizTalkApp/Microsoft_Samples_BizTalk_WCF_NetMsmqPublishing_BizTalkApp_OrderProcess_PurchaseOrderRequestPort.svc?wsdl
クライアント アプリケーションをビルドする
管理者として Visual Studio コマンド プロンプトを開き、 C:\WCFNetMsmqAdapterPublishing\WCFClient フォルダーに 移動します。 このフォルダーに、プロキシ クラスおよびアプリケーション構成ファイルが保存されます。
前の手順でコピーした、完全な WSDL アドレスを含む svcutil.exe コマンド ラインを貼り付け、Enter キーを押します。 これにより、プロキシ クラス BizTalkServiceInstance.cs とアプリケーション構成ファイル が作成output.config。最後のセクションで使用するために、コマンド プロンプト ウィンドウを開いたままにします。
Visual Studio のソリューション エクスプローラーで、[WCFClient] を右クリックし、[追加] をポイントして、[既存の項目] をクリックします。
[既存のアイテムの追加] ダイアログ ボックスで、WCFClient フォルダーを参照し、[ファイルの種類] ドロップダウン リストで [すべてのファイル (*.*)] を選択し、BizTalkServiceInstance.cs ファイルと output.config ファイルを選択し、[追加] をクリックします。
[WCFClient] を展開し、[output.config] を右クリックし、[名前の変更] をクリックして、新しい名前として入力
App.config
します。Program.cs をダブルクリックして、svcutil.exe によって生成されたプロキシ クラスを使用して発行された WCF サービスを呼び出す方法を確認します。
[ 参照] を展開し、 WCFClient プロジェクトが参照 されていることを確認System.ServiceModel.dll 。
WCFClient プロジェクトを右クリックし、[ビルド] を選択します。 Visual Studio を開いたままにして、次のセクションに進みます。
WCF-NetMsmq アダプターを使用してサンプル ソリューションをテストする
BizTalk Server管理コンソールで、WCFNetMsmqAdapterPublishing アプリケーションを右クリックし、[開始] をクリックします。 [ スタート ] ダイアログ ボックスで、[ 開始] をクリックします。
BizTalk Server管理コンソールで、[プラットフォームの設定] を展開し、[ホスト インスタンス] を展開し、[BizTalkServerApplication] またはその他の適切なホスト インスタンスを右クリックして、[再起動] をクリックします。 このステップは必須ではありませんが、この時点でサンプルが正しく動作することを確認しておくことをお勧めします。
Visual Studio の [デバッグ ] メニューの [ デバッグなしで開始 ] をクリックして、WCFClient アプリケーションを実行します。 この操作で、サンプル メッセージが WCF-NetMsmq 受信場所に送信されます。 メッセージが送信されたことを示す次の出力メッセージが表示されます。
WCF-NetMsmq 受信場所で送信操作を呼び出しています。
任意のキーを押して、WCF クライアント アプリケーションを閉じてください。
任意のキーを押して、WCFClient アプリケーションを閉じてください。
Visual Studio コマンド プロンプトで、 C:\WCFNetMsmqAdapterPublishing\Out フォルダーに 移動し、WCFClient アプリケーションが返送したことを示す応答メッセージが存在することを確認します。
{GUID}.xml ファイルをダブルクリックしてインターネット エクスプローラーで開き、サービスによって処理された OrderID 値を表示します。
参照
WCF-NetMsmq 受信場所を構成する WCF アダプターのチュートリアル WCF受信アダプターのサービス メタデータの発行に関するチュートリアル