Думаю, мой ум так занят IIS и веб-приложениями, что я не могу придумать причину, чтобы решить проблему использования самообслуживаемого WCF-сервиса. У меня всегда была доступность IIS, поэтому создание самообслуживаемого сервиса WCF кажется больше работы, чем хотелось бы. Почему я хочу это сделать?
Есть ли у кого-нибудь пример того, почему я бы сам принимал WCF-службу
Ответ 1
Множество точек:
- нет необходимости в IIS - это может быть отличным плюсом для определенных серверов.
- вы полностью определяете адреса службы - с помощью IIS они продиктованы именем сервера, именем виртуального каталога, а также именем и расширением SVC файла (например,
http://server/virtualdir/yourservice.svc
, а при самообслуживании вы может использоватьhttp://Server:7171/Services/MegaService
или все, что вам нравится) - нет риска столкнуться с проблемами, связанными с повторным использованием пулов приложений (это можно значительно уменьшить, используя отдельные выделенные пулы приложений для ваших служб WCF).
- способность останавливать и запускать службы NT, таким образом, например, (в меньшей степени, легко с IIS).
- больше контроля над созданием и опциями
ServiceHost
- поддержка всех протоколов из коробки - netTcpBinding и т.д. требует дополнительных шагов (которые могут быть забыты) на IIS7 и невозможны для IIS6
Ответ 2
Например, рассмотрим преимущества хостинга в службе windows:
- Время работы контролируемого процесса
- Область применения
- Поддерживается во всех версиях Windows
- также вы не привязаны только к HTTP, если вы используете Windows 2003 и ниже (без WAS)
Вы также можете рассмотреть
- Легко отлаживать: отладка WCF услуг, размещенных в самообслуживаемая среда обеспечивает знакомый способ отладки, без приложить к отдельному приложения, которые активируют ваши обслуживание.
- Легко развертывается: в общем, развертывание простых приложений Windows так же просто, как и xcopy. Вам не нужно любые сложные сценарии развертывания серверных ферм и т.п. для развертывания простое приложение Windows, которое служит службой WCF ServiceHost.
Ответ 3
Все о том, как вы хотите использовать WCF. Не всегда логика, которую вы хотите показывать как услугу, должна/быть размещена в IIS. Например:
- вы используете WCF для создания канала P2P между несколькими экземплярами вашего клиентского приложения в локальной сети.
- вы создаете локальную службу WCF, которая развертывается на клиентском SKU, где IIS не установлен по умолчанию.
- вы хотите полностью контролировать свои конечные адреса.
- вы хотите использовать каналы net.tcp или net.pipe.
- вам нужен полный контроль над жизненным циклом и моделью экземпляра вашего сервиса.
- вы хотите, чтобы служба выполнялась как интерактивный пользователь (олицетворение не всегда является ответом)
Ответ 4
Если вы используете 64-разрядную Windows, вы не можете автоматически компилировать и запускать службу WCF, вы должны самостоятельно выполнять хостинг.
Я спросил об одной конкретной ситуации здесь: Способы доступа к 32-битной DLL из 64-битного exe
У меня было 64-битное приложение, которое требовало использования 32-разрядной DLL. Поэтому я подумал, что просто обернуть 32-битную DLL в 32-разрядную службу WCF. Нет. Я не мог заставить службу запускать 32-битный. Пришлось к хозяину.
Ответ 5
Один пример использования - клиентские приложения. Вы можете самостоятельно запустить службу WCF в клиентском приложении, чтобы клиент мог получать уведомления из бэкэнд-системы.
Ответ 6
Высокие загруженные сервисы привязки net.tcp или net.pipe не предназначены для IIS. Его работа будет работать только с IIS 7 + дополнительными 3 услугами: WAS, Net. * Адаптер прослушивания и общий доступ к порталу (событие, если вы не используете совместное использование). Это очень сложное решение. Вы должны настроить обмен портами, но однажды он сработает с ошибкой сокета или трубы. SelfHost не будет.
IIS не предназначен для потоковой передачи. Вы не будете работать "напрямую с сетевым потоком". Вы будете работать с буферами памяти или временными файлами, поэтому вам не пригодится потоковая передача.
P.S. Все о WCF 3.5 и IIS 7.5. Я надеюсь, что следующие версии будут намного лучше.