HttpContext vs HttpListenerContext

时间:2009-03-10 15:42:38

标签: .net http iis

在将一个webapp从IIS / asp.net移植到HttpListener时,有些东西让我觉得很奇怪。

虽然两者都有上下文,请求和响应的概念,但HttpListener变体与IIS / asp.net变体没有共同的接口,尽管接口几乎完全相同。

为了解决这个问题,我创建了自己的通用接口(IContext,IRequest和IResponse),并使用这些接口的实现包装相应的服务器生成的对象,这样我就不需要处理器的两个单独的实现了我正在移植的代码。

这导致了一个包装类爆炸(总共10个),只是围绕这个缺失的通用接口进行编码。

我是否错过了一个技巧,或者这只是.net API的缺点?

2 个答案:

答案 0 :(得分:4)

我会说整个HttpContext都有这个缺点。这与添加单元测试时发生的情况相同,你可以将它们包装起来,以便能够在单元测试中用模拟替换。

答案 1 :(得分:4)

在编写需要兼容IIS(IHttpAsyncHandler)和独立(HttpListener)的处理程序时,我遇到了相同的.NET设计限制。我采用了为两者编写通用包装器的相同方法。它似乎确实是.NET API的缺点。