2009-03-10 34 views
4

IIS/asp.netからHttpListenerにWebアプリケーションを移植する際、何かが私を驚かせました。HttpContextとHttpListenerContextとの比較

両方とも、コンテキスト、要求、および応答の概念を持っていますが、HttpListenerバリアントは、インターフェイスがほぼ同一であるにもかかわらず、IIS/asp.netバリアントとの共通インターフェイスを共有しません。

これを回避するために、独自の共通インターフェース(IContext、IRequest、IResponse)を作成し、対応するサーバー生成オブジェクトをこれらのインターフェースの実装でラップしています。私が移植しているハンドラコードです。

これは、この欠落している共通インターフェイスの周りをコードするだけで、ラッパー(10個)のクラスの爆発をもたらしました。

私はトリックを見逃したのですか、これは.net APIの単なる欠点ですか?

答えて

4

私は、HttpContext全体がこの欠点を持っていると言います。単体テストを追加するときと同じ状況ですが、単体テストのモックで置き換えることができるようにラップします。

4

IIS(IHttpAsyncHandler)とスタンドアロン(HttpListener)の両方と互換性がある必要があるハンドラを記述するとき、同じ.NET設計の制限がありました。私は両方の共通のラッパーを書くのと同じアプローチを取った。それは確かに.NET APIの欠点であるようです。

関連する問題