2010-08-16 10 views
5

Actualmente estoy experimentando con el uso de servicios de datos de WCF como una forma de abrir nuestro producto un poco más al tiempo que puedo consumir los datos de AJAX. Una cosa que he notado es que el formato represention JSON tiene estos miembros __metada salpicadas a través de los datos, y en la documentación OData he encontrado esto (bajo Representing Entries):Servicios de datos de WCF: cómo evitar los miembros de __metadata

Un opcional "__metadata" nombre/valor par es el único par que debe ser incluido en el objeto que no contiene representa directamente una propiedad de la entrada representada. Este par de nombre/valor no son datos, pero en su lugar, , por convenio definido en este documento , especifica los metadatos para la Entrada que se está representando.

Mi pregunta es si este metadato es opcional, ¿cómo lo desactivo para ahorrar ancho de banda?

Respuesta

2

Tiene razón en que la implementación del servidor de servicios de datos WCF no tiene la capacidad de no enviar el __metadata. El hecho de que el protocolo lo haga opcional no significa que una implementación específica no lo envíe siempre. En este caso, el servidor genera el __metadata porque puede contener información vital para el cliente y sin ello la carga útil puede no tener sentido o proporcionar información incompleta. Actualmente, el servidor tampoco proporciona ninguna opción para cambiar este comportamiento.

+1

Es cierto, pero el servidor podría implementarlo en forma de una opción de consulta personalizada que el cliente conoce que no necesita los metadatos. –

+0

Tienes razón. Puede agregarlo como una función sugerida a nuestro sitio de conexión. Nos ayudará a planificar los próximos lanzamientos. https://connect.microsoft.com/dataplatform/content/content.aspx?ContentID=15540 –

0

Después de pasar un tiempo en Reflector, parece que la única forma de hacerlo es escribiendo mi propia versión de System.Data.Services.Serializers.JsonSerializer. El método que escribe el objeto metada, WriteMetadataObject, se llama desde WriteComplexTypeProperties y WriteElementWithName sin considerar ninguna configuración que omita esa parte.

Ahora tengo que considerar cuánto trabajo es escribir un serializador que escribirá el JSON requerido, y engancharlo en la tubería con un nombre de formato $ personalizado.

Cuestiones relacionadas