Привязки WCF на основе HTTP зависят от класса HttpListener
, который является управляемой оболочкой для HTTP API. HTTP API зависит от того, как операционная система обрабатывает http-запросы. Так что, если вы используете операционную систему, которая использует драйвер http.sys (Windows 2003 и новее), вы зависите от него.
Edit:
Исходя из очень хороших рассуждений о Кассини, я провел два часа в Reflector. Следующее описание является только моим предположением. Я не нашел никакой информации об этом, так что, возможно, я совершенно не прав.
WCF внутри содержит некоторый абстрактный класс, называемый HttpTransportManager
, этот класс является производным от внутренних классов HostedHttpTransportManager
и SharedHttpTransportManager
(этот также существует в версии для HTTPS). Первый не зависит от HttpListener
, а второй -. Первый используется, когда WCF размещен в конвейере ASP.NET - внутренние классы HttpModule
и HttpHandler
из сборки System.ServiceModel.Activation используют HostedHttpRequestAsyncResult
в зависимости от HostedHttpTransportManager
. Последний используется при создании HttpChannelListener
(сам хостинг).
Мой вывод заключается в том, что служба WCF, размещенная в конвейере ASP.NET, напрямую не зависит от http.sys, а IIS, в которой размещается конвейер. Это позволяет создать пользовательский веб-сервер, который не будет зависеть от http.sys, но сможет разместить ASP.NET и т. Д. WCF. Я думаю, что это то, что делает Кассини. Самостоятельно размещенный сервис WCF всегда зависит от http.sys.
Как я уже писал выше, это только мое предположение, основанное на некотором быстром обратном инжиниринге.