Что именно является последней частью адреса в WCF? - PullRequest
1 голос
/ 08 июня 2009

При указании адреса как части конечной точки, формат:

http://localhost:8080/MyWCFService или net.tcp: // localhost: 8080 / MyWCFService

В руководстве (в книгах, MSDN и т. Д.) Говорится, что / MyWCFService - это "путь" к службе.

Что именно это значит?

Это тип реализации службы (в отличие от, скажем, физического пути к каталогу, виртуального корневого пути, пространства имен и т. Д. И т. Д.)?

Что бы это ни было на самом деле, как библиотека CLR / WCF использует эти данные для своей работы, например, если это тип, я вижу, что servicehost (serviceHost.Open ();) сможет мгновенно вызвать соответствующий объект и вызвать запрошенный метод.

Ответы [ 4 ]

1 голос
/ 08 июня 2009

Адрес - это просто строка, описывающая «местоположение», где служба предоставляет свои услуги или клиент подключается к ней. По умолчанию он не имеет прямой связи с чем-либо «физическим», например это не относится к файлу или чему-либо.

В случае размещения вашего сервиса в IIS, первая часть вашего адреса сразу после машины и порта на самом деле является именем виртуального каталога IIS, в котором расположен ваш файл * .svc.

В случае MSMQ адрес вашей службы должен соответствовать имени очереди MSMQ (или наоборот).

Кроме тех случаев - адрес действительно просто способ описать, где найти конкретную услугу.

Первая часть http://, https://, net.tcp: // и т. Д. Обычно называется "схемой" и слабо ссылается на транспортный протокол, используемый для подключения вашего клиента к службе.

Вторая часть, как правило, представляет собой имя машины, необязательно с номером порта. Конечно, эта часть связана с физическим объектом - ваша машина должна существовать, номер порта должен быть доступен и использоваться.

Но третья часть, которую вы назвали «путем» к службе, действительно может быть любой, какой вы захотите, если вы сами размещаете свою службу (например, в консольном приложении или службе Windows NT). Если вы используете хостинг самостоятельно, путь не имеет абсолютно никакого отношения к какому-либо физическому пути на диске, виртуальному каталогу или другому.

Хост службы - фрагмент кода, который фактически будет размещать и запускать ваш класс обслуживания, который является просто обычным классом .NET - будет выставлять / публиковать любое количество конечных точек с адресом, привязкой и контрактом. Следовательно, хост службы определяет, какие URI действительны для его служб. Затем клиент (ы) должен подключиться к одной из опубликованных конечных точек, указав один и тот же адрес - схему (http://, https://, net.tcp: //), имя компьютера и, при необходимости, порт, а также путь к службе.

Марк

1 голос
/ 08 июня 2009

В вашем примере MyWCFService не является физическим адресом, он соответствует конечной точке, настроенной для конкретной привязки.

Один ServiceHost может содержать несколько сервисов, и у каждого есть несколько конечных точек.

Если ваша служба размещена в IIS, то базовым адресом будет виртуальный путь к файлу .svc.

1 голос
/ 08 июня 2009

Адрес сообщает вам, где находится ваш сервис. Он обеспечивает местоположение службы, а также транспортный протокол для связи со службой.

Часть localhost предназначена для целевой машины, а часть '/ MyWCFService' является необязательным определенным путем.

1 голос
/ 08 июня 2009

/MyWCFService - это виртуальный каталог в ASP.NET. Вы бы, наверное, что-то вроде /MyWCFService/SomeService.svc в вашем решении или проекте.

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