Selección avanzada de formato

Este ejemplo muestra cómo extender el modelo de programación REST de Windows Communication Foundation (WCF) para admitir los nuevos formatos de respuestas salientes. Además, el ejemplo utiliza una plantilla T4 para devolver la respuesta como una página XHTML y muestra cómo se puede implementar un modelo de programación del estilo de vista.

Detalles del ejemplo

El ejemplo está compuesto de un sencillo servicio junto con el código de cliente que realiza las solicitudes al servicio. El servicio admite una sola operación [WebGet], que tiene la siguiente firma de método: Message EchoListWithGet(string list);

Cuando el cliente realiza una solicitud al servicio, proporciona una lista separada por comas de elementos a partir del parámetro de cadena de consulta list y el servicio devuelve esa misma lista en uno de los siguientes formatos: XML, JSON, Atom, XHTML o jpeg.

El formato de la respuesta que devuelve el servicio viene determinado en primer lugar por un parámetro de cadena de consulta format y en segundo lugar por un encabezado HTTP Accept que se proporciona con la solicitud. Si el valor del parámetro de cadena de consulta format es uno de los formatos anteriores, la respuesta se devuelve en ese formato. Si la cadena de consulta format no está presente, el servicio recorre en iteración los elementos de encabezado Accept de la solicitud y devuelve el formato del primer tipo de contenido que el servicio admita.

Hay que tener en cuenta el tipo de valor devuelto de la operación. El modelo de programación REST de WCF solo admite los formatos nativos de respuesta de JSON y XML cuando una operación devuelve un tipo distinto de Message. Sin embargo, al utilizar Message como el tipo de valor devuelto, el desarrollador de software tiene un control completo sobre cómo se debería dar formato al contenido del mensaje.

En el ejemplo se utilizan los métodos CreateXmlResponse, CreateAtom10Response y CreateJsonResponse para serializar la lista de cadenas en los mensajes XML, JSON y ATOM, respectivamente. Para el formato de respuesta jpeg, se usa el método CreateStreamResponse y la imagen se guarda en el flujo. Para la respuesta XHTML, CreateTextResponse se utiliza junto con una plantilla T4 preprocesada, que está compuesta de un archivo .tt y de un archivo .cs generado automáticamente. El archivo .tt permite que los desarrolladores de software escriban una respuesta en un formulario de plantilla que contenga variables y estructuras de control. Para obtener más información sobre T4, vea Generar artefactos con plantillas de texto.

El ejemplo consta de un servicio autohospedado y un cliente que se ejecuta dentro de 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 este ejemplo

  1. Abra la solución del ejemplo de selección avanzada de formato. Al iniciar Visual Studio 2010, debe ejecutarlo como administrador para que el ejemplo se ejecute correctamente. Para ello, haga clic con el botón secundario en el icono de Visual Studio 2010 y elija Ejecutar como administrador en el menú contextual.

  2. Presione F6 para compilar la solución y, a continuación, presione Ctrl-F5 para ejecutar el proyecto AdvancedFormatSelection de la aplicación de consola sin depurar. La ventana de la consola aparece y proporciona el URI del servicio en ejecución y el URI de la página de Ayuda HTML para este.

  3. A medida que se ejecute el ejemplo, el cliente envía las solicitudes al servicio y escribe las respuestas en la ventana de la consola. Observe los diferentes formatos de las respuestas: XML, JSON, Atom y XHTML.

  4. A continuación le solicitan que busque un URI en el que pueda solicitar la respuesta en formato .jpeg. Abra un explorador y busque el URI dado.

  5. Presione cualquier tecla para terminar el ejemplo.

Ee662965.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de Windows Communication Foundation (WCF) y WF. Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Web\AdvancedFormatSelection