Есть ли хороший материал о механизме работы IIS, размещающего веб-сервис WCF? - PullRequest
1 голос
/ 28 декабря 2010

Это просто волшебство, что я помещаю какой-то файл в папку Bin моего сайта и помещаю файл svc, чтобы он указывал на какую-то сборку, указывающую на тип моего сервиса.И затем я мог бы волшебным образом добавить ссылку на службу в URL следующим образом:

http://www.myserver.com//xxx.svc

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

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Это не совсем волшебство - это обмен метаданными! :-)

Когда вы делаете Add Service Reference в Visual Studio, за кулисами эта конечная точка службы, указанная в файле svc, запрашивается на предмет ее метаданных. Это в основном похоже на файл WSDL (язык описания веб-служб) - машиночитаемое описание вашей службы, ее методы, ожидаемые параметры и т. Д. - и XSD (XML-схема), которая - снова в машиночитаемой форме - определяет используемые типы параметров.

На основе этих двух фрагментов информации импорт на стороне клиента WCF может создавать классы C # или VB.NET, которые

  • отражает точную реализацию сервиса на стороне сервиса - те же имена методов, те же параметры ожидаемые и возвращаемые
  • создать необходимые классы данных - снова в C # или VB.NET - на основе файла схемы XML

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

Если вас интересует более подробная информация о метаданных, прочитайте Документы MSDN по метаданным WCF - довольно подробные и подробные.

0 голосов
/ 28 декабря 2010

Как указано в marc_s, кнопка «Добавить ссылку на службу» запускает инструмент, который собирает метаданные из службы и генерирует из нее код клиента.

Я просто хотел добавить, что если вы хотите просмотреть эти метаданные (WSDL) самостоятельно, вы можете просто добавить «? Wsdl» в свой URL:

http://localhost/MyService.svc?wsdl

Один WSDL-документ будет связан со многими другими, поэтому вам придется сделать несколько запросов, чтобы просмотреть их все, но интересно посмотреть, как передаются типы данных и контракты.

Кроме того, если вы хотите запретить другим людям автоматически генерировать клиент для вашей службы, вы можете отключить WSDL, удалив конечную точку "mex" (Metadata EXchange) из конфигурации WCF.

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