Freigeben über


Vorgehensweise: Nachrichtentransformation und -routing an einen Dienstendpunkt mithilfe des Nachrichtenaustauschmusters „Anforderung/Antwort“

Zielsetzung

In diesem Abschnitt wird veranschaulicht, wie Sie die ESB-Designer domänenspezifische Sprache (DOMAIN-Specific Language, DSL) verwenden, um eine Anforderungs-Antwort-Reiseroute zu erstellen, die mit einem bidirektionalen On-Ramp verwendet werden kann. Sie erstellen einen Verteiler, um eine Nachricht zu empfangen, die Nachricht zu transformieren, die Nachricht an einen Dienst zu übermitteln und die Dienstantwortnachricht an den Absender der ursprünglichen Nachricht zurückzugeben.

In diesem How-to-Thema führen Sie die folgenden Schritte aus:

  • Erstellen Sie einen Routenplan mit einem Transformationsroutendienst, der eine Microsoft BizTalk Server-Karte implementiert.

  • Konfigurieren Sie die Reiseroute, um die transformierte Nachricht an einen Dienstendpunkt weiterzuleiten.

  • Konfigurieren Sie die Reiseroute so, dass die Dienstantwortnachricht an die ursprüngliche sendende Partei zurückgegeben wird.

  • Testen Sie die Reiseroute mithilfe der Beispielanwendung Für den Programmablauftestclient.

Voraussetzungen

Die Verfahren in diesem How-to-Thema erfordern den Abschluss der Voraussetzungen für die Entwicklungsaktivitäten.

Schritte

So erstellen Sie ein DSL-Modell für die ESB-Reiseroute

  1. Öffnen Sie in Visual Studio C:\HowTos\Patterns\Patterns.sln.

  2. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ItineraryLibrary, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neue Reiseroute.

  3. Geben Sie im Dialogfeld Neues Element hinzufügen im Feld Name den NamenRequestResponse ein, und klicken Sie dann auf Hinzufügen.

So konfigurieren Sie die Eigenschaften der Reiseroute

  1. Klicken Sie in Visual Studio auf die Entwurfsoberfläche von RequestResponse.itinerary. Konfigurieren Sie im RequestResponse-Eigenschaftenfenster die folgenden Eigenschaften:

    1. Klicken Sie in der Dropdownliste Ist Anforderungsantwort auf True.

    2. Klicken Sie in der Dropdownliste Modellexporter auf XML-Programmablaufexporter.

    3. Klicken Sie im Abschnitt Extendereinstellungen neben der Dateieigenschaft Itinerary XML auf die Schaltfläche mit den Auslassungspunkten (...).

    4. Geben Sie im Dialogfeld XML-Datei auswählen im Feld Dateinameden Namen C:\HowTos\Itineraries\RequestResponse ein, und klicken Sie dann auf Speichern.

      Hinweis

      In diesem Schritt können Sie die Reiseroute als XML an einen lokalen Dateispeicherort exportieren. Durch exportieren einer Reiseroute in einen lokalen Dateispeicherort statt in die Reiseplandatenbank ermöglicht das Testen der Reiseroute mithilfe der ESB-Testclientanwendung. Sie schließen diesen Prozess später in diesem Thema ab.

So definieren Sie die Struktur der Reiseroute

  1. Ziehen Sie aus der Toolbox ein On-Ramp-Modellelement auf die Entwurfsoberfläche. Konfigurieren Sie im OnRamp1-Eigenschaftenfenster die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie dann ReceiveNAOrder ein.

    2. Klicken Sie in der Dropdownliste Extender auf On-Ramp ESB Extender ( On-Ramp ESB Extender).

    3. Klicken Sie in der Dropdownliste BizTalk-Anwendung auf Microsoft.Practices.ESB.

    4. Klicken Sie in der Dropdownliste Empfangsport auf OnRamp.Itinerary.Response.

  2. Ziehen Sie aus der Toolbox ein Modellelement des Programmplanungsdiensts auf die Entwurfsoberfläche, und platzieren Sie es dann rechts neben dem On-Ramp-Modellelement . Konfigurieren Sie im Eigenschaftenfenster ItineraryService1 die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie dann MapNAOrderToCNOrder ein.

    2. Klicken Sie in der Dropdownliste Itinerary Service Extender auf Messaging Extender.

      Hinweis

      Diese Eigenschaft definiert, dass der Prozess in einer Pipeline (Messaging) stattfindet. Wenn der Prozess in einer Orchestrierung stattfindet, legen Sie alternativ die Eigenschaft Itinerary Service Extender auf Orchestration Extender fest.

    3. Erweitern Sie in der Dropdownliste Container den Eintrag ReceiveNAOrder, und klicken Sie dann auf Empfangshandler.

    4. Klicken Sie in der Dropdownliste Dienstname auf Microsoft.Practices.ESB.Services.Transform.

  3. Klicken Sie mit der rechten Maustaste auf die Resolver-Auflistung des MapNAOrderToCNOrder-Modellelements , und klicken Sie dann auf Neuen Resolver hinzufügen. Konfigurieren Sie im Eigenschaftenfenster Resolver1 die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie dann StaticallySpecifyTheMap ein.

    2. Klicken Sie in der Dropdownliste Resolverimplementierung auf Statische Resolvererweiterung.

    3. Klicken Sie in der Dropdownliste Transformationstyp auf GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN.

  4. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung aus dem Modellelement ReceiveNAOrder auf das MapNAOrderToCNOrder-Modellelement .

  5. Ziehen Sie aus der Toolbox ein Modellelement des Reiseplandiensts auf die Entwurfsoberfläche, und platzieren Sie es dann rechts neben dem MapNAOrderToCNOrder-Modellelement . Konfigurieren Sie im Eigenschaftenfenster ItineraryService1 die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie dann RouteToCNService ein.

    2. Klicken Sie in der Dropdownliste Itinerary Service Extender auf Messaging Extender.

      Hinweis

      Diese Eigenschaft definiert, dass der Prozess in einer Pipeline (Messaging) stattfindet. Wenn der Prozess in einer Orchestrierung stattfindet, legen Sie alternativ die Eigenschaft Itinerary Service Extender auf Orchestration Extender fest.

    3. Erweitern Sie in der Dropdownliste Container den Eintrag ReceiveNAOrder, und klicken Sie dann auf Empfangshandler.

    4. Klicken Sie in der Dropdownliste Dienstname auf Microsoft.Practices.ESB.Services.Routing.

  6. Klicken Sie mit der rechten Maustaste auf die Resolver-Auflistung des Modellelements RouteToCNService , und klicken Sie dann auf Neuen Resolver hinzufügen. Konfigurieren Sie im Eigenschaftenfenster Resolver1 die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie dann StaticallySpecifyTheService ein.

    2. Klicken Sie in der Dropdownliste Resolverimplementierung auf Statische Resolvererweiterung.

    3. Klicken Sie in der Dropdownliste Transportname auf WCF-BasicHttp.

    4. Klicken Sie auf die Eigenschaft Transportstandort , und geben Sie dann ein http://localhost/ESB.CanadianServices/SubmitPOService.asmx.

    5. Klicken Sie auf die Eigenschaft Zielnamespace , und geben Sie dann ein http://globalbank.esb.dynamicresolution.com/canadianservices.

    6. Klicken Sie auf die Action-Eigenschaft , und geben Sie submitOrder ein.

  7. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung vom MapNAOrderToCNOrder-Modellelement in das Modellelement RouteToCNService .

  8. Ziehen Sie aus der Toolbox ein Off-Ramp-Modellelement auf die Entwurfsoberfläche, und platzieren Sie es dann rechts neben dem Modellelement RouteToCNService . Konfigurieren Sie im offRamp1-Eigenschaftenfenster die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie InvokeCNService ein.

    2. Klicken Sie in der Dropdownliste Extender auf OFF-Ramp ESB Extender.

    3. Klicken Sie in der Dropdownliste BizTalk-Anwendung auf GlobalBank.ESB.

    4. Klicken Sie in der Dropdownliste Port senden auf DynamicResolutionSolicitResp.

  9. Ziehen Sie aus der Toolbox ein Modellelement des Itinerary Service auf die Entwurfsoberfläche, und platzieren Sie es dann zwischen dem Modellelement RouteToCNService und dem InvokeCNService-Modellelement . Konfigurieren Sie im Eigenschaftenfenster ItineraryService1 die folgenden Eigenschaften:

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie sendPortFilter ein.

    2. Klicken Sie in der Dropdownliste Itinerary Service Extender auf Off-Ramp Extender.

    3. Erweitern Sie in der Dropdownliste Off-Ramp den Eintrag InvokeCNService, und klicken Sie dann auf Handler senden.

  10. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung vom Modellelement RouteToCNService auf das SendPortFilter-Modellelement .

  11. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung aus dem SendPortFilter-Modellelement auf das InvokeCNService-Modellelement .

  12. Klicken Sie mit der rechten Maustaste auf die Entwurfsoberfläche, und klicken Sie dann auf Überprüfen.

    Hinweis

    Die Reiseroute überprüft; Es ist nicht erforderlich, die Off-Rampe wieder mit der On-Rampe zu verbinden, um die Antwortnachricht an die anfordernde Partei zurückzusenden. Durch Die Verwendung eines bidirektionalen Vorlaufs wird die endgültige Nachricht automatisch an die anfordernde Partei zurückgegeben.

So exportieren Sie das Modell für die Verwendung mit dem Programmablauftestclient

  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf die Entwurfsoberfläche des Anforderungsresponse-Reiseplans , und klicken Sie dann auf Modell exportieren.

    Hinweis

    Die XML-Version der Reiseroute wird in Visual Studio geöffnet.

  2. Speichern Sie alle Projektartefakte.

  3. Navigieren Sie in Windows Explorer zu C:\HowTos\Itineraries. Beachten Sie die Erstellung Ihrer Reiserouten-XML (RequestResponse.xml).

So testen Sie die Reiseroute

  1. Öffnen Sie die Beispielanwendung "Itinerary Test Client", indem Sie die Verknüpfung verwenden, die während der Voraussetzungen für die Entwicklungsaktivitäten (C:\HowTos\ESB.Itinerary.Test.exe - Verknüpfung) erstellt wurde.

  2. Deaktivieren Sie im Programmablauftestclient das Kontrollkästchen WCF-Dienst verwenden .

  3. Aktivieren Sie im Abschnitt Webdienstoptionen das Kontrollkästchen Bidirektionale Dienste , und klicken Sie dann auf Reiseroute laden.

  4. Navigieren Sie im Dialogfeld Reiseroutendatei öffnen zu C:\HowTos\Itineraries. Wählen Sie RequestResponse.xmlaus, und klicken Sie dann auf Öffnen , um die Reiseroute zu laden.

  5. Klicken Sie auf OK , um die Meldung Route erfolgreich geladen zu löschen.

  6. Klicken Sie im Reiseplantestclient auf die Schaltfläche mit den Auslassungspunkten (...) neben dem Feld Nachricht laden .

  7. Navigieren Sie im Dialogfeld Zu ladende XML-Dokument auswählen zu C:\HowTos. Wählen Sie NAOrderDoc.xmlaus, und klicken Sie dann auf Öffnen , um die Testnachricht zu laden.

  8. Klicken Sie auf die Schaltfläche Anforderung übermitteln . Klicken Sie nach Abschluss des Tests auf OK , um die angezeigte Bestätigung zu schließen.

  9. Beachten Sie im Feld Ergebnisse , dass der Stammknoten der Nachricht submitOrderResponse lautet, und der Standardnamespace ist ... canadianservices.

    Hinweis

    Wenn die Antwortnachricht eine zusätzliche Transformation erfordert, bevor die Antwort an die anfordernde Seite gesendet wird, müssen Sie eine Pipeline verwenden, die die ESB-Weiterleitungskomponente enthält. Ein Beispiel für diese Funktionalität finden Sie unter Installieren und Ausführen des Beispiels für mehrere Webdienste.

Weitere Ressourcen

Weitere Informationen finden Sie in folgenden verwandten Themen: