Сериализация MsmqIntegrationBinding с неизвестными типами тела сообщения - PullRequest
0 голосов
/ 03 июня 2009

Я хочу использовать MsmqIntegrationBinding для интеграции с устаревшей очередью, в которой в качестве тела сообщения используется сериализованный объект. Кто-нибудь придумал способ получить «метаданные» тела сообщения и создать класс на стороне службы для использования внутри службы?

Например, если я добавляю сериализованный объект Product из системы A и мой сервис должен его использовать, как я могу предоставить MsmqMessage тип, если у меня нет класса Product на моей стороне? Я думал о том, чтобы прочитать сообщение в отдельной программе, десериализовать, а затем отправить его через код dom. Идеи?

Ответы [ 2 ]

0 голосов
/ 03 июня 2009

Я искренне рекомендую против попытки выдать десериализованный тип во время выполнения в месте назначения сообщения. Либо работайте с XML в месте назначения, чтобы получить нужные данные, либо создайте контракты данных, которых могут придерживаться как источник, так и место назначения.

0 голосов
/ 03 июня 2009

Хмм ... в WCF вы можете определить методы обслуживания, которые принимают (и, возможно, возвращают) нетипизированный тип Message. Кажется, это вполне соответствует вашему счету.

За исключением сообщений со строгой типизацией, вам придется все собирать сообщения на клиенте и разбирать на сервере посредством чтения необработанного XML - но это, кажется, то, что вы ищу, верно?

Более подробную информацию и образцы можно найти здесь:

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

Марк

...