Establecimiento del uso y estilo de las propiedades

El ejemplo UseAndStyle muestra cómo se utilizan las propiedades Use y Style en XmlSerializerFormatAttribute y DataContractFormatAttribute. Estas propiedades afectan a la forma en que se ha dado formato a los mensajes. De forma predeterminada, se da formato al cuerpo del mensaje con el estilo establecido en Document. Esta configuración se puede especificar en el nivel del contrato de servicios o en el nivel del contrato de operación.

Nota

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

La propiedad de estilo Style determina cómo se da formato a los metadatos de WSDL para el servicio. Los valores posibles son Document, y Rpc. RPC significa que la representación de WSDL de los mensajes intercambiados para una operación contiene parámetros como si fuera una llamada de procedimiento remoto. A continuación se muestra un ejemplo.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="n1" type="xsd:double"/>
  <wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>

Establecer el estilo en Document quiere decir que la representación de WSDL contiene un elemento único que representa el documento que se intercambia para una operación tal y como se muestra en el ejemplo siguiente.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>

La propiedad Use determina el formato del mensaje. Los valores posibles son Literal y Encoded; el valor predeterminado es Literal. Literal significa que el mensaje es una instancia literal del esquema en WSDL, tal y como se muestra en el siguiente ejemplo de documento/literal.

<Add xmlns="http://Microsoft.ServiceModel.Samples">
  <n1>100</n1>
  <n2>15.99</n2>
</Add>

Codificado significa que los esquemas en WSDL son especificaciones abstractas que se codifican según las reglas situadas en la sección 5 de SOAP 1.1. El siguiente es un ejemplo de RPC/Encoded.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
  <n1 xsi:type="xsd:double" xmlns="">100</n1>
  <n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>

El WS-I Basic Profile 1.0 prohibe el uso de Encoded y se debería utilizar solo cuando los servicios heredados así lo requieran. El formato de mensaje Encoded solo está disponible al utilizar XmlSerializer.

Para permitirle ver los mensajes enviados y recibidos, este ejemplo se basa en el ejemplo Seguimiento y registro de mensajes. La configuración de servicio y código fuente se han modificado para habilitar y utilizar el seguimiento y registro de mensajes. Además, WSHttpBinding se ha configurado sin la seguridad, por lo que los mensajes anotados se pueden ver en un formato no cifrado. Los registros de seguimiento resultantes (System.ServiceModel.e2e y Message.log) deberían verse con la herramienta Service Trace Viewer (SvcTraceViewer.exe). Los rastros se configuran para ser creados en la carpeta C:\LOGS. Cree la carpeta antes de ejecutar el ejemplo. Para ver el contenido del mensaje en la herramienta Service Trace Viewer, seleccione Mensajes en los paneles de la izquierda y la derecha de la herramienta.

El código siguiente muestra el contrato de servicios con la propiedad Use establecida en OperationFormatUse y el formato del cuerpo del mensaje cambiados del OperationFormatStyle predeterminado a Document.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
                                 Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
}

Para ver la diferencia entre el Use diferente y los valores Style, modifíquelos en el servicio, regenere el cliente, ejecute el ejemplo y examine el archivo c:\logs\message.logs con la herramienta Service Trace Viewer. Vea también http://localhost/ServiceModelSamples/service.svc?wsdl para observar el impacto en los metadatos. Los metadatos para los servicios se irrumpen normalmente en varias páginas. La página principal de WSDL contiene los enlaces de WSDL, pero vea http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 para observar las definiciones de mensajes.

Configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Cree un directorio C:\LOGS para registrar los mensajes. Proporcione a los usuarios permisos de escritura de servicio de red para este directorio.

  3. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  4. Para ejecutar el ejemplo en una configuración de una sola máquina o de varias máquinas, siga las instrucciones que se indican en Ejecución de los ejemplos de Windows Communication Foundation.