Compartir a través de


Tutorial: Publicar servicios WCF con el adaptador de WCF-BasicHttp

Introducción

En este tutorial se publica un servicio de Windows Communication Foundation (WCF) como orquestación de BizTalk mediante el Asistente para publicación de servicios WCF de BizTalk y el adaptador de WCF-BasicHttp. Una orquestación de BizTalk aparece en un cliente externo, como otro servicio web o aplicación WCF, como un servicio WCF mediante la exposición de un punto de conexión WCF mediante el adaptador de WCF-BasicHttp. El adaptador de WCF-BasicHttp se compone tanto de un adaptador de envío como de uno de recepción. En este ejemplo, usará solo el lado de recepción de este adaptador para recibir solicitudes de servicio WCF a través del protocolo HTTP o HTTPS de las aplicaciones cliente WCF.

El adaptador de WCF-BasicHttp usa el enlace BasicHttpBinding para proporcionar una implementación de pila de transporte o protocolo compatible con la versión inicial de los servicios web para servir como puente entre BizTalk Server y la funcionalidad WCF. Proporciona comunicación con servicios y clientes web basados en ASMX compatibles con el perfil básico de servicios web WS-I, versión 1.1 mediante el transporte HTTP o HTTPS con codificación de texto. Mediante el adaptador BasicHttp de WCF, no podrá usar las características avanzadas de comunicación web compatibles con los protocolos WS-*. Para ello, use el adaptador WCF-WSHttp.

En este tutorial se muestra cómo crear una ubicación de recepción de WCF-BasicHttp para publicar una orquestación como un servicio WCF. Configurará Internet Information Services (IIS) para proporcionar hospedaje aislado de ese servicio WCF. Una aplicación cliente llama a la orquestación WCF publicada como ejemplo de cómo un cliente externo podría llamar al servicio WCF publicado a través de Internet para usar su funcionalidad.

Cuando concluya el tutorial, comprenderá cómo se realizan las tareas siguientes:

  • Desde Visual Studio, use el comando Deploy para implementar el servicio WCF en forma de orquestación de BizTalk dentro de un ensamblado de BizTalk en una instancia local de BizTalk Server. La implementación desde Visual Studio crea una aplicación de BizTalk que se rellena con los ensamblados que contienen recursos, tales como orquestaciones, canalizaciones, esquemas y asignaciones que se usarán en la solución de BizTalk.

  • Una vez implementada, la orquestación de BizTalk está disponible para la configuración y el control a través de la consola de administración de BizTalk Server. En este tutorial configurará la ubicación de recepción WCF-BasicHttp para aceptar los mensajes entrantes enviados al servicio WCF que crea el Asistente para publicación de servicios WCF de BizTalk. La ubicación de recepción está hospedada por el host aislado de BizTalk en IIS y actúa como un servicio WCF para llegar a las solicitudes entrantes.

Nota

En este tutorial, usará el Asistente para publicación de WCF de BizTalk o el Asistente para publicación de servicios web de BizTalk para publicar orquestaciones y esquemas de BizTalk como servicios WCF con los adaptadores de WCF. Para publicar orquestaciones y esquemas como servicios web con el adaptador SOAP, use el Asistente para publicación de WCF de BizTalk o el Asistente para publicación de Servicios web de BizTalk.

Requisitos previos

Para llevar a cabo los pasos descritos en este ejemplo, asegúrese de que el entorno instala los siguientes requisitos previos:

  • Tanto el equipo que compila los ensamblados como ejecuta el proceso de implementación y el equipo que ejecuta el ejemplo requieren Microsoft Windows Server 2008 SP2 o Windows Server 2008 R2, Microsoft .NET Framework 4 y Microsoft BizTalk Server.

  • El equipo que se usa para generar los ensamblados y ejecutar el proceso de implementación requiere Microsoft Visual Studio.

  • El equipo que ejecuta el ejemplo requiere los adaptadores de WCF y las herramientas de administración de WCF. Estas son opciones para instalar durante la instalación de Microsoft BizTalk Server.

  • En los equipos que usa para realizar tareas administrativas, debe ejecutarse como una cuenta de usuario que sea miembro del grupo administradores de BizTalk Server para configurar las opciones de la aplicación BizTalk Server en la consola de administración de BizTalk Server. Esta cuenta de usuario también debe ser miembro del grupo de administradores local para la implementación de la aplicación, la administración de las instancias de host y otras tareas que puedan ser necesarias.

  • En cualquier equipo que requiera la funcionalidad WCF, complete el procedimiento de instalación única para los ejemplos de WCF en el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  • En el equipo que ejecuta el ejemplo e importa un enlace o un archivo de .msi en BizTalk Server, asegúrese de que el host no es un host de confianza o se producirá un error en la importación.

  • Debe descargar el código del tutorial y extraerlo en el equipo. Este tutorial forma parte de todo el paquete tutorial del adaptador de WCF. Puede descargar el archivo WCFAdapterWalkthroughs.exe desde el Centro para desarrolladores de BizTalk Server en https://go.microsoft.com/fwlink/?LinkId=194140.

Para implementar la solución de BizTalk de ejemplo, BizTalkApp

  1. Ejecute el archivo WCFBasicHttpReceiveAdapter.exe autoextraícelo y extraiga los archivos en la carpeta C:\WCFBasicHttpReceiveAdapter .

  2. En Microsoft Visual Studio, abra el archivo C:\WCFBasicHttpReceiveAdapter\WCFBasicHttpReceiveAdapter.sln .

  3. El ensamblado Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp contiene una orquestación de BizTalk Server, un mapa y dos esquemas. Debe instalarse en la GAC y necesitará un archivo de clave de nombre seguro para que esto ocurra. Haga clic con el botón derecho en el proyecto de BizTalkApp y, a continuación, haga clic en Propiedades. En la página Propiedades , haga clic en Firma y seleccione Firmar el ensamblado. Haga clic en la flecha abajo de la lista desplegable Elegir un archivo de clave de nombre seguro , haga clic en <Nuevo> y escriba keyfile.snk en el cuadro de texto Nombre de archivo de clave . Desactive Proteger mi archivo de clave con una contraseña y, a continuación, haga clic en Aceptar.

  4. En Explorador de soluciones, haga clic con el botón derecho en el proyecto de BizTalkApp y, a continuación, haga clic en Recompilar.

    Nota

    No intente compilar una solución ni compilar la aplicación WCFClient en este momento. WCFClient no está listo para compilarse en este momento en el ejemplo.

  5. Expanda BizTalkApp y, a continuación, abra DeliveryProcess.odx para revisar. La orquestación toma una solicitud WCF a través de HTTP mediante el adaptador de WCF-BasicHttp. Modifica la solicitud mediante un mapa de transformación y envía la respuesta de nuevo mediante el mismo adaptador de WCF.

    1. Esta orquestación tiene un puerto de solicitud-respuesta lógico que se publicará con el adaptador de WCF-BasicHttp. Se enlazará a un puerto físico en un paso posterior.

    2. Haga clic con el botón derecho en el nodo superior de DeliveryProcess.odx en la ventana del diseñador y, a continuación, seleccione Propiedades. Asegúrese de que la propiedad Modificador de tipo del tipo de puerto es Public.

  6. En Explorador de soluciones, haga clic con el botón derecho en BizTalkApp y, a continuación, haga clic en Propiedades.

    1. Si la base de datos de administración de BizTalk no está hospedada localmente, modifique la propiedad Server si usa un servidor de base de datos diferente. Haga clic en la pestaña Implementación y, a continuación, modifique la propiedad Server para que apunte al servidor de base de datos.

    2. Asegúrese de que la propiedad Application Name está establecida en WCFBasicHttpReceiveAdapter. Se trata del nombre de la aplicación de BizTalk en la que se va a implementar la solución de BizTalk.

    3. En Explorador de soluciones, haga clic con el botón derecho en BizTalkApp y, a continuación, haga clic en Implementar. Si no se implementa de forma local, es posible que sea necesario configurar el servidor SQL Server para permitir conexiones remotas. Para obtener más información, vea Cómo: Habilitar conexiones remotas en SQL Server.

Para publicar la orquestación de ejemplo mediante el Asistente para publicación de Servicio WCF de BizTalk

  1. En este paso, tomará el ensamblado de orquestación recién implementado y lo publicará como un servicio WCF. Para ello, haga clic en Inicio, seleccione Todos los programas, MicrosoftBizTalk Server y, a continuación, haga clic en Asistente para publicación de servicios WCF de BizTalk.

  2. En la página Asistente para publicación de servicios WCF de BizTalk , haga clic en Siguiente.

  3. En la página Tipo de servicio WCF , realice las siguientes acciones para especificar el tipo de servicio WCF que se va a publicar y los puntos de conexión de BizTalk para recibir mensajes WCF y, a continuación, haga clic en Siguiente:

    1. Seleccione la opción Punto de conexión de servicio , que indica que publicará un servicio WCF desde una orquestación en un ensamblado. Seleccione WCF-BasicHttp en la lista desplegable Nombre del adaptador (tipo de transporte).

    2. Active la casilla Habilitar punto de conexión de metadatos para que la ubicación de recepción de WCF hospedada por IIS publique sus metadatos del servicio WCF. Al activar esta casilla, se establece el atributo httpGetEnabled del < elemento trueserviceMetadata> en en Web.Config. Estos metadatos se recuperan cuando una solicitud HTTP/GET lo solicita. Más adelante usará la herramienta SvcUtil.exe para obtener estos datos con el fin de generar una clase de proxy para el código de cliente que se usará para llamar al servicio WCF.

    3. Seleccione la opción Crear ubicaciones de recepción de BizTalk en la siguiente aplicación para crear los puertos de recepción y las ubicaciones correspondientes a cada archivo .svc generado para el adaptador de WCF-BasicHttp. Elija el nombre de la aplicación de BizTalk, WCFBasicHttpReceiveAdapter, donde se generarán los puertos y ubicaciones de recepción y, a continuación, haga clic en Siguiente.

      El asistente crea un archivo de enlace, Binding.XML, para representar ubicaciones de recepción asociadas. Este archivo se encuentra en el directorio web y posteriormente se puede importar manualmente a través de la consola de administración de BizTalk Server.

      Nota

      Si no selecciona una aplicación de BizTalk implementada, se seleccionará la aplicación predeterminada.

  4. En la página Crear servicio WCF , seleccione Publicar orquestaciones de BizTalk como servicio WCF y, a continuación, haga clic en Siguiente. Esto publicará la orquestación especificada en el paso siguiente como un servicio WCF.

  5. Seleccione el ensamblado que contiene la orquestación que se va a publicar. En la página Ensamblado de BizTalk , en el cuadro de texto Archivo de ensamblado de BizTalk (*.dll), haga clic en Examinar para examinar el ensamblado C:\WCFBasicHttpReceiveAdapter\BizTalkApp\bin\Development , haga doble clic en el ensamblado Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp que contiene la orquestación de ejemplo que se va a publicar, haga clic en Abrir y, a continuación, haga clic en Siguiente.

  6. En la página Orquestaciones y puertos , asegúrese de que el nodo Puerto: DeliveryRequestPort está seleccionado en la página y, a continuación, haga clic en Siguiente. Si selecciona este nodo, significará que los nodos de nivel superior correspondientes también se seleccionan. El puerto se publicará con una ubicación de recepción solicitud-respuesta que aloja el adaptador de WCF-BasicHttp.

  7. En la página Propiedades del servicio WCF , en el espacio de nombres Destino del cuadro de texto Servicio WCF , escriba un URI que desee que use este servicio WCF publicado y, a continuación, haga clic en Siguiente. Para este tutorial, deje el URI predeterminado, "<http://tempuri.org/>" en el espacio de nombres Destino del cuadro de texto Servicio WCF.

  8. En la página Ubicación del servicio WCF , realice las siguientes acciones para especificar la ubicación de los servicios WCF que se van a crear y, a continuación, haga clic en Siguiente:

    1. En el cuadro de texto Ubicación , escriba el nombre del directorio web donde se ejecuta el servicio WCF, o haga clic en Examinar y seleccione el directorio web. Para este tutorial, dado que el nombre del ensamblado es el mismo que el directorio virtual, deje la ubicación predeterminada (http://localhost/Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp) en el cuadro de texto Ubicación .

    2. Seleccione la opción Permitir el acceso anónimo al servicio WCF y, a continuación, haga clic en Siguiente. Esta opción permite acceso anónimo al directorio virtual creado. Debido a que este tutorial usa el modo de seguridad de transporte sin autenticación, es necesario que esta opción se seleccione para permitir la autenticación anónima para la aplicación web que este asistente va a crear.

  9. En la página Resumen del servicio WCF , haga clic en Crear para crear el servicio WCF. Este paso crea un puerto de recepción para la orquestación especificada disponible a través del directorio Web especificado.

  10. En la página Finalización del Asistente para publicación de servicios WCF de BizTalk , haga clic en Finalizar.

Para habilitar la aplicación de ejemplo de BizTalk

  1. Haga clic en Inicio, seleccione Todos los programas, MicrosoftBizTalk Server y, a continuación, haga clic en Administración de BizTalk Server.

  2. En la consola de administración de BizTalk Server, expanda Aplicaciones, expanda WCFBasicHttpReceiveAdapter, expanda Orquestaciones, haga clic con el botón derecho en la orquestación DeliveryProcess, haga clic en Propiedades y, a continuación, configure la información de enlace de la siguiente manera:

    1. En el cuadro de diálogo Propiedades de orquestación , haga clic en Enlaces y, a continuación, establezca Host en BizTalkServerApplication.

    2. En el cuadro de diálogo Propiedades de orquestación , seleccione un puerto de recepción para que DeliveryRequestPort se enlace. Para este tutorial, seleccione el puerto de recepción que creó el Asistente para publicación de servicios WCF de BizTalk en el procedimiento anterior y, a continuación, haga clic en Aceptar.

  3. En la consola de administración de BizTalk Server, haga clic con el botón derecho en WCFBasicHttpReceiveAdapter, haga clic en Inicioy, a continuación, haga clic en Iniciar en el cuadro de diálogo Iniciar aplicación.

Para configurar la aplicación Web que aloja el Servicio WCF publicado

  1. Haga clic en Inicio, seleccione Herramientas de administrador y, a continuación, haga clic en Administrador de Internet Information Services (IIS) 7.0.

  2. En el Administrador de IIS, expanda Sitios, expanda Sitio web predeterminado y, a continuación, expanda la aplicación web Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp que creó el Asistente para publicación de servicios WCF de BizTalk .

  3. Cree un grupo de aplicaciones en el que se va a ejecutar este servicio. Haga clic con el botón derecho en Grupos de aplicaciones, haga clic en Agregar grupo de aplicaciones, escriba un nombre para el grupo de aplicaciones y, a continuación, haga clic en Aceptar.

  4. Expanda Grupos de aplicaciones, haga clic con el botón derecho en el grupo de aplicaciones que acaba de crear y, a continuación, seleccione Configuración avanzada. En la sección Modelo de proceso, escriba la cuenta que tiene acceso a las bases de datos de BizTalk Server en el campo Identidad.

  5. En el Administrador de IIS, haga clic en Vista de contenido. En el panel derecho, haga clic con el botón derecho en el archivo .svc del servicio WCF de BizTalk que creó el Asistente para publicación de servicios WCF de BizTalk y, a continuación, haga clic en Examinar. Con esto se abre Internet Explorer para mostrar una página que indica que ha creado correctamente un Servicio WCF. La página también incluye una dirección WSDL completa que puede copiar y usar con una herramienta de metadatos de servicio (svcutil.exe) para recuperar código de proxy y un archivo de configuración que puede usarse para crear una aplicación cliente para el servicio.

  6. Copie en el Portapapeles la línea de comandos SvcUtil.exe con la dirección WSDL completa en la página que Internet Explorer mostró en el paso anterior.

Para crear la clase de proxy para la aplicación de cliente WCF de ejemplo, WCFClient

  1. Cree una clase de proxy para que la aplicación de ejemplo de cliente WCF pueda llamar al servicio WCF. Cuando un proxy no es necesario, escribir el código manualmente es muy complejo, por lo que se recomienda crear un proxy. Abra un símbolo del sistema de Visual Studio y vaya a la carpeta C:\WCFBasicHttpReceiveAdapter\WCFClient donde colocará la clase de proxy y el archivo de configuración de la aplicación.

  2. Pegue la línea de comandos svcutil.exe con la dirección WSDL completa que copió en el procedimiento anterior y, a continuación, presione Entrar para crear la clase proxy y el archivo de configuración de la aplicación. Esta línea de comandos crea BizTalkServiceInstance.cs para la clase de proxy y output.config para el archivo de configuración de la aplicación.

  3. En Visual Studio, en Explorador de soluciones, haga clic con el botón derecho en WCFClient, seleccione Agregar y, a continuación, haga clic en Elemento existente.

  4. En el cuadro de diálogo Agregar elemento existente , vaya a la carpeta WCFClient , seleccione Todos los archivos (*.*) en la lista desplegable Archivos de tipo , seleccione los archivos BizTalkServiceInstance.cs y output.config y, a continuación, haga clic en Agregar.

  5. Para el proyecto WCFClient , expanda Referencias y asegúrese de que el proyecto WCFClient tenga System.ServiceModel como una de sus referencias.

  6. Expanda el proyecto WCFClient , haga clic con el botón derecho enoutput.config, haga clic en Cambiar nombrey, a continuación, escriba App.config para el nuevo nombre.

  7. Haga doble clic en Program.cs para revisar cómo llamar al servicio WCF publicado mediante la clase de proxy generada por Svcutil.exe. Las llamadas para crear instancias e invocar un servicio WCF parecen ser llamadas locales en la simplicidad de la codificación mediante la clase Microsoft_Samples_BizTalk_WCFBasicHttpReceiveAdapter_BizTalkApp_DeliveryProcess_DeliveryRequestPortClient . No hay código adicional necesario para realizar una llamada a un servicio WCF remoto.

  8. En Visual Studio, en el menú Depurar , haga clic en Iniciar sin depurar para ejecutar WCFClient. El código de cliente crea un mensaje DeliveryItem y realiza una llamada al servicio WCF, pasando la dirección, ProductID y Amount.

    DeliveryItem deliveryRequestItem = new DeliveryItem();
    deliveryRequestItem.Address = "One Microsoft Way";
    deliveryRequestItem.ProductID = "00A120c";
    deliveryRequestItem.Amount = "300";
    DeliveryRequestPortClient deliveryProcessClient = new DeliveryRequestPortClient("BasicHttpBinding_ITwoWayAsync");
    DeliveryItem1 deliveryConfirmation = deliveryProcessClient.Submit(deliveryRequestItem);
    

    Si el cliente recibe correctamente el mensaje de respuesta del servicio WCF publicado, muestra el número de confirmación de entrega (una concatenación del ProductID y la dirección) en el mensaje de respuesta.

    Operación de envío llamada con deliveryRequestItem

    Número de confirmación de entrega enviado: 00A120c300One Microsoft Way

    Presione cualquier tecla para continuar . . .

Consulte también

Cómo utilizar el Asistente para publicación de Servicio WCF de BizTalk para publicar orquestaciones como servicios WCF