У кого-нибудь есть пример того, почему я бы сам размещал службу WCF? - PullRequest
10 голосов
/ 24 мая 2010

Полагаю, мой разум настолько увлечен IIS и веб-приложениями, что я не могу придумать причину, по которой приходится сталкиваться с проблемой использования службы собственного размещения WCF. У меня всегда была доступность IIS, поэтому создание собственной службы WCF кажется более трудоемким, чем я бы хотел. Зачем мне это делать?

Ответы [ 6 ]

13 голосов
/ 24 мая 2010

Множество точек:

  • нет необходимости в IIS - это может быть большим плюсом для определенных серверов
  • вы можете полностью определить адреса служб - с IIS они 'диктуется именем сервера, именем виртуального каталога, а также именем и расширением файла SVC (например, http://server/virtualdir/yourservice.svc, в то время как при самостоятельном размещении вы можете использовать http://Server:7171/Services/MegaService или что угодно)
  • нетриск возникновения проблем, связанных с рециркуляцией пулов приложений (это можно значительно уменьшить, используя отдельные выделенные пулы приложений для ваших служб WCF)
  • возможность остановки и запуска служб NT, например, перевод этих служб в автономный режим длянемного (проще сделать с IIS, я полагаю)
  • больше контроля над созданием и опциями поддержки ServiceHost
  • из коробки "из коробки" - netTcpBinding и т. д. требуетдополнительные шаги (которые могут быть забыты) в IIS7 и невозможны в IIS6
2 голосов
/ 24 мая 2010

Это все о том, как вы хотите использовать WCF.Не всегда логика, которую вы хотите раскрыть, поскольку служба должна / может быть размещена в IIS.Например:

  • вы используете WCF для создания канала P2P между несколькими экземплярами клиентского приложения в локальной сети.
  • вы создаете локальную службу WCF, развернутую вклиентский SKU, где IIS по умолчанию не установлен
  • вы хотите полный контроль над адресами конечной точки
  • вы хотите использовать каналы net.tcp или net.pipe
  • вывам нужен полный контроль над временем жизни и моделью экземпляра вашего сервиса
  • вы хотите, чтобы сервис работал как интерактивный пользователь (олицетворение не всегда ответ)
2 голосов
/ 24 мая 2010

Например, рассмотрим преимущества хостинга в службе Windows:

  • Время жизни контролируемого процесса
  • Область применения
  • Поддерживается во всех версиях Windows
  • также вы не привязаны только к HTTP, если вы используете Windows 2003 и ниже (без WAS)

Вы также можете рассмотреть

  • Легко отлаживать: ОтладкаСлужбы WCF, размещенные в автономной среде, обеспечивают привычный способ отладки без необходимости подключения к отдельным приложениям, которые активируют вашу службу.
  • Простота развертывания: в общем, развертывание простых приложений Windows - это каклегко, как xcopy.Вам не нужны сложные сценарии развертывания на фермах серверов и т. П. Для развертывания простого приложения Windows, которое служит в качестве ServiceHost WCF.
1 голос
/ 24 мая 2010

Если вы работаете в 64-битной версии Windows, вы не можете автоматически скомпилировать и запустить службу WCF, вам нужно самостоятельно принять хост.

Я спросил здесь об одной конкретной ситуации: Способы доступа к 32-битной DLL из 64-битного exe

У меня было 64-битное приложение, которое требовало использования 32-битной DLL. Поэтому я подумал, что просто оберну 32-битную DLL в 32-битную службу WCF. Нет идти Я не мог заставить службу работать 32-битной. Пришлось самостоятельно принимать.

0 голосов
/ 31 августа 2010

Привязки высоконагруженных сервисов net.tcp или net.pipe вообще не для IIS. Он будет работать только с IIS 7 + дополнительные 3 службы: WAS, Net. * Адаптер прослушивания и общий доступ к портам (событие, если вы не используете общий доступ). Это очень сложное решение. Вы должны настроить совместное использование порта , но однажды произойдет сбой с ошибкой сокета или канала. SelfHost не будет.

IIS не для потоковой передачи. Вы не будете работать "напрямую с сетевым потоком". Вы будете работать с буферами памяти или временными файлами, поэтому потоковая передача не принесет вам пользы.

P.S. Это все о WCF 3.5 и IIS 7.5. Я надеюсь, что следующие версии будут намного лучше.

0 голосов
/ 24 мая 2010

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

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