Ответ 1
привязки на основе HTTP на основе WCF зависят от класса 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.
Как я уже писал выше, это только мое предположение, основанное на некоторой быстрой обратной инженерии.