Compartir a través de


Extremos SOAP y HTTP

El ejemplo SoapAndHttpEndpoints muestra cómo implementar un servicio basado en RPC y exponerlo con los formatos SOAP y POX (XML básico) usando el modelo de programación web de WCF. Consulte el ejemplo Servicio HTTP básico para obtener más detalles acerca del enlace HTTP del servicio. Este ejemplo se centra en los detalles relativos a la exposición del mismo servicio a través de SOAP y HTTP utilizando enlaces diferentes.

Muestra

Cómo exponer un servicio RPC a través de SOAP y HTTP utilizando WCF.

Debate

Este ejemplo tiene dos componentes: un proyecto de aplicación web (Servicio) que contiene un servicio WCF y una aplicación de consola (Cliente) que invoca las operaciones de servicio mediante enlaces HTTP y SOAP.

El servicio WCF expone dos operaciones, GetData y PutData, que repiten la cadena que se pasó como entrada. A las operaciones de servicio se les anotan los objetos WebGetAttribute y WebInvokeAttribute. Estos atributos controlan la proyección HTTP de estas operaciones. Además, se les anota el objeto OperationContractAttribute, que les permite ser expuestos a través de enlaces SOAP. El método PutData del servicio produce una excepción WebFaultException, que se devuelve a través de HTTP utilizando el código de estado HTTP y se devuelve a través de SOAP como un error SOAP.

El archivo Web.config configura el servicio WCF con tres puntos de conexión:

  • El punto de conexión ~/service.svc/mex que expone los metadatos del servicio para el acceso de los clientes basados en SOAP.

  • El punto de conexión ~/service.svc/http que permite a los clientes tener acceso al servicio utilizando el enlace HTTP.

  • El punto de conexión ~/service.svc/soap que permite a los clientes tener acceso al servicio utilizando el enlace SOAP sobre HTTP.

El punto de conexión HTTP se configura con un punto de conexión estándar <webHttp> que tiene helpEnabled establecido en true. Como resultado, el servicio expone XHTML basado en la página de Ayuda en ~/service.svc/http/help que los clientes basados en HTTP pueden utilizar para tener acceso al servicio.

El proyecto de cliente muestra cómo tener acceso al servicio utilizando un proxy SOAP (generado con la opción Agregar referencia de servicio) y WebClient.

El ejemplo está compuesto de un servicio hospedado en web y una aplicación de consola. A medida que se ejecuta la aplicación de consola, el cliente realiza solicitudes al servicio y escribe la información pertinente de las respuestas en la ventana de la consola.

Para ejecutar el ejemplo

  1. Abra la solución para obtener el ejemplo de extremos HTTP y SOAP.

  2. Presione Ctrl+Mayús+B para compilar la solución.

  3. Si no está abierta aún, presione CTRL+W, S para abrir la ventana del Explorador de soluciones.

  4. En la ventana del Explorador de soluciones, haga clic con el botón derecho en el proyecto Servicio, coloque el cursor sobre la opción Depurar del menú contextual para que aparezca el menú contextual Iniciar nueva instancia. Haga clic en Iniciar nueva instancia. De esta forma se inicia el servidor de desarrollo de ASP.NET, que hospeda el servicio.

  5. En la ventana del Explorador de soluciones, haga clic con el botón derecho en el proyecto Cliente, coloque el cursor sobre la opción Depurar del menú contextual para que aparezca el menú contextual Iniciar nueva instancia. Haga clic en Iniciar nueva instancia.

  6. La ventana de la consola del cliente aparece y proporciona el URI del servicio en ejecución y el URI de la página de Ayuda HTML para este. Puede ver la página de Ayuda HTML en cualquier momento escribiendo su URI en un explorador.

  7. A medida que el ejemplo se ejecuta, el cliente escribe el estado de la actividad actual.

  8. Presione cualquier tecla para terminar la aplicación de consola del cliente.

  9. Presione MAYÚS+F5 para dejar de depurar el servicio.

  10. En el área de notificación de Windows, haga clic con el botón derecho en el icono de servidor de desarrollo de ASP.NET y seleccione Detener en el menú contextual.