Служба WCF - различные контракты данных для конечных точек SOAP + XML и JSON - PullRequest
1 голос
/ 01 марта 2011

У меня есть служба .NET 3.5 WCF, которая в настоящее время является службой SOAP + XML.Теперь необходимо предоставить эту же услугу некоторым клиентам, которым нужны ответы в формате JSON.

При рассмотрении других вопросов SO об этом и их ответах я считаю, что это само по себе должно быть возможно благодаря2 разные конечные точки как объяснено здесь

Однако, у меня есть немного большее осложнение.DataContracts, предоставляемые через службу JSON, необходимо изменить, т. Е. Не все свойства, которые в настоящее время предоставляются службой SOAP, необходимы.JSON-объект должен предоставлять только подмножество свойств.

Есть ли способ заставить сериализатор DataContractJsonSerializer опускать определенные поля, которые украшены атрибутом DataContract? Этот класс запечатантак что наследовать это не вариант.Нужно ли мне писать свой собственный сериализатор здесь, и если да, то как бы я проинструктировал WCF использовать мой собственный сериализатор?

1 Ответ

3 голосов
/ 01 марта 2011

Когда вы используете DataContractSerializer и DataContractJsonSerializer для одного типа, они всегда будут сериализовывать одни и те же свойства, потому что эти классы используют одни и те же правила для сериализации.Самый простой (и правильный) способ - просто определить новый контракт на обслуживание для второго enpoint (или всего нового сервиса) и представить операции с новыми контрактами на данные.

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