Guide pratique pour transformer un message et le router vers un point de terminaison de service à l’aide d’un modèle d’échange de message requête-réponse
Objectif
Cette section montre comment utiliser esb Designer langage spécifique au domaine (DSL) pour créer un itinéraire demande-réponse qui peut être utilisé avec une rampe bidirectionnel. Vous allez créer un bordereau de routage pour recevoir un message, transformer le message, envoyer le message à un service et renvoyer le message de réponse de service à l’émetteur du message d’origine.
Dans cette rubrique de procédure, vous allez effectuer les étapes suivantes :
Créez un bordereau de routage d’itinéraire avec un service de transformation d’itinéraire qui implémente une carte Microsoft BizTalk Server.
Configurez l’itinéraire pour acheminer le message transformé vers un point de terminaison de service.
Configurez l’itinéraire pour renvoyer le message de réponse de service à l’expéditeur d’origine.
Testez l’itinéraire à l’aide de l’exemple d’application Itinerary Test Client.
Prérequis
Les procédures décrites dans cette rubrique de procédure nécessitent l’achèvement des conditions préalables pour les activités de développement.
Étapes
Pour créer un modèle DSL d’itinéraire ESB
Dans Visual Studio, ouvrez C :\HowTos\Patterns\Patterns.sln.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet ItinéraireLibrary, pointez sur Ajouter, puis cliquez sur Nouvel itinéraire.
Dans la boîte de dialogue Ajouter un nouvel élément , dans la zone Nom , tapez RequestResponse, puis cliquez sur Ajouter.
Pour configurer les propriétés de l’itinéraire
Dans Visual Studio, cliquez sur l’aire de conception de RequestResponse.itinerary. Dans la Fenêtre Propriétés RequestResponse, configurez les propriétés suivantes :
Dans la liste déroulante Réponse à la demande , cliquez sur True.
Dans la liste déroulante Exporter de modèle , cliquez sur Exportateur d’itinéraire XML.
Dans la section Paramètres de l’extendeur , en regard de la propriété fichier XML D’itinéraire , cliquez sur le bouton de sélection (...).
Dans la boîte de dialogue Sélectionner un fichier XML , dans la zone Nom de fichier , tapez C :\HowTos\Itineraries\RequestResponse, puis cliquez sur Enregistrer.
Notes
Cette étape vous permet d’exporter l’itinéraire au format XML vers un emplacement de fichier local. L’exportation d’un itinéraire vers un emplacement de fichier local, plutôt que vers la base de données d’itinéraire, permet de tester l’itinéraire à l’aide de l’application cliente de test ESB. Vous terminerez ce processus plus loin dans cette rubrique de procédures.
Pour définir la structure de l’itinéraire
À partir de la boîte à outils, faites glisser un élément de modèle On-Ramp vers l’aire de conception. Dans le Fenêtre Propriétés OnRamp1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez ReceiveNAOrder.
Dans la liste déroulante Extendeur , cliquez sur On-Ramp ESB Extender.
Dans la liste déroulante Application BizTalk , cliquez sur Microsoft.Practices.ESB.
Dans la liste déroulante Port de réception, cliquez sur OnRamp.Itinerary.Response.
À partir de la boîte à outils, faites glisser un élément de modèle service D’itinéraire vers l’aire de conception, puis placez-le à droite de l’élément de modèle On-Ramp . Dans la Fenêtre Propriétés ItineraryService1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez MapNAOrderToCNOrder.
Dans la liste déroulante Extendeur de service d’itinéraire , cliquez sur Extendeur de messagerie.
Notes
Cette propriété définit que le processus aura lieu dans un pipeline (messagerie). Sinon, si le processus a lieu dans une orchestration, définissez la propriété Itinerary Service Extender sur Orchestration Extender.
Dans la liste déroulante Conteneur , développez ReceiveNAOrder, puis cliquez sur Recevoir des gestionnaires.
Dans la liste déroulante Nom du service , cliquez sur Microsoft.Practices.ESB.Services.Transform.
Cliquez avec le bouton droit sur la collection Resolver de l’élément de modèle MapNAOrderToCNOrder , puis cliquez sur Ajouter un nouveau programme de résolution. Dans le Fenêtre Propriétés Resolver1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez StaticallySpecifyTheMap.
Dans la liste déroulante Implémentation du programme de résolution, cliquez sur Extension du programme de résolution statique.
Dans la liste déroulante Type de transformation, cliquez sur GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN.
Dans la boîte à outils, cliquez sur Connecteur. Faites glisser une connexion de l’élément de modèle ReceiveNAOrder vers l’élément de modèle MapNAOrderToCNOrder .
À partir de la boîte à outils, faites glisser un élément de modèle service D’itinéraire vers l’aire de conception, puis placez-le à droite de l’élément de modèle MapNAOrderToCNOrder . Dans la Fenêtre Propriétés ItineraryService1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez RouteToCNService.
Dans la liste déroulante Extendeur de service d’itinéraire , cliquez sur Extendeur de messagerie.
Notes
Cette propriété définit que le processus aura lieu dans un pipeline (messagerie). Sinon, si le processus a lieu dans une orchestration, définissez la propriété Itinerary Service Extender sur Orchestration Extender.
Dans la liste déroulante Conteneur , développez ReceiveNAOrder, puis cliquez sur Recevoir des gestionnaires.
Dans la liste déroulante Nom du service , cliquez sur Microsoft.Practices.ESB.Services.Routing.
Cliquez avec le bouton droit sur la collection Resolver de l’élément de modèle RouteToCNService , puis cliquez sur Ajouter un nouveau programme de résolution. Dans le Fenêtre Propriétés Resolver1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez StaticallySpecifyTheService.
Dans la liste déroulante Implémentation du programme de résolution, cliquez sur Extension du programme de résolution statique.
Dans la liste déroulante Nom du transport , cliquez sur WCF-BasicHttp.
Cliquez sur la propriété Emplacement du transport , puis tapez http://localhost/ESB.CanadianServices/SubmitPOService.asmx.
Cliquez sur la propriété Espace de noms cible , puis tapez http://globalbank.esb.dynamicresolution.com/canadianservices.
Cliquez sur la propriété Action , puis tapez submitOrder.
Dans la boîte à outils, cliquez sur Connecteur. Faites glisser une connexion de l’élément de modèle MapNAOrderToCNOrder vers l’élément de modèle RouteToCNService .
À partir de la Boîte à outils, faites glisser un élément de modèle Off-Ramp vers l’aire de conception, puis placez-le à droite de l’élément de modèle RouteToCNService . Dans le Fenêtre Propriétés OffRamp1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez InvokeCNService.
Dans la liste déroulante Extendeur , cliquez sur Off-Ramp ESB Extender.
Dans la liste déroulante Application BizTalk , cliquez sur GlobalBank.ESB.
Dans la liste déroulante Port d’envoi, cliquez sur DynamicResolutionSolicitResp.
À partir de la boîte à outils, faites glisser un élément de modèle service D’itinéraire vers l’aire de conception, puis placez-le entre l’élément de modèle RouteToCNService et l’élément de modèle InvokeCNService . Dans la Fenêtre Propriétés ItineraryService1, configurez les propriétés suivantes :
Cliquez sur la propriété Name , puis tapez SendPortFilter.
Dans la liste déroulante Extendeur de service d’itinéraire , cliquez sur Extendeur hors rampe.
Dans la liste déroulante Hors rampe , développez InvokeCNService, puis cliquez sur Envoyer des gestionnaires.
Dans la boîte à outils, cliquez sur Connecteur. Faites glisser une connexion de l’élément de modèle RouteToCNService vers l’élément de modèle SendPortFilter .
Dans la boîte à outils, cliquez sur Connecteur. Faites glisser une connexion de l’élément de modèle SendPortFilter vers l’élément de modèle InvokeCNService .
Cliquez avec le bouton droit sur l’aire de conception, puis cliquez sur Valider.
Notes
L’itinéraire valide ; il n’est pas nécessaire de connecter la rampe d’arrêt à la rampe d’accès pour renvoyer le message de réponse à la partie requérante. En utilisant une rampe d’accès bidirectionnel, le message final est automatiquement retourné à la partie requérante.
Pour exporter le modèle à utiliser avec le client de test d’itinéraire
Dans Visual Studio, cliquez avec le bouton droit sur l’aire de conception de l’itinéraire RequestResponse , puis cliquez sur Exporter le modèle.
Notes
La version XML de l’itinéraire s’ouvre dans Visual Studio.
Enregistrez tous les artefacts de projet.
Dans Windows Explorer, accédez à C :\HowTos\Itinéraires. Notez la création de votre xml d’itinéraire (RequestResponse.xml).
Pour tester l’itinéraire
Ouvrez l’exemple d’application Itinerary Test Client à l’aide du raccourci créé pendant les prérequis pour les activités de développement (C:\HowTos\ESB.Itinerary.Test.exe - Raccourci).
Dans le client de test d’itinéraire, désactivez la zone Utiliser le service WCF case activée.
Dans la section Options du service web, sélectionnez la zone Case activée de service bidirectionnel, puis cliquez sur Charger l’itinéraire.
Dans la boîte de dialogue Ouvrir le fichier d’itinéraire , accédez à C :\HowTos\Tineraryes. Sélectionnez RequestResponse.xml, puis cliquez sur Ouvrir pour charger l’itinéraire.
Cliquez sur OK pour effacer le message Itinéraire chargé avec succès .
Dans le client de test d’itinéraire, cliquez sur le bouton de sélection (...) en regard de la zone Charger le message .
Dans la boîte de dialogue Sélectionner un document XML à charger , accédez à C :\HowTos. Sélectionnez NAOrderDoc.xml, puis cliquez sur Ouvrir pour charger le message de test.
Cliquez sur le bouton Envoyer la demande . Une fois le test terminé, cliquez sur OK pour ignorer la confirmation qui s’affiche.
Dans la zone Résultats , notez que le nœud racine du message est submitOrderResponse et que l’espace de noms par défaut est ... canadianservices.
Notes
Si le message de réponse nécessite une transformation supplémentaire avant que la réponse ne soit envoyée à la partie requérante, vous devez utiliser un pipeline qui contient le composant ESB Forwarder. Pour obtenir un exemple de cette fonctionnalité, consultez l’exemple Installation et exécution de plusieurs services web.
Ressources supplémentaires
Pour plus d'informations, consultez les rubriques connexes suivantes :