wcf сервис к сервису связи и передачи данных - PullRequest
1 голос
/ 04 декабря 2008

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 04 декабря 2008

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

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

...