Freigeben über


Vorgehensweise: Implementieren von inhaltsbasiertem Routing mithilfe von Nachrichtenkontexteigenschaften

Zielsetzung

In diesem Abschnitt wird veranschaulicht, wie Sie mithilfe des Microsoft BizTalk ESB Toolkit-Designer eine Reiseroute erstellen, die einen Nachrichtenempfänger basierend auf der Nachrichtenkontexteigenschaft auswählt und dann eine Nachricht mithilfe des Nachrichtenbroker-Messagingdiensts an diesen Empfänger weitergibt.

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

  • Erstellen Sie eine Reiseroute mit einem Routenbroker und zwei Routingdiensten mit statischen Resolvern.

  • Testen Sie die Reiseroute mithilfe der Beispielanwendung routey Test Client.

Hinweis

In der aktuellen Implementierung wird kein orchestrierungsbasierter Brokerdienst bereitgestellt.

Voraussetzungen

Die Prozeduren in diesem 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 in Projektmappen-Explorer mit der rechten Maustaste auf ReiserouteLibrary, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neue Reiseroute.

  3. Klicken Sie im Dialogfeld Neues Element hinzufügen im Bereich Vorlagen auf ReiserouteDsl .

  4. Geben Sie im Feld Nameden Namen ChoiceRouter 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 der ChoiceRouter-Reiseroute . Konfigurieren Sie im ChoiceRouter-Eigenschaftenfenster die folgenden Eigenschaften:

    1. Klicken Sie in der Dropdownliste Modellexporter auf XML-Reiseverlaufsexporter.

    2. Klicken Sie im Abschnitt Extendereinstellungen auf die Schaltfläche mit den Auslassungspunkten (...) neben der Eigenschaft Routes-XML-Datei .

    3. Klicken Sie in der Dropdownliste Exportmodus-Eigenschaft auf Streng.

    4. Geben Sie im Dialogfeld XML-Datei auswählenden Namen C:\HowTos\Itineraries\ChoiceRouter in das Feld Dateiname ein, und klicken Sie dann auf Speichern.

    Hinweis

    Mit diesem Schritt können Sie die Reiseroute als XML an einen lokalen Dateispeicherort exportieren. Wenn Sie eine Reiseroute in einen lokalen Dateispeicherort exportieren und nicht in die Reiseplandatenbank, können Sie die Reiseroute mithilfe der ESB-Testclientanwendung testen. Sie schließen diesen Prozess weiter unten 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 Extender .

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

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

  2. Ziehen Sie aus der Toolbox ein Routey Broker Service-Modellelement auf die Designeroberfläche, und platzieren Sie es dann auf der rechten Seite des On-Ramp-Modellelements . Konfigurieren Sie im ItineraryBrokerService1 die folgenden Eigenschaften:

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

    2. Klicken Sie in der Dropdownliste Extender auf Messaging Broker Extender.

    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.Itinerary.Services.Broker.MessagingBroker.

  3. Klicken Sie mit der rechten Maustaste auf die Sammlung Filter , und klicken Sie dann auf Neuen Filter hinzufügen. Konfigurieren Sie im Eigenschaftenfenster Filter1 die folgenden Eigenschaften:

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

    2. Klicken Sie auf die Dropdownliste Filterimplementierung, und klicken Sie dann auf XPath-Filter.

    3. Klicken Sie auf die Expression-Eigenschaft, und geben Sie count(/ContextProperties/Property[@name='InboundTransportLocation'][contains(., 'ProcessItinerary.asmx')]) 0 ein>.

  4. Klicken Sie mit der rechten Maustaste auf die Sammlung Filter , und klicken Sie dann auf Neuen Filter hinzufügen. Konfigurieren Sie im Eigenschaftenfenster Filter1 die folgenden Eigenschaften:

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

    2. Klicken Sie auf die Dropdownliste Filterimplementierung , und klicken Sie auf XPath-Filter.

    3. Klicken Sie auf die Expression-Eigenschaft , und geben Sie count (/ContextProperties/Property[@name='InboundTransportLocation'][contains(., 'ESB. ItineraryServices.WCF')]) > 0.

  5. Klicken Sie mit der rechten Maustaste auf die Resolver-Auflistung des RouteBrokerService-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 resolverBrokerRoute ein.

    2. Klicken Sie in der Dropdownliste Resolverimplementierung auf MessageContext Resolver Extension.

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

  7. Ziehen Sie aus der Toolbox ein Routey Service-Modellelement auf die Entwurfsoberfläche, und platzieren Sie es dann unter dem Modellelement RouteBrokerService . Konfigurieren Sie im Eigenschaftenfenster ItineraryService1 die folgenden Eigenschaften:

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

    2. Klicken Sie in der Dropdownliste Routey 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.

  8. Klicken Sie mit der rechten Maustaste auf die Resolver-Auflistung des RouteToFileFromASMX-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 ResolverFromAsmx ein.

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

    3. Klicken Sie in der Dropdownliste Transportname auf DATEI.

    4. Klicken Sie auf die Eigenschaft Transportspeicherort , und geben Sie dann c:\howtos\out\asmx%MessageId%.xmlein.

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

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie sendASMXOrder 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 DynamicResolutionOneWay.

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

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

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

    3. Erweitern Sie in der Dropdownliste Off-Ramp den Eintrag SendASMXOrder, und klicken Sie dann auf Sendehandler.

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

  12. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung aus dem SendPortFilterASMX-Modellelement auf das SendASMXOrder-Modellelement .

  13. Ziehen Sie aus der Toolbox ein Routey Service-Modellelement auf die Entwurfsoberfläche, und platzieren Sie es dann rechts neben dem Modellelement RouteBrokerService . Konfigurieren Sie im Eigenschaftenfenster ItineraryService1 die folgenden Eigenschaften:

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

    2. Klicken Sie in der Dropdownliste Routey 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.

  14. Klicken Sie mit der rechten Maustaste auf die Resolver-Auflistung des RouteToFileFromWCF-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 ResolverFromWCF ein.

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

    3. Klicken Sie in der Dropdownliste Transportname auf DATEI.

    4. Klicken Sie auf die Eigenschaft Transportspeicherort , und geben Sie dann c:\howtos\out\wcf%MessageId%.xmlein.

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

    1. Klicken Sie auf die Name-Eigenschaft , und geben Sie sendWCFOrder 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 DynamicResolutionOneWay.

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

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

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

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

  17. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung vom Modellelement RouteToFileFromWCF auf das SendPortFilterWCF-Modellelement .

  18. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung vom SendPortFilterWCF-Modellelement auf das SendWCFOrder-Modellelement .

  19. Ziehen Sie aus der Toolbox ein Modellelement "Itinerary Outport " auf den rechten Rahmen von RouteBrokerService. Konfigurieren Sie im Eigenschaftenfenster ItineraryBrokerOutPort1 die folgenden Eigenschaften:

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

    2. Klicken Sie in der Dropdownliste Filter auf WCFFilter.

    3. Klicken Sie in der Dropdownliste Resolver auf ResolverBrokerRoute.

  20. Ziehen Sie aus der Toolbox ein Modellelement "Itinerary Outport " auf den unteren Rahmen von RouteBrokerService. Konfigurieren Sie im Eigenschaftenfenster ItineraryBrokerOutPort1 die folgenden Eigenschaften:

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

    2. Klicken Sie in der Dropdownliste Filter auf ASMXFilter.

    3. Klicken Sie in der Dropdownliste Resolver auf ResolverBrokerRoute.

  21. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung aus dem WCF-Portmodellelement auf das Modellelement RouteToFileFromWCF .

  22. Klicken Sie in der Toolbox auf Connector. Ziehen Sie eine Verbindung aus dem ASMX-Portmodellelement auf das Modellelement RouteToFileFromASMX .

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

Hinweis

Sie müssen die Reiseroute zweimal exportieren: einmal in XML und einmal in die Datenbank, um das Routing über den Broker zu testen.

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

    Hinweis

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

  2. Navigieren Sie in Windows Explorer zu C:\HowTos\Itineraries, und beachten Sie dann die Erstellung Ihrer Reiserouten-XML (ChoiceRouter.xml).

  3. Klicken Sie in Visual Studio mit der rechten Maustaste auf die Entwurfsoberfläche der ChoiceRouter-Reiseroute , und klicken Sie dann auf Modell exportieren.

  4. Klicken Sie in der Eigenschaftenfenster in der Dropdownliste Modellexporter auf Datenbankroutenexporter.

  5. Legen Sie im Eigenschaftenfenster die Eigenschaft Itinerary Database Verbindungszeichenfolge so fest, dass sie auf die Datenbank der Reiseroute verweist.

  6. Wählen Sie in der Dropdownliste Routesstatus die Option Bereitgestellt aus.

  7. Klicken Sie in Visual Studio mit der rechten Maustaste auf die Entwurfsoberfläche der ChoiceRouter-Reiseroute , und klicken Sie dann auf Modell exportieren.

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 , und klicken Sie dann auf Reiseroute laden.

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

  4. Klicken Sie auf OK , um die Meldung "Route erfolgreich geladen" zu schließen.

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

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

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

  8. Navigieren Sie in Windows Explorer zu C:\HowTos\Out. Vergewissern Sie sich, dass die ASMX%MessageID%.xml-Nachrichten in dieses Verzeichnis geschrieben wurden.

  9. Klicken Sie auf das Kontrollkästchen Programmablauftestclient WCF-Dienst verwenden . Geben Sie im Feld Name der ReiseroutechoiceRouter ein, und klicken Sie dann auf die Schaltfläche Anforderung übermitteln . Klicken Sie nach Abschluss des Tests auf OK , um die Bestätigungsmeldung zu schließen.

  10. Navigieren Sie in Windows Explorer zu C:\HowTos\Out. Überprüfen Sie, ob die WCF%MessageID%.xml-Nachrichten in dieses Verzeichnis geschrieben wurden.

Weitere Ressourcen

Weitere Informationen finden Sie in folgenden verwandten Themen: