HttpContext 与 HttpListenerContext

spe*_*der 5 .net iis http

在将 web 应用程序从 IIS/asp.net 移植到 HttpListener 时,我觉得有些奇怪。

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

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

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

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

egl*_*ius 5

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


Dav*_*urg 5

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