2010-11-07 15 views
28

Aunque he leído algunos artículos de WCF sobre el contrato del mensaje, pero no soy capaz de comprender cuál es el uso real del contrato del mensaje. ¿Puedo usar MessageContract en lugar de DataContract o en complemento al DataContract?DataContract vs Message Contrato

+0

posible duplicado de [WCF:? MessageContract, DataContract ... Confundido] (http://stackoverflow.com/questions/673638/wcf-messagecontract-datacontract-confused) –

+0

Consulte este enlace: http: //www.sujitbhujbal.com/2012/05/when-to-use-data-contract-and-message.html –

+0

DataContract es el contrato sobre los datos (clases) que se envían y reciben sobre el servicio. MessageContract es una manera (opcionalmente) de definir la estructura de mensaje SOAP de bajo nivel. (pero no necesita hacer esto, se puede ignorar si tiene mensajes de datos básicos) –

Respuesta

13

A DataContract es una descripción de un tipo que está expuesto y respaldado por su servicio. A MessageContract es una abstracción sobre un mensaje SOAP que le permite dictar explícitamente la estructura del mensaje subyacente.

Están destinados a complementarse entre sí y servir para diferentes propósitos.

+4

¿me puede dar alguna implementación? –

6

Al utilizar DataContract, el servicio puede exponer los tipos que intercambia. Pero el XML (SOAP) que se intercambia no se controla (aunque se ve afectado) por él. Mientras que MessageContract se puede usar para definir explícitamente cómo se estructurará el XML (mensaje SOAP).

8

Marc Gravellanswered a una pregunta similar WCF: MessageContract, DataContract ... Confused?

Una de las ventajas de mensaje-contratos es que se puede configurar la privacidad contra los miembros, pero en muchos casos esto no es necesario. En tales casos , prefiero mantener el contrato lo más simple posible, al igual que un contrato de datos .

0

Una de las mejores partes en el contrato de mensajes que siempre le ayudaría a poner seguridad adicional o escribir un contenedor con el propósito de Autenticación para realizar llamadas autenticadas al servicio (esto podría incluir tanto para WCF como WS) mientras el cliente realiza una llamada al servicio.

El contrato de mensaje también ayuda a diagnosticar la comunicación entre un cliente y el servicio mediante la introducción de un inspector de mensajes diferente.

2

Normalmente, cuando se crean aplicaciones Windows Communication Foundation (WCF), los desarrolladores prestan especial atención a las estructuras de datos y problemas de serialización y no necesitan preocuparse por la estructura de los mensajes en los que se transportan los datos. Para estas aplicaciones, crear contratos de datos para los parámetros o valores devueltos es sencillo.

Sin embargo, a veces el control total de la estructura de un mensaje SOAP es tan importante como el control de su contenido. Esto es especialmente cierto cuando la interoperabilidad es importante o para controlar específicamente problemas de seguridad en el nivel del mensaje o parte del mensaje. En estos casos, puede crear un contrato de mensaje que le permita especificar la estructura del mensaje SOAP preciso requerido.

Para más información: https://msdn.microsoft.com/en-us/library/ms730255(v=vs.110).aspx