Cómo: Transformar un mensaje y enrutarlo a un punto de conexión de servicio mediante un patrón de intercambio de mensajes de solicitud y respuesta
Objetivo
En esta sección se muestra cómo usar esB Designer lenguaje específico del dominio (DSL) para crear un itinerario de solicitud-respuesta que se puede usar con una rampa bidireccional. Creará una lista de distribución para recibir un mensaje, transformar el mensaje, enviar el mensaje a un servicio y devolver el mensaje de respuesta del servicio al remitente del mensaje original.
En este tema de procedimientos, completará los pasos siguientes:
Cree una lista de enrutamiento de itinerarios con un servicio de itinerarios de transformación que implemente un mapa de Microsoft BizTalk Server.
Configure el itinerario para enrutar el mensaje transformado a un punto de conexión de servicio.
Configure el itinerario para devolver el mensaje de respuesta del servicio a la entidad de envío original.
Pruebe el itinerario mediante la aplicación de ejemplo Cliente de prueba de itinerarios.
Requisitos previos
Los procedimientos de este tema de procedimientos requieren la finalización de los requisitos previos para las actividades de desarrollo.
Pasos
Para crear un modelo DSL de itinerario de ESB
En Visual Studio, abra C:\HowTos\Patterns\Patterns.sln.
En Explorador de soluciones, haga clic con el botón derecho en el proyecto ItineraryLibrary, seleccione Agregar y, a continuación, haga clic en Nuevo itinerario.
En el cuadro de diálogo Agregar nuevo elemento , en el cuadro Nombre , escriba RequestResponse y, a continuación, haga clic en Agregar.
Para configurar las propiedades del itinerario
En Visual Studio, haga clic en la superficie de diseño de RequestResponse.itinerary. En el ventana Propiedades RequestResponse, configure las siguientes propiedades:
En la lista desplegable Is Request Response (Respuesta de solicitud), haga clic en True.
En la lista desplegable Exportador de modelos, haga clic en Exportador de itinerarios XML.
En la sección Configuración de extensor , junto a la propiedad Archivo XML de itinerario , haga clic en el botón de puntos suspensivos (...).
En el cuadro de diálogo Seleccionar archivo XML , en el cuadro Nombre de archivo , escriba C:\HowTos\Itinerarios\RequestResponse y, a continuación, haga clic en Guardar.
Nota
Este paso le permite exportar el itinerario como XML a una ubicación de archivo local. Al exportar un itinerario a una ubicación de archivo local, en lugar de a la base de datos de itinerarios, permite realizar pruebas del itinerario mediante la aplicación cliente de prueba de ESB. Completará este proceso más adelante en este tema de procedimientos.
Para definir la estructura del itinerario
En el Cuadro de herramientas, arrastre un elemento de modelo on-Ramp a la superficie de diseño. En el ventana Propiedades OnRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba ReceiveNAOrder.
En la lista desplegable Extender , haga clic en On-Ramp ESB Extender.
En la lista desplegable Aplicación de BizTalk , haga clic en Microsoft.Practices.ESB.
En la lista desplegable Puerto de recepción, haga clic en OnRamp.Itinerary.Response.
En el Cuadro de herramientas, arrastre un elemento de modelo de Servicio de itinerarios a la superficie de diseño y, a continuación, colóquelo a la derecha del elemento de modelo On-Ramp . En el ventana Propiedades ItineraryService1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba MapNAOrderToCNOrder.
En la lista desplegable Extender del servicio de itinerarios , haga clic en Extender de mensajería.
Nota
Esta propiedad define que el proceso tendrá lugar en una canalización (mensajería). Como alternativa, si el proceso tendrá lugar en una orquestación, establezca la propiedad Itinerary Service Extender en Orchestration Extender.
En la lista desplegable Contenedor , expanda ReceiveNAOrdery, a continuación, haga clic en Controladores de recepción.
En la lista desplegable Nombre de servicio , haga clic en Microsoft.Practices.ESB.Services.Transform.
Haga clic con el botón derecho en la colección Resolver del elemento de modelo MapNAOrderToCNOrder y, a continuación, haga clic en Agregar nuevo solucionador. En el ventana Propiedades Resolver1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba StaticallySpecifyTheMap.
En la lista desplegable Implementación del solucionador , haga clic en Extensión de resolución estática.
En la lista desplegable Tipo de transformación, haga clic en GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento del modelo ReceiveNAOrder al elemento de modelo MapNAOrderToCNOrder .
En el Cuadro de herramientas, arrastre un elemento de modelo de Servicio de itinerarios a la superficie de diseño y colóquelo a la derecha del elemento de modelo MapNAOrderToCNOrder . En el ventana Propiedades ItineraryService1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba RouteToCNService.
En la lista desplegable Extender del servicio de itinerarios , haga clic en Extender de mensajería.
Nota
Esta propiedad define que el proceso tendrá lugar en una canalización (mensajería). Como alternativa, si el proceso tendrá lugar en una orquestación, establezca la propiedad Itinerary Service Extender en Orchestration Extender.
En la lista desplegable Contenedor , expanda ReceiveNAOrdery, a continuación, haga clic en Controladores de recepción.
En la lista desplegable Nombre de servicio , haga clic en Microsoft.Practices.ESB.Services.Routing.
Haga clic con el botón derecho en la colección Resolver del elemento de modelo RouteToCNService y, a continuación, haga clic en Agregar nuevo solucionador. En el ventana Propiedades Resolver1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba StaticallySpecifyTheService.
En la lista desplegable Implementación del solucionador , haga clic en Extensión de resolución estática.
En la lista desplegable Nombre de transporte , haga clic en WCF-BasicHttp.
Haga clic en la propiedad Ubicación de transporte y, a continuación, escriba http://localhost/ESB.CanadianServices/SubmitPOService.asmx.
Haga clic en la propiedad Espacio de nombres de destino y escriba http://globalbank.esb.dynamicresolution.com/canadianservices.
Haga clic en la propiedad Action y escriba submitOrder.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo MapNAOrderToCNOrder al elemento de modelo RouteToCNService .
Desde el Cuadro de herramientas, arrastre un elemento de modelo Off-Ramp a la superficie de diseño y colóquelo a la derecha del elemento de modelo RouteToCNService . En el ventana Propiedades OffRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba InvokeCNService.
En la lista desplegable Extender , haga clic en Off-Ramp ESB Extender.
En la lista desplegable Aplicación de BizTalk , haga clic en GlobalBank.ESB.
En la lista desplegable Puerto de envío, haga clic en DynamicResolutionSolicitResp.
En el Cuadro de herramientas, arrastre un elemento de modelo de Servicio de itinerarios a la superficie de diseño y colóquelo entre el elemento de modelo RouteToCNService y el elemento del modelo InvokeCNService . En el ventana Propiedades ItineraryService1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba SendPortFilter.
En la lista desplegable Extender del servicio de itinerarios , haga clic en Extender fuera de rampa.
En la lista desplegable Off-Ramp ,expanda InvokeCNServicey, a continuación, haga clic en Enviar controladores.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo RouteToCNService al elemento de modelo SendPortFilter .
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo SendPortFilter al elemento de modelo InvokeCNService .
Haga clic con el botón derecho en la superficie de diseño y, a continuación, haga clic en Validar.
Nota
El itinerario valida; no es necesario volver a conectar la rampa de salida a la rampa para volver a enviar el mensaje de respuesta a la parte solicitante. Mediante el uso de una rampa bidireccional, el mensaje final se devuelve automáticamente a la parte solicitante.
Para exportar el modelo para su uso con el cliente de prueba de itinerarios
En Visual Studio, haga clic con el botón derecho en la superficie de diseño del itinerario RequestResponse y, a continuación, haga clic en Exportar modelo.
Nota
La versión XML del itinerario se abre en Visual Studio.
Guarde todos los artefactos del proyecto.
En el Explorador de Windows, vaya a C:\HowTos\Itinerarios. Observe la creación del XML del itinerario (RequestResponse.xml).
Para probar el itinerario
Abra la aplicación de ejemplo Cliente de prueba de itinerarios mediante el acceso directo creado durante los requisitos previos para las actividades de desarrollo (C:\HowTos\ESB.Itinerary.Test.exe - Acceso directo).
En el cliente de prueba de itinerarios, desactive la casilla Usar servicio WCF .
En la sección Opciones del servicio web , active la casilla Servicio bidireccional y, a continuación, haga clic en Cargar itinerario.
En el cuadro de diálogo Abrir archivo de itinerario , vaya a C:\HowTos\Itinerarios. Seleccione RequestResponse.xmly haga clic en Abrir para cargar el itinerario.
Haga clic en Aceptar para borrar el mensaje Itinerario cargado correctamente .
En el cliente de prueba de itinerarios, haga clic en el botón de puntos suspensivos (...) situado junto al cuadro Cargar mensaje .
En el cuadro de diálogo Seleccionar documento XML para cargar , vaya a C:\HowTos. Seleccione NAOrderDoc.xmly haga clic en Abrir para cargar el mensaje de prueba.
Haga clic en el botón Enviar solicitud . Cuando finalice la prueba, haga clic en Aceptar para descartar la confirmación que aparece.
En el cuadro Resultados , observe que el nodo raíz del mensaje es submitOrderResponse y el espacio de nombres predeterminado es ... canadianservices.
Nota
Si el mensaje de respuesta requiere una transformación adicional antes de enviar la respuesta al usuario solicitante, debe usar una canalización que contenga el componente reenviador de ESB. Para obtener un ejemplo de esta funcionalidad, consulte el ejemplo De instalación y ejecución de varios servicios web.
Recursos adicionales
Para obtener más información, vea los siguientes temas relacionados: