Получение контракта - PullRequest
       10

Получение контракта

1 голос
/ 03 апреля 2010

Есть ли способ получить контракт от запущенного сервиса программно? Я хочу сравнить контракт работающей службы с ссылочным контрактом на стороне клиента.

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

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

1 Ответ

1 голос
/ 03 апреля 2010

Если сервис предоставляет метаданные, это возможно, да. Как именно зависит от используемой привязки, если это обычная http-привязка, вы можете использовать http://myserver/myservice.svc?WSDL.. Чтобы сравнить контракты, вам нужно будет загрузить WSDL с помощью обычного http API, а затем сравнить его с сохраненным ссылочным WSDL .

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

  • Если контракты не совпадают, WCF выдаст ошибки.
  • Определенный договор, опубликованный в определенном пространстве имен, не должен существовать в разных версиях. Это скорее обычная проблема, чем техническая проблема. В таких случаях, как ваш, когда один и тот же контракт реализуется различными службами, необходима хорошая процедура для изменения контракта.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...