Создание одной копии сложного типа из 2 веб-сервисов - PullRequest
2 голосов
/ 03 декабря 2009

В C # (также и на других языках .Net OOP) у меня есть 2 веб-сервиса. Svc1 возвращает сложный тип данных, который становится параметром для svc2. Обратите внимание, что это тот же сложный тип.

Теперь я создаю 2 прокси-класса этих двух веб-сервисов. Это означает, что один и тот же тип генерируется дважды.

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

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Создайте два прокси одновременно:

svcutil http://example.com/svc1?wsdl http://example.com/svc2?wsdl

Если тип действительно одинаков (имя и пространство имен) в обеих службах, он сгенерирует только один прокси-класс для клиента.

Еще одна возможность - создать прокси-класс для первой службы:

svcutil http://example.com/svc1?wsdl

скомпилируйте сгенерированный файл .cs в сборку, например MyAssembly.dll и используйте параметр / reference при импорте второй службы:

svcutil /reference:MyAssembly.dll http://example.com/svc2?wsdl

Это будет искать те же типы в WSDL и поставляемой сборке.

0 голосов
/ 03 декабря 2009

Я недавно столкнулся с подобной проблемой; Я не испробовал совет Дарина.

Мигель Кастро из IDesign сделал отличную презентацию на тему "WCF - ручной путь ... правильный путь" в марте 2009 года на DevConnections. В этом он показал, как повторно использовать сервисные контракты и прокси. Из моих заметок:

  • Одна сборка для контрактов на обслуживание / передачу данных
    • Совместно используется между клиентом и сервером
  • Одна сборка для услуг
    • Разрешает смену хоста и повторное использование
  • Одна сборка для прокси
    • Повторное использование среди клиентов
  • Отдельное приложение для хостинга
  • Не использовать «Добавить ссылку на сервис»
  • Ссылки на проект службы (POCO) Проекты контрактов (интерфейсов) и System.ServiceModel
  • Ссылка на сборки клиентских прокси Сборка контрактов, но не Сервисный проект
  • Клиентские приложения создают экземпляры прокси

Наша компания еще не перешла на WCF, но это похоже на путь (для меня).

РЕДАКТИРОВАТЬ: Я нашел статью мистера Кастро об этом.

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