C#中的HTTP代理服务器

我的公司正在尝试使用.NET Fx 3.5和C#编写代理服务器。 从我们的研究中我已经读过HttpListener不是代理服务器的好候选者,虽然我不确定为什么。

我们目前正在使用Mentalis代理示例源代码,但其中包括实现我们自己的日志记录和性能计数器。 使用HttpListener将包装Http.sys,这将为我们提供一些开箱即用的性能统计信息。

那么为什么HttpListener是HTTP代理工作的不良候选者呢?

(是的,我们通过编写或配置ICAP服务器来考虑Squid 3.1。)

HttpListener在.NET中为简单的 HTTP服务器提供了一个主要的构建块。 简单包括不支持高运营率。

通常,HTTP代理需要非常低的开销来支持许多并发连接以及提供代理的function(这取决于代理的类型)。

RFC2616§8.1.3中详细介绍了代理,并立即提供了一个项目(如果我正确理解HttpListener)是不可能的:

代理服务器必须分别与其客户端和它连接的源服务器(或其他代理服务器)发信号通知持久连接。 每个持久连接仅适用于一个传输链路。

您可能还会考虑几天前发布的nginx的Windows端口。 许多拥有鱿鱼和清漆经验的网站在转换为nginx后非常高兴。 那么这些天MS总是会调用ISA服务器。

现在看看Mentalis代码:D