WCF - Как использовать IDataSurrogate для исключения члена данных, зависит от требований клиента - PullRequest
1 голос
/ 28 марта 2011

Считайте, что у меня есть DataContract с 6 свойствами. одному клиенту нужны первые 3 свойства, а второму клиенту - последние 3 свойства Договора на данные. Как написать Договор данных в сервисе, чтобы Сервис отправлял сообщение только с Обязательными свойствами?

1 Ответ

1 голос
/ 28 марта 2011

Правильный способ сделать это - создать отдельный сервис для каждого клиента. Каждый сервис выставляет операцию, используя свой собственный контракт данных только с необходимыми свойствами. Обе службы просто обернутся вокруг вашей основной логики, работая с целым объектом данных. Если причиной отправки только подмножества свойств является безопасность данных, то создание двух служб является единственно допустимым вариантом.

Если мы рассмотрим это более подробно, проблема здесь заключается в описании услуги. Если вы предоставляете метаданные / WSDL в своем сервисе, он всегда будет содержать весь контракт с данными, потому что вы не можете изменить его динамически. Если клиент создает прокси из этих метаданных, он также получает весь контракт.

Вы можете избежать отправки некоторых свойств в сообщении SOAP, если вы настроите свой контракт , чтобы он не включал свойства со значениями по умолчанию и не устанавливал их в вашем сервисе, но я не думаю, что это хорошее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...