Получите данные из службы WCF как строго типизированные DTO и XML - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть система из нескольких приложений WCF - A, B, C, D, E.Приложение A отправляет сообщение B, B просматривает подмножество входящих данных и может принять решение получить дополнительную информацию из C и D, а затем отправить все данные в E. Таким образом, B касается только небольшого подмножества данных из A, иеще меньше в C и D, но он должен отправить все это к E.

Прямо сейчас , когда A, C или D изменяет свой контракт , даже в тех частях, которые B не заботятсяо, мне все еще нужно обновить DTO в B (я использую DTO, сгенерированные Visual Studio вместе с клиентским прокси) и выпустить новую версию, потому что я в основном беру данные из одного сгенерированного DTO и сопоставляю их с DTOиз контракта Es.

Как можно, чтобы служба B не заботилась об изменениях в контрактах A, C и D, когда изменения происходят по частям, в которых B является только почтальоном?


Мы полагали, что E может принимать массив объектов со свойствами, такими как «приложение-источник» и «полные данные ответа источника в XML».Но я бы предпочел, чтобы даже эта служба объявила о своем контракте намного сильнее.Чтобы он объявил фактические данные, которые он ожидает.

Источники A, C и D могли бы объявить методы, возвращающие Xml и B, затем проанализировать части, которые ему нужны, и затем отправить все в E. Так же, как и выше, я считаю, что должен быть лучший способ сделать это.

Я хотел бы сохранить контракт каждой службы как можно более строгим - не объявлять тип возвращаемого значения просто XML или даже строкой (содержащий результат, сериализованный в xml), а затем анализировать его в B для забот о частях Bо, а затем передать в целом.


Я думаю, я мог бы каким-то образом сериализовать входящие DTO в XML, включая данные расширения, которые будут приносить любые добавленные данные.Но после некоторого поиска я не уверен, что это путь.Отсутствие открытых методов в свойстве ExtensionData не говорит о его удобном использовании.

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