Предоставление типа данных WCF внешним модулям
Я делаю клиент-серверное приложение. Серверная часть реализована с помощью службы WCF. Служба WCF предоставляет типы данных через контракт на обслуживание. Клиент является модульным и использует MEF для DI. В клиенте у меня есть модуль инфраструктуры, который ссылается на службу WCF. Модуль инфраструктуры знает о типах данных WCF. Мой вопрос заключается в том, можно ли позволить другим модулям, которые ссылаются на инфраструктуру, знать об этих типах данных, не добавляя ссылку на службу WCF в каждом модуле. Есть ли способ разоблачения типов данных WCF?
2 ответа
Как правило, у вас есть контракт DLL. Этот контракт DLL содержит интерфейс службы и все зависимые классы. Ваша служба WCF и любой клиентский компонент будут ссылаться на эту контрактную сборку.
Поскольку сборка контракта содержит только интерфейсы и POCO (обычный старый объект CLR, только данные, а не методы или логику), на нее можно ссылаться практически из любого места, не отдавая ничего в вашей инфраструктуре.
nvoights answere, вероятно, является правильным здесь, однако также стоит упомянуть, что если вы управляете и сервером, и клиентом, то вы можете, если хотите, поместить общие объекты в dll, используемые обоими, и игнорировать типы генерации WCF. В некоторых senarios это работает лучше, чем управление как типами серверов, так и WCF, сгенерированными эквивалентными типами.