Compartir vía


Establecer las propiedades de uso y estilo

En el ejemplo UseAndStyle se muestra cómo usar las propiedades Use y Style en XmlSerializerFormatAttribute y DataContractFormatAttribute. Estas propiedades afectan a cómo se da formato a los mensajes. De forma predeterminada, el cuerpo del mensaje tiene formato con el estilo establecido en Document. Esta configuración se puede especificar en el nivel de contrato de servicio o en el nivel de 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 Style propiedad 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 WSDL de los mensajes intercambiados para una operación contiene parámetros como si fuera una llamada a 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 significa que la representación de WSDL contiene un único elemento que representa el documento que se intercambia para una operación, como se muestra en el ejemplo siguiente.

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

La Use propiedad 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 el WSDL, como se muestra en el siguiente ejemplo Document/Literal.

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

Codificado significa que los esquemas del WSDL son especificaciones abstractas que se codifican según las reglas que se encuentran en la sección 5 de SOAP 1.1. A continuación se muestra un ejemplo RPC/Codificado.

<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 del Encoded mensaje solo está disponible cuando se usa XmlSerializer.

Para permitirle ver los mensajes que se envían y reciben, este ejemplo se basa en el seguimiento y el registro de mensajes. La configuración del servicio y el código fuente se han modificado para habilitar y utilizar el seguimiento y el registro de mensajes. Además, WSHttpBinding se ha configurado sin seguridad, por lo que los mensajes registrados se pueden ver en un formato sin cifrar. Los registros de seguimiento resultantes (System.ServiceModel.e2e y Message.log) deben verse mediante la Herramienta visor de seguimiento de servicio (SvcTraceViewer.exe). Los rastros están configurados para crearse en la carpeta C:\LOGS. Cree la carpeta antes de ejecutar el ejemplo. Para ver el contenido del mensaje en la herramienta Visor de seguimiento, seleccione Mensajes en los paneles izquierdo y derecho de la herramienta.

En el código siguiente se muestra el contrato de servicio con la Use propiedad establecida en OperationFormatUse y el formato del cuerpo del mensaje ha cambiado de predeterminado OperationFormatStyle 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 las distintas configuraciones de Use y Style, modifíquelas en el servicio, vuelva a generar el cliente, ejecute la muestra y examine el archivo c:\logs\message.logs con la herramienta Visor de Seguimiento de Servicio. Observe también el impacto en los metadatos mediante la visualización de http://localhost/ServiceModelSamples/service.svc?wsdl. Normalmente, los metadatos de los servicios se dividen 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.

Para 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 mensajes. Conceda al usuario permisos de escritura del 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 máquina única o entre máquinas, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.