2010-08-16 5 views
5

В настоящее время я экспериментирую с использованием служб данных WCF как способ открыть наш продукт еще немного, в то же время имея возможность потреблять данные из AJAX. Одна вещь, которую я заметил, что формат represention JSON имеет следующие элементы __metada посыпают по данным, и в документации OData Я нашел (под Representing Entries):WCF Data Services: Как избежать членов __metadata

Опциональный «__metadata» имя/значение пара единственная пара, которая должна быть , включенная в объект, который не , непосредственно представляет Имущество Представленная позиция. Эта параимя/значение не является данными, а вместо этого, по соглашению, определенному в этом документе , определяет метаданные для Представляемая запись.

Мой вопрос: если эти метаданные не являются обязательными, как отключить его, чтобы сэкономить пропускную способность?

ответ

2

Вы правы, что реализация сервера служб данных WCF не имеет возможности не отправлять __metadata. Тот факт, что протокол делает это необязательным, не означает, что конкретная реализация не будет отправлять его всегда. В этом случае сервер генерирует __metadata, поскольку он может содержать жизненно важную информацию для клиента и без полезной нагрузки может не иметь смысла или предоставлять неполную информацию. В настоящее время сервер также не предоставляет возможности изменить это поведение.

+1

Правда, но сервер может реализовать его в виде настраиваемого параметра запроса, который известен клиенту, который не нуждается в метаданных. –

+0

Вы правы. Вы можете добавить его как предлагаемую функцию на наш сайт для подключения. Это поможет нам в планировании следующих выпусков. https://connect.microsoft.com/dataplatform/content/content.aspx?ContentID=15540 –

0

Проведя некоторое время в Reflector, это выглядит как единственный способ сделать это, написав мою собственную версию System.Data.Services.Serializers.JsonSerializer. Метод, который записывает объект metada, WriteMetadataObject, вызывается из WriteComplexTypeProperties и WriteElementWithName без учета каких-либо параметров, которые пропустили бы эту часть.

Теперь я должен рассмотреть, сколько работы нужно написать сериализатору, который выписал требуемый JSON, и подключить его к конвейеру с помощью имени пользовательского формата $.

Смежные вопросы