Проблема с WCF с использованием пространств имен из компонента DLL - PullRequest
0 голосов
/ 14 февраля 2011

У нас здесь есть фреймворк (библиотека классов), в котором есть обычные операции с базой данных (CRUD).Мы также разработали две службы в WCF, чтобы поделиться некоторыми из этих методов.Мы предпочитаем, чтобы службы, размещенные на каждой из них, были отделены от службы Windows.Делая это, наши сотрудники могут остановить только одну услугу, не касаясь другой.

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

Пожалуйста, взгляните на это изображение возможно, оно прояснит ситуацию.

Я не могу получить человека из Службы1 и отправить его обратноService2 (ошибка компиляции).Должен ли я использовать отражение или что-то еще?

1 Ответ

0 голосов
/ 14 февраля 2011

У вас есть по крайней мере два хороших варианта:

  • , если вы хотите придерживаться текущей настройки, вы можете использовать инструмент, такой как AutoMapper , чтобы помочь вам легкоСкопируйте все значения свойств из одного Person класса в другой - он делает это путем сопоставления свойств с их именем, и это действительно работает как шарм!

  • другой вариант будетразделять общие черты - контракты на обслуживание и данные - в отдельной сборке, чтобы как ваши сервисы, так и клиенты, как использовали и ссылались на одну общую сборку.Таким образом, вы можете избежать создания на стороне клиента двух отдельных новых типов - оба клиента будут повторно использовать ваш существующий, общий, общий тип сборки Person, и, следовательно, преобразование / автоматическое сопоставление не потребуется - типы будутодинаково для обоих клиентов.

    Это работает до тех пор, пока вы контролируете оба конца связи (и службу, и клиента), и оба из них являются приложениями на основе .NET (что, я думаю, имеет место дляВы, верно?)

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