Compartir a través de


Cómo exponer un contrato a clientes web y de SOAP

De forma predeterminada, Windows Communication Foundation (WCF) pone los extremos únicamente a disposición de los clientes SOAP. En Cómo crear un servicio básico de estilo web, un extremo se pone a disposición de los clientes que no son SOAP. Puede haber veces en las que desee poner el mismo contrato a disposición de ambos modos, como, por ejemplo, un extremo web y un extremo SOAP. En este tema se muestra un ejemplo sobre cómo hacerlo.

Para definir el contrato de servicios

  1. Defina un contrato de servicios mediante una interfaz marcada con los atributos ServiceContractAttribute, WebInvokeAttribute y WebGetAttribute.

    Nota

    De forma predeterminada, WebInvokeAttribute asigna las llamadas POST a la operación. Puede, sin embargo, especificar el método para asignar a la operación especificando un "método =" parámetro. WebGetAttribute no tiene un "método =" parámetro y sólo asigna llamadas GET a la operación de servicio.

  2. Implemente el contrato de servicios.

Para hospedar el servicio.

  1. Crear un objeto ServiceHost.

  2. Agregue un ServiceEndpoint con BasicHttpBinding para el extremo de SOAP.

  3. Agregue un ServiceEndpoint con WebHttpBinding para el extremo que no es SOAP y agregue el WebHttpBehavior al extremo.

  4. Llame a Open() en una instancia de ServiceHost para abrir el host del servicio.

Para llamar a las operaciones de servicio asignadas a GET en Internet Explorer

  1. Abra Internet Explorer y escriba "https://localhost:8000/EchoWithGet? s=Hello, world!" y pulse ENTER. La dirección URL contiene la dirección base del servicio ("https://localhost:8000/"), la dirección relativa del extremo (""), la operación del servicio que se ha de llamar ("EchoWithGet") y un signo de interrogación seguido por una lista de parámetros con nombre separados por una Y comercial (&).

Realización de llamadas a las operaciones de servicio en el extremo web mediante código

  1. Cree una instancia de WebChannelFactory dentro de un bloque using.

Nota

Se llama al método Close() de manera automática en el canal al final del bloque using.

  1. Cree el canal y llame al servicio.

Realización de llamadas a operaciones de servicio en el extremo SOAP

  1. Cree una instancia de ChannelFactory dentro de un bloque using.

  2. Cree el canal y llame al servicio.

Cierre del host de servicio.

  1. Cierre el host del servicio.

Ejemplo

A continuación, se muestra una lista de código completa para este tema.

Compilar el código

Cuando se compila Service.cs, haga una referencia a System.ServiceModel.dll y System.ServiceModel.Web.dll.

Consulte también

Referencia

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebServiceHost
ChannelFactory
WebHttpBehavior