Ejemplo de modelo de programación web básica
Este ejemplo muestra las extensiones del modelo de programación web Windows Communication Foundation (WCF) de los elementos básicos, implementando un servicio que se puede llamar a utilizar HTTP GET y POST. Para simplificar, el ejemplo se implementa como un proceso único que hospeda el servicio e implementa un cliente. El cliente llama al servicio utilizando Http.
Nota
Para generar y ejecutar este ejemplo, es necesario que esté instalado .NET Framework versión 3.5. Para abrir los archivos de solución y proyecto se necesita Visual Studio 2008.
Nombres de ensamblados y espacios de nombres
El modelo de programación web WCF está implementado en el ensamblado System.ServiceModel.Web incluido en este SDK. Este ensamblado se deriva de System.ServiceModel, que se instala como parte de .NET Framework 3.0.
El archivo Program.cs (qué contiene el servicio y el cliente) referencia los espacios de nombres importantes siguientes:
System.ServiceModel, el espacio de nombres de nivel superior para el modelo de programación de WCF.
System.ServiceModel.Web, el espacio de nombres de nivel superior para las extensiones de modelo de programación web, incluidos los nuevos WebGetAttribute y los atributos WebInvokeAttribute.
System.ServiceModel.Description , el espacio de nombres que contiene el WebHttpBinding y WebHttpBehavior.
Servicio
El servicio del ejemplo expone un contrato con dos operaciones: EchoWithGet
y EchoWithPost
, como se muestra en el código siguiente.
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet]
string EchoWithGet(string s);
[OperationContract]
[WebInvoke]
string EchoWithPost(string s);
}
Como con otros servicios WCF, el atributo ServiceContractAttribute se aplica al contrato IService
y OperationContractAttribute se aplica a sus métodos. Este contrato de servicios utiliza dos nuevos atributos de modelo de programación web: WebGetAttribute y WebInvokeAttribute. Estos atributos indican cómo las operaciones del contrato se deberían exponer sobre HTTP.
El atributo WebGetAttribute se aplica al método EchoWithGet
, que indica que el método se debería exponer en un URI lo cual responde al método HTTP GET (por ejemplo, https://localhost:8000/EchoWithGet? s=Hello, world!)WCF los clientes, así como los exploradores web, pueden utilizar este URI. WebInvokeAttribute se aplica al método EchoWithPost
, que indica que la operación se debería exponer en un URI que responde al método HTTP POST. Los parámetros al método están codificados como XML en el cuerpo de la solicitud POST. Los clientes WCF pueden utilizar este URI así como los clientes web que pueden crear las solicitudes HTTP POST con cuerpos de XML (por ejemplo, el examinador el objeto XmlHttpRequest
). Para obtener más información acerca de el modelo de programación web, vea el ejemplo Ejemplo de programación web avanzada en este SDK.
El extremo para el servicio se define explícitamente como sigue.
using (WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress))
{
host.Open();
...
}
El servicio se hospeda utilizando el tipo WebServiceHost, que es un nuevo derivado de ServiceHost que simplifica los servicios de alojamiento que utiliza las extensiones de modelo de programación web. WebServiceHost crea automáticamente un extremo predeterminado en la dirección base utilizando WebHttpBinding y WebHttpBehavior, así que no hay ninguna necesidad de definir explícitamente el extremo. Este tipo es un nuevo enlace estándar para comunicar directamente sobre Http sin SOAP. Este enlace admite los mensajes XML así como otros tipos de contenido no XML (como texto sin formato, imágenes u otras secuencias de bytes).
Cliente
Este ejemplo también muestra cómo puede utilizar el modelo de programación web en el cliente para enviar las solicitudes HTTP.
Se ha creado un canal de cliente utilizando WebChannelFactory.
using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
IService channel = cf.CreateChannel();
...
}
Similar a WebServiceHost, WebChannelFactory
crea un extremo predeterminado en la dirección base usando WebHttpBinding y WebHttpBehavior.
Una vez creado WebChannelFactory
, la aplicación cliente crea un canal para el servicio y llama EchoWithGet
seguido de EchoWithPost
.
Cuando la interacción ha finalizado, el programa espera por la pulsación de una tecla. Durante este período, el servicio está realizando escuchas todavía activamente. Cuando se presiona una tecla, el cliente y el servidor se cierran y el programa finaliza.
Al ejecutar el servicio, se muestra el resultado siguiente.
Calling EchoWithGet via HTTP GET:
Output: You said Hello, world
Se puede generar el mismo resultado yendo a en un explorador web mientras se ejecuta el ejemplo.
Calling EchoWithPost via HTTP POST:
Output: You said Hello, world
Press any key to terminate
Para configurar, generar y ejecutar el ejemplo
Asegúrese de que ha realizado el Procedimiento de instalación único para ejemplos de Windows Communication Foundation.
Para generar el código C# o Visual Basic .NET edición de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.
Para ejecutar el ejemplo en una configuración con un único equipo o con varios, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.
Consulte también
Otros recursos
Ejemplo de programación web avanzada
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.