wcf сервис к сервису связи и передачи данных

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

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

второй сервис имеет класс, который инкапсулирует всю информацию, которая требуется моему сервису для обработки и, в конечном итоге, ретранслируется на внешние сервисы.

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

Что было бы лучшим способом для меня сказать в моем datacontract, что мне требуется этот тип класса без дублирования кода? Могу ли я добавить ссылку на службу для этого второго класса, а затем использовать прокси-класс, который создается в моем контракте данных?

я просто не могу обдумать это, хотя это кажется тривиальной проблемой!

ура за любую помощь!

1 ответ

Если вы пытаетесь избежать дублирования классов, поместите объявление класса в его собственную сборку и поделитесь этим dll между всеми сторонами в службе WCF. Когда вы создаете сервисную ссылку, вы можете выбрать, какие сборки являются общими (при условии, что вы используете служебную утилиту VS GUI).

Использование прокси-класса также может быть хорошим способом. Если вы представляете свой основной класс данных в качестве контракта на данные, а затем создаете прокси-сервер, у него будет версия открытого класса, который может использоваться вашими другими службами.

Другие вопросы по тегам