WCF-NetMsmq 受信場所を構成する方法
WCF-NetMsmq 受信場所は、プログラムから、または BizTalk 管理コンソールを使用して構成できます。
構成プロパティ
BizTalk エクスプローラー オブジェクト モデルにより、プログラムから受信場所を作成および構成することができます。 BizTalk エクスプローラー オブジェクト モデルは、TransportTypeData の読み取り/書き込みプロパティを持つIReceiveLocation 受信場所構成インターフェイスを公開します。 このプロパティでは、名前と値の組の XML 文字列の形式で WCF-NetMsmq 受信場所の構成プロパティ バッグを指定できます。 BizTalk エクスプローラー オブジェクト モデルでこのプロパティを設定するには、IReceiveLocation インターフェイスの InboundTransportLocation プロパティを設定する必要があります。
IReceiveLocation インターフェイスの TransportTypeData プロパティを設定する必要はありません。 このプロパティを設定しない場合、WCF-NetMsmq アダプターでは、次の表に記載されている WCF-NetMsmq 受信場所の構成の既定値が使用されます。
次の表に、BizTalk エクスプローラーのオブジェクト モデルで WCF-NetMsmq 受信場所用に設定できる構成プロパティを示します。
プロパティ名 | Type | 説明 |
---|---|---|
ID | XML Blob 例: <identity> <userPrincipalName value="username@contoso.com" /> </Id> |
この受信場所が提供するサービスの ID を指定します。 Identity プロパティに指定できる値は、セキュリティ構成によって異なります。 これらの設定により、クライアントはこの受信場所を認証できます。 クライアントとサービスの間のハンドシェイク プロセスでは、Windows Communication Foundation (WCF) インフラストラクチャによって、この要素の値と予期されるサービスの ID が照合されます。 既定値は空の文字列です。 |
OpenTimeout | System.TimeSpan | チャネルを開く操作が完了するまでの間隔を示す期間値を指定します。 既定値:00:01:00 |
SendTimeout | System.TimeSpan | 送信操作が完了するまでの間隔を示す期間値を指定します。 既定値:00:01:00 |
CloseTimeout | System.TimeSpan | チャネルを閉じる操作が完了するまでの間隔を示す期間値を指定します。 既定値:00:01:00 |
MaxReceivedMessageSize | Integer | 有線ネットワーク上で受信できる、ヘッダーを含むメッセージの最大サイズをバイト単位で指定します。 メッセージのサイズは、各メッセージに割り当てられているメモリの量に制限されます。 このプロパティを使用して、サービス拒否 (DoS) 攻撃にさらされる危険性を制限できます。 既定値:65536 |
EnableTransaction | Boolean | メッセージ キューの種類 (トランザクションまたは非トランザクション) を指定します。 このプロパティが選択されている場合、各メッセージは一度だけ配信され、送信者には配信エラーが通知されます。 トランザクション送信ポートを介してメッセージを送信するには、クライアントの 永続 バインディング要素と exactlyOnce バインド要素の両方を True に設定する必要があります。 このプロパティがオフの場合、配信が保証されずにメッセージが転送されます。 メモ: この受信場所でトランザクション キューを使用する場合は、このプロパティを選択する必要があります。 既定値: False |
OrderedProcessing | Boolean | メッセージを順番に処理するかどうかを指定します。 このプロパティを選択すると、この受信場所は、 [順序付き配信] オプションが に設定されている BizTalk メッセージングまたはオーケストレーション送信ポートと組み合わせて使用する場合に 、順序付けされたメッセージ配信 に True 対応します。 これを選択できるのは、 EnableTransaction プロパティが True に設定されている場合のみです。[順次配信] オプションの詳細については、「関連項目」の適切なトピックを参照してください。 このプロパティが True に設定されている場合、WCF-NetMsmq 受信場所は、アダプターをシングル スレッドにすることで、大きなメッセージを処理するときにリソースの使用を最適化します。 既定値: False |
MaxConcurrentCalls | Integer | 単一のサービス インスタンスに対する同時呼び出しの数を指定します。 制限を超える呼び出しはキューに格納されます。 このプロパティの範囲は 0 から Int32.MaxValue です。 既定値:200 |
SecurityMode | 列挙型 - なし - メッセージ - トランスポート - 両方とも SecurityMode プロパティのメンバー名の詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポート プロパティ] ダイアログ ボックスの [セキュリティ モード] プロパティ、受信、セキュリティ タブ」を参照してください。 |
使用するセキュリティの種類を指定します。 既定値: トランスポート |
MsmqAuthenticationMode | 列挙型 - なし - WindowsDomain - 証明 書 MsmqAuthenticationMode プロパティのメンバー名の詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetMsmq トランスポート プロパティ] ダイアログ ボックスの MSMQ 認証モード のプロパティ、受信、セキュリティ タブ」を参照してください。 |
MSMQ トランスポートによるメッセージの認証方法を指定します。 既定値: WindowsDomain |
MsmqProtectionLevel | 列挙型 - なし: 保護なし。 - 署名: メッセージは署名されています。 - EncryptAndSign: メッセージは暗号化され、署名されます。 この保護レベルを使用するには、MSMQ の Active Directory 統合を有効にする必要があります。 |
MSMQ トランスポートのレベルでメッセージをセキュリティ保護する方法を指定します。 暗号化を行うとメッセージの整合性が確保されますが、署名および暗号化を使用するとメッセージの整合性と否認防止の両方が確保されます。 既定値: 記号 |
MsmqSecureHashAlgorithm | 列挙型 - MD5 - SHA1 - SHA25 - Sha512 |
メッセージ ダイジェストの計算に使用するハッシュ アルゴリズムを指定します。 MsmqProtectionLevel プロパティが None に設定されている場合、このプロパティは使用できません。 既定値: SHA1 |
MsmqEncryptionAlgorithm | 列挙型 - RC4Stream - Aes |
メッセージ キュー マネージャー間でメッセージを転送するときに、有線ネットワーク上でメッセージを暗号化するために使用するアルゴリズムを指定します。 このプロパティは、 MsmqProtectionLevel プロパティが EncryptAndSign に設定されている場合にのみ使用できます。 既定値: RC4Stream |
MessageClientCredentialType | 列挙型 - なし - Windows - 名 - 証明 書 MessageClientCredentialType プロパティのメンバー名の詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブのメッセージ クライアント資格情報の種類プロパティ」を参照してください。 |
メッセージ ベースのセキュリティを使用してクライアント認証を実行するときに使用する、資格情報の種類を指定します。 既定値: Windows |
AlgorithmSuite | 列挙型 AlgorithmSuite プロパティのメンバー名の詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブのアルゴリズム スイート プロパティ」を参照してください。 |
メッセージの暗号化とキー ラップのアルゴリズムを指定します。 これらのアルゴリズムは、セキュリティ ポリシー言語 (WS-SecurityPolicy) 仕様で指定されたアルゴリズムにマップされます。 既定値: Basic256 |
ServiceCertificate | String | クライアントがサービスの認証に使用する、この受信場所に対する X.509 証明書の拇印を指定します。 このプロパティに使用する証明書は、現在のユーザーの場所にあるマイ ストアにインストールする必要があります。 メモ: この受信場所をホストする受信ハンドラーのユーザー アカウントの 現在 のユーザーの場所にサービス証明書をインストールする必要があります。 既定値は空の文字列です。 |
InboundBodyLocation | 列挙型 - UseBodyElement - 受信メッセージの SOAP Body 要素の内容を使用して、BizTalk メッセージ本文パーツを作成します。 Body 要素に複数の子要素がある場合、最初の要素のみが BizTalk メッセージ本文パーツになります。 - UseEnvelope - 受信メッセージの SOAP エンベロープ 全体から BizTalk メッセージ本文部分を作成します。 - UseBodyPath - InboundBodyPathExpression プロパティの本文パス式を使用して、BizTalk メッセージ本文パーツを作成します。 本文パス式は、受信メッセージの SOAP Body 要素の直接の子要素に対して評価されます。 このプロパティは、送信請求 - 応答のポートに対してのみ有効です。 InboundBodyLocation プロパティの使用方法の詳細については、「WCF アダプターのメッセージ本文の指定」を参照してください。 |
受信 WCF メッセージの SOAP Body 要素のデータ選択を指定します。 既定値: UseBodyElement |
InboundBodyPathExpression | String InboundBodyPathExpression プロパティの使用方法の詳細については、「WCF アダプター のプロパティ スキーマとプロパティ」を参照してください。 |
BizTalk メッセージのボディ部を作成するために使用する受信メッセージの特定の部分を示すボディ パス式を指定します。 この本文パス式は、受信メッセージの SOAP Body ノードの直接の子要素に対して評価されます。 このボディ パス式で複数のノードが返される場合は、最初のノードのみが BizTalk メッセージのボディ部に対して選択されます。 InboundBodyLocation プロパティが UseBodyPath に設定されている場合、このプロパティは必須です。 既定値は空の文字列です。 |
InboundNodeEncoding | 列挙型 - Base64 - Base64 エンコード。 - 16 進数 - 16 進エンコード。 - String - テキスト エンコード - UTF-8。 - XML - WCF アダプターは、 InboundBodyPathExpression の本文パス式によって選択されたノードの外部 XML を使用して BizTalk メッセージ本文を作成します。 |
inboundBodyPathExpression で指定された本文パス式で識別されるノードをデコードするために、WCF-NetMsmq 受信アダプターが使用するエンコードの種類を指定します。 InboundBodyLocation プロパティが UseBodyPath に設定されている場合、このプロパティは必須です。 既定値: XML |
DisableLocationOnFailure | Boolean | 受信パイプラインまたはルーティングの障害によって受信処理に失敗した受信場所を無効にするかどうかを指定します。 既定値: False |
SuspendMessageOnFailure | Boolean | 受信パイプラインまたはルーティングの障害によって受信処理に失敗した要求メッセージを保留するかどうかを指定します。 既定値: True |
IncludeExceptionDetailInFaults | Boolean | デバッグの目的でクライアントに返される SOAP エラーの詳細にマネージド例外情報を含めるかどうかを指定します。 既定値: False |
BizTalk 管理コンソールを使用して WCF-NetMsmq 受信場所を構成する
WCF-NetMsmq 受信場所のアダプター変数は、BizTalk 管理コンソールで設定できます。 プロパティが受信場所に設定されていない場合は、BizTalk 管理コンソールで設定された既定の受信ハンドラーの値が使用されます。
Note
次の手順を実行する前に、受信ポートを追加する必要があります。 詳細については、「 受信ポートを作成する方法」を参照してください。
Note
WCF クライアントと WCF-NetMsmq 受信場所のバインド構成は一致する必要があります。 一致しない場合、WCF-NetMsmq 受信場所で受信メッセージが失われることがあります。
WCF-NetMsmq 受信場所の変数を構成する
BizTalk 管理コンソールで、[BizTalk Server管理]、[BizTalk グループ]、[アプリケーション] の順に展開し、受信場所を作成するアプリケーションを展開します。
BizTalk 管理コンソールの左側のウィンドウで、[ 受信ポート ] ノードをクリックします。 次に右ウィンドウで、既存の受信場所に関連付けられているか、新しい受信場所に関連付ける受信ポートを右クリックし、[ プロパティ] をクリックします。
[ 受信ポートのプロパティ ] ダイアログ ボックスの左側のウィンドウで [ 受信場所] を選択し、右側のウィンドウで既存の受信場所をダブルクリックするか、[ 新規] をクリックして新しい受信場所を作成します。
[受信場所のプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [WCF-NetMsmq] を選択し、[構成] をクリックします。
[ WCF-NetMsmq トランスポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブで、WCF-NetMsmq 受信場所のエンドポイント アドレスとサービス ID を構成します。 [WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [全般] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [受信]、[全般] タブ」を参照してください。
[ WCF-NetMsmq トランスポートのプロパティ ] ダイアログ ボックスの [ バインド ] タブで、タイムアウトプロパティとトランザクションプロパティを構成します。 [WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [バインド] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [受信]、[バインド] タブ」を参照してください。
[ WCF-NetMsmq トランスポートのプロパティ ] ダイアログ ボックスの [ セキュリティ ] タブで、WCF-NetMsmq 受信場所のセキュリティ機能を定義します。 [WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [セキュリティ] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブ」を参照してください。
[ WCF-NetMsmq トランスポートのプロパティ ] ダイアログ ボックスの [ メッセージ ] タブで、SOAP Body 要素のデータ選択を指定します。 [WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [メッセージ] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetMsmq トランスポートのプロパティ] ダイアログ ボックスの [受信]、[メッセージ] タブ」を参照してください。
プログラムで WCF-NetMsmq 受信場所を構成する
次の形式を使用してプロパティを設定できます。
<CustomProps>
<ServiceCertificate vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<InboundBodyPathExpression vt="8" />
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<SecurityMode vt="8">Transport</SecurityMode>
<OrderedProcessing vt="11">0</OrderedProcessing>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>
<DisableLocationOnFailure vt="11">0</DisableLocationOnFailure>
<MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>
<SuspendMessageOnFailure vt="11">-1</SuspendMessageOnFailure>
<EnableTransaction vt="11">-1</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>
</CustomProps>
次のコードは、WCF-NetMsmq 受信場所の作成方法を示しています。
// Use BizTalk Explorer object model to create new WCF-NetMsmq receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-NetMsmq
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-NetMsmq" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.msmq://mycomputer/private/sampleQueue";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetMsmq"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
参照
WCF 受信アダプターの発行 サービス メタデータBizTalk ホストとホスト インスタンスの管理 サービスアカウントとパスワードを変更する方法WCF アダプターのメッセージ本文を指定する WCF アダプターの証明書をインストールする方法 トランザクション メッセージ キューおよび Active Directoryパブリックおよびプライベート キュー内でメッセージを送信および取得するメッセージの WCF-NetMsmq アダプター順序付き配信を構成する