Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra cómo se utiliza el uso y las propiedades de estilo en XmlSerializerFormatAttribute y en 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.
![]() |
---|
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. Lo siguiente es 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" >100</n1>
<n2 xsi:type="xsd:double" >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 está basado en 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) se deberían ver utilizando Herramienta del visor de seguimiento de servicio (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 Trace Viewer tool, seleccione Mensajes en los recuadros de la izquierda y derecha de la herramienta.
El código siguiente muestra el contrato de servicios con la propiedad Use establecida en Encoded y el formato del cuerpo del mensaje cambiados del Document predeterminado a Rpc.
[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. Observe también el impacto en los metadatos viendo https://localhost/ServiceModelSamples/service.svc? wsdl. Los metadatos para los servicios se irrumpen normalmente en varias páginas. La página wsdl principal contiene los enlaces de WSDL, pero vea https://localhost/ServiceModelSamples/service.svc de la vista? wsdl=wsdl0 para observar las definiciones del mensaje.
Para configurar, compilar y ejecutar el ejemplo
Asegúrese de realizar los Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Cree un directorio C:\LOGS para registrar los mensajes. Proporcione a los usuarios permisos de escritura de servicio de red para este directorio.
Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Compilación de los ejemplos de Windows Communication Foundation.
Para ejecutar el ejemplo en una configuración con un único equipo o con varios, siga las instrucciones de Running the Windows Communication Foundation Samples.
![]() |
---|
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\Contract\Message\UseAndStyle
|