Konfigurieren von dynamischen Sendeports mit WCF-Adapterkontexteigenschaften

Sie können dynamische Sendeports für WCF-Adapter konfigurieren. Der URI, die Aktion und die Bindung können aus einer Eigenschaft einer eingehenden Nachricht bestimmt und dann im Ausdrucks-Shape angegeben werden, wie im folgenden WCF-NetTcp-Adapter gezeigt:

MessageOut=MessageIn;  
MessageOut(WCF.Action)="http://tempuri.org/IReceiveMessage/ReceiveMessage";  
MessageOut(WCF.SecurityMode)="Transport";  
MessageOut(WCF.TransportClientCredentialType)="Windows";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.Address)="net.tcp://localhost:8001/netTcp";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-NetTcp";  

Der folgende Code zeigt ein Beispiel, wie die WCF-Kontexteigenschaften in der Expression-Form für einen WCF-Custom-Adapter angegeben werden können.

MessageOut=MessageIn;  
MessageOut(WCF.BindingType)="customBinding";  
MessageOut(WCF.Action)="http://tempuri.org/IReceiveMessage/ReceiveMessage";  
MessageOut(WCF.BindingConfiguration)=@"<binding name=""customBinding""><binaryMessageEncoding /><tcpTransport /></binding>";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.Address)="net.tcp://localhost:8001/customNetTcp";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-Custom";  

Überlegungen beim Angeben von WCF-Kontexteigenschaften sind wie folgt:

  • Es gibt Adressen, die mehreren Adaptern zugeordnet werden können. Beispielsweise kann eine Adresse, die mit http:// oder https:// beginnt, vom HTTP-Adapter sowie vom WCF-BasicHttp-, WCF-WsHttp- oder WCF-Custom-Adapter behandelt werden. Ein weiteres Beispiel: In dem oben gezeigten Beispielcode nutzen beide die Adresse, die mit net.tcp:// beginnt. Da der zweite Beispielcode jedoch eine benutzerdefinierte Bindung verwendet, sollte der WCF-Custom-Adapter verwendet werden, um die Adresse zu behandeln. Um den richtigen Adapter zu identifizieren, müssen Sie daher das optionale Microsoft.XLANGs.BaseTypes.TransportType-Feld in einem Ausdrucks-Shape mit dem Adapter konfigurieren, den Sie verwenden möchten.

    Hinweis

    Wenn die Adresse mit http:// oder https:// beginnt und Sie nicht das Feld "Microsoft.XLANGs.BaseTypes.TransportType" angeben, verwendet das BizTalk-Modul standardmäßig den HTTP-Adapter.

  • Wcf . BindingType identifiziert die Bindung anhand des Namens. Es kann eines der folgenden sein:

    • basicHttpBinding

    • Benutzerdefinierte Bindung

    • netMsmqBinding

    • netNamedPipeBinding

    • netTcpBinding

    • wsFederationHttpBinding

    • wsHttpBinding

      Die obige Liste kann erweitert werden. Sie können z. B. eine eigene Bindung hinzufügen, z. B. FtpBinding.

  • Wcf . BindingConfiguration gibt die Bindungskonfiguration für den Bindungstyp an. Es benötigt jede Bindung, die in der Computerkonfigurationsdatei registriert ist. Außerdem wird die XML-Konfiguration im gleichen Format verwendet, wie es in der Bindungskonfiguration der WCF-Konfigurationsdatei genutzt wird.

  • Möglicherweise müssen Sie zusätzliche WCF-Eigenschaften angeben. Sie können WCF im Ausdrucks-Editor eingeben, und das IntelliSense-Feature sollte alle verfügbaren Kontexteigenschaften auflisten. Weitere Informationen zu WCF-Kontexteigenschaften finden Sie unter WCF Adapters Property Schema and Properties.

    In den vorherigen Beispielen wird gezeigt, wie WCF.Action mit einer einzelnen Aktion konfiguriert wird. Für Szenarien zur Zuordnung mehrerer Aktionen unterstützt der WCF-Adapter nicht die Zuordnung mehrerer Aktionen mit dynamischen Sendeports. Sie können einfach die tatsächliche Aktion in der WCF.Action-Kontexteigenschaft festlegen, wie oben dargestellt.

Siehe auch

Angeben von SOAP-Aktionen für WCF-Sendeadapter
Wie man Ausdrücke verwendet, um Werte dynamischen Ports zuzuweisen
Portbindungen