Вопросы о добавлении службы WCF в сборку службы Windows

#wcf #c#-4.0 #windows-services

#wcf #c #-4.0 #windows-службы #windows-services

Вопрос:

Я нашел некоторую базовую информацию о размещении службы WCF в службе Windows, но не так много. Весь мой опыт работы с WCF до сих пор был связан с веб-проектами. У меня есть несколько простых вопросов.

У меня есть проект, который создает приложение-службу Windows. Я щелкнул правой кнопкой мыши -> добавить службу WCF. Это создает Service1.cs и IService1.cs.

  1. Мне интересно, почему в этом сценарии не создается SVC-файл? Когда я добавляю сервисы в веб-проекты, я получаю SVC-файл, к которому я могу перейти и использовать для использования сервиса.

  2. Добавление сервиса добавляет некоторые конфигурации в app.config в элементе services. Я вижу базовый адрес по умолчанию

    http://localhost:8732/Design_Time_Addresses/WindowsServiceName.services/WCFServiceName/

Что это значит? Это довольно странно выглядящий адрес. Должен ли я изменить это на то, что я хочу?

  1. Переход по этому адресу в браузере приводит к появлению сообщения «Не удается подключиться». Должна ли сама служба Windows быть запущена для взаимодействия со службой WCF?

  2. Как мне использовать эту службу из другого приложения без файла svc?

Ответ №1:

  • Я делаю предположение относительно этого первого, но я думаю, что файл .svc при размещении в IIS предназначен для сообщения IIS: «Эй, у меня здесь есть служба WCF, пожалуйста, обращайтесь соответствующим образом».
  • Базовый адрес такой, каким он должен быть, и да, вы можете изменить его, если я не ошибаюсь.
  • Вы не можете подключиться к службе WCF, если служба Windows не запущена, что является одной из опасностей размещения в службе Windows, потому что, если служба каким-либо образом умрет, ваша служба WCF будет отключена до тех пор, пока вы снова не запустите службу Windows.
  • Вы используете сервис так же, как и любой другой сервис WCF, просто используя этот базовый адрес, чтобы получить к нему доступ.
  • Комментарии:

    1. Спасибо. Часть, которая сбивает меня с толку по поводу адреса, — это ‘design_time_addresses’. наводит меня на мысль, что это не будет допустимым адресом во время выполнения.