HttpListener
WCF HTTPベースのバインディングは、 HTTPAPIのラッパーであるマネージドクラスに依存しています。HTTP APIは、オペレーティングシステムがhttpリクエストを処理する方法に依存します。したがって、http.sysドライバ(Windows 2003以降)を使用するオペレーティングシステムを使用する場合は、それに依存しています。
編集:
カッシーニについての非常に良い議論に基づいて、私はリフレクターで2時間過ごしました。以下の説明は私の仮定にすぎません。私はそれについての情報を見つけていないので、多分私は完全に間違っています。
HttpTransportManager
WCFには、内部クラスによって派生したこのクラスHostedHttpTransportManager
と呼ばれる抽象クラスが内部に含まれていますSharedHttpTransportManager
(これはHTTPSのバージョンにも存在します)。前者は依存していませんHttpListener
が、後者は依存しています。前者は、WCFがASP.NETパイプラインでホストされている場合に使用されます-内部クラスHttpModule
およびHttpHandler
System.ServiceModel.Activationアセンブリからの使用はHostedHttpRequestAsyncResult
に依存しHostedHttpTransportManager
ます。後者は、作成時に使用さHttpChannelListener
れます(セルフホスティング)。
私の結論は、ASP.NETパイプラインでホストされているWCFサービスはhttp.sysに直接依存していませんが、パイプラインをホストしているIISは依存しているということです。これにより、http.sysに依存しないが、ASP.NETなどのWCFをホストできるカスタムWebサーバーを作成できます。これがカッシーニの仕事だと思います。セルフホストのWCFサービスは、常にhttp.sysに依存しています。
上で書いたように、これはいくつかのクイックリバースエンジニアリングに基づく私の推測にすぎません。