パートナー オーケストレーションの直接バインド ポートの使用方法
パートナー オーケストレーションの直接バインド ポートは、ポートをとおしたオーケストレーション間通信の機能を提供します。 2 つの通信パターンを作成できます。前方パートナー オーケストレーションダイレクト バインディングと逆パートナー オーケストレーションダイレクト バインディングです。 これらの 2 つのパターンは、明示的なオーケストレーション間通信を提供し、順方向パートナー オーケストレーションの直接バインドを使用するときは目的の受信者のオーケストレーション、および逆方向パートナー オーケストレーションの直接バインドを使用するときは目的の送信者のオーケストレーションが存在することを意味します。
次のいずれかを実行することによって、暗黙のパートナー オーケストレーションの直接バインドもデザインできます。
受信者をメッセージ ボックスの直接バインド ポートにし、特定の送信オーケストレーションからのメッセージを受け入れるフィルターを作成します。
送信者をメッセージ ボックスの直接バインド ポートにし、受信オーケストレーションのサブスクリプションに一致するプロパティを昇格させます。
パートナー オーケストレーションの直接バインド ポートを構成するには、ポート構成ウィザードで [ポート バインド] に [Direct] を指定し、[他のオーケストレーションからメッセージを受信するには、このポートをここに選択し、それらのオーケストレーションで、または他のオーケストレーションにメッセージを送信するには、このポートでこのポートを選択し、このポートでメッセージを送受信するかどうかに応じて、このポートを選択します。 次に、[ パートナー オーケストレーションのポート ] ドロップダウン リストからポートを選択します。 両方のポートのポートの種類は同じである必要があります。これは、メッセージの種類も同じである必要があることを意味します。 さらに、パートナー オーケストレーション ポートに直接バインドできるようにするには、ポートの種類の 型修飾子 は、同じアセンブリ内のオーケストレーションの 場合は Internal であるか、別のアセンブリからのオーケストレーションがバインドできるようにするには Public である必要があります。 ポートの極性は逆である必要があります。 たとえば、片方が送信ポートである場合は、もう一方は受信ポートである必要があります。
パートナー オーケストレーションの直接バインド ポートを使用する方法の例については、SDK のサンプル「オーケストレーションへの直接バインド」 https://go.microsoft.com/fwlink/?LinkId=73703を参照してください。
順方向パートナー オーケストレーションの直接バインド
これは、パートナー オーケストレーションの直接バインドに使用される一般的な通信方式です。 この種類の順方向パートナー オーケストレーションのバインドを使用すると、複数の送信者を同じ受信者にバインドできます。
順方向パートナー オーケストレーションの直接バインドを構成するには、次の手順を実行します。
[オーケストレーション A] で、オーケストレーション ツールボックスの [ポート ] 図形を選択します。 ポート構成ウィザードが起動します。
[ ポートのプロパティ] ページの [名前 ] フィールドに「」と入力します
MyReceivePort
。 [次へ] をクリックします。[ ポートの種類の選択 ] ページで、[ 新しいポートの種類の作成] を選択します。 [ ポートの種類名] フィールドに「」と入力します
MyPartnerPortType
。 [次へ] をクリックします。[ ポート バインド ] ページ の [通信のポート方向 ] ドロップダウン リストで、[ このポートで常にメッセージを受信する] を選択します。 [ ポート バインド ] ドロップダウン リストで、[ Direct] を選択します。
[ 他のオーケストレーションからメッセージを受信するには、このポートをここに選択し、それらのオーケストレーションでを選択し、[ パートナー オーケストレーションのポート ] ドロップダウン リストで [ OrchestrationA.MyReceivePort] を選択します。 [次へ] をクリックします。
[ ポート ウィザードの完了 ] ページで、[完了] をクリック します。
[オーケストレーション B] で、オーケストレーション ツールボックスの [ポート ] 図形を選択します。 ポート構成ウィザードが起動します。
[ ポートのプロパティ] ページの [名前 ] フィールドに「」と入力します
MySendPort
。 [次へ] をクリックします。[ポートの種類の選択] ページで、 [既存のポートの種類を使用する]をクリックします。 [ 使用可能なポートの種類] で、[ MyPartnerPortType] を選択し、[ 次へ] をクリックします。
[ ポート バインド ] ページ の [通信のポート方向 ] ドロップダウン リストで、[ このポートで常にメッセージを送信する] を選択します。 [ ポート バインド ] ドロップダウン リストで、[ Direct] を選択します。
[ 他のオーケストレーションにメッセージを送信するには、このポートをここに選択し、それらのオーケストレーションでメッセージを送信する] を選択し、[ パートナー オーケストレーションのポート ] ドロップダウン リストで [ OrchestrationA.MyReceivePort] を選択します。 [次へ] をクリックします。
[ ポート ウィザードの完了 ] ページで、[完了] をクリック します。
Note
送信者のオーケストレーションから受信者のオーケストレーションへの厳密なバインドがあります。 このため、受信者のオーケストレーションを変更する場合、または受信者のオーケストレーションのバージョンを変更する場合、送信者のパートナー オーケストレーションの直接バインド ポートのデザイン時の構成を更新する必要があります。 ただし、受信者のオーケストレーションは送信者のオーケストレーションを明示的に認識しないため、受信者のオーケストレーションに影響を与えずに送信者のオーケストレーションを更新できます。
前の構成では、オーケストレーション A は受信者であり、オーケストレーション B は送信者です。 この構成により、オーケストレーション B は OrchestrationA.MyReceivePort にメッセージを送信でき、オーケストレーション A は OrchestrationA.MyReceivePort に送信されたすべてのメッセージを受信できます。 さらに、オーケストレーション B に対する構成と同じ構成を使用して、オーケストレーション C を追加して 2 番目の送信者とすることができ、オーケストレーション D を追加して 3 番目の送信者とすることができます。
逆方向パートナー オーケストレーションの直接バインド
これは、パートナー オーケストレーションの直接バインドに使用される一般的な通信方式ではありません。 この方式では、バインドの方向は、通信の方向の逆になります。 この種類の逆方向パートナー オーケストレーションのバインドを使用すると、単一の送信者が複数の受信者と通信できます。
Note
逆のパートナー オーケストレーション直接バインドを使用して 2 方向のポートの種類を使用する場合、複数の受信者のうち 1 つだけがメッセージを処理するようにするには、受信フィルターを設定する必要があります。 これは、送信請求 - 応答ポートが単一の応答を想定しているためです。 複数の受信者がメッセージを取得した場合、送信請求 - 応答ポートは最初の応答を受信し、その後のすべての応答は中断され再開不可になります。 このような状況でメッセージを送信しようとすると、メッセージング エンジンは例外をスローし、送信請求 - 応答ポートに対して複数の受信者が存在することを示します。
逆方向パートナー オーケストレーションの直接バインドを構成するには、次の手順を実行します。
[オーケストレーション A] で、オーケストレーション ツールボックスの [ポート ] 図形を選択します。 ポート構成ウィザードが起動します。
[ ポートのプロパティ] ページの [名前 ] フィールドに「」と入力します
MySendPort
。 [次へ] をクリックします。[ ポートの種類の選択 ] ページで、[ 新しいポートの種類の作成] を選択します。 [ ポートの種類名] フィールドに「」と入力します
MyPartnerPortType
。 [次へ] をクリックします。[ ポート バインド ] ページ の [通信のポート方向 ] ドロップダウン リストで、[ このポートで常にメッセージを送信する] を選択します。 [ ポート バインド ] ドロップダウン リストで、[ Direct] を選択します。
[ 他のオーケストレーションにメッセージを送信するには、このポートをここに選択し、それらのオーケストレーションでメッセージを送信する] を選択し、[ パートナー オーケストレーションのポート ] ドロップダウン リストで [ OrchestrationA.MySendPort] を選択します。 [次へ] をクリックします。
[ ポート ウィザードの完了 ] ページで、[完了] をクリック します。
[オーケストレーション B] で、オーケストレーション ツールボックスの [ポート ] 図形を選択します。 ポート構成ウィザードが起動します。
[ ポートのプロパティ ] ページの [名前 ] フィールドに「」と入力
MyReceivePort
します。 [次へ] をクリックします。[ポートの種類の選択] ページで、 [既存のポートの種類を使用する]をクリックします。 [ 使用可能なポートの種類] で、[ MyPartnerPortType] を選択し、[ 次へ] をクリックします。
[ ポート バインド ] ページ の [通信のポート方向 ] ドロップダウン リストで、[ このポートで常にメッセージを受信する] を選択します。 [ ポート バインド ] ドロップダウン リストで、[ Direct] を選択します。
[ 他のオーケストレーションからメッセージを受信するには、このポートをここに選択し、それらのオーケストレーションでを選択し、[ パートナー オーケストレーションのポート ] ドロップダウン リストで [ OrchestrationA.MySendPort] を選択します。 [次へ] をクリックします。
[ ポート ウィザードの完了 ] ページで、[完了] をクリック します。
Note
受信者のオーケストレーションは、送信者のオーケストレーションに厳密にバインドされます。 このため、受信者のオーケストレーションを変更する場合、または受信者のオーケストレーションのバージョンを更新する場合、送信者のポートの構成を更新する必要があります。 送信者のオーケストレーションは受信者のオーケストレーションを明示的に認識しないため、送信者のオーケストレーションに影響を与えずに受信者のオーケストレーションを更新できます。
前の構成では、オーケストレーション A は送信者であり、オーケストレーション B は受信者です。 この構成により、オーケストレーション A は OrchestrationA.MySendPort を介してオーケストレーション B にメッセージを送信でき、オーケストレーション B は OrchestrationA.MySendPort からメッセージを受信できるようになります。 さらに、オーケストレーション B に対する構成と同じ構成を使用して、オーケストレーション C を追加して 2 番目の受信者とすることができ、オーケストレーション D を追加して 3 番目の受信者とすることができます。
参照
MessageBox ダイレクト バインド ポートを使用する方法 ダイレクト バインド ポートSelf-Correlating 使用する方法