【发布时间】:2011-02-15 22:33:17
【问题描述】:
我必须编写一个本质上是代理服务器的应用程序来处理来自我们服务器的所有 HTTP 和 HTTPS 请求(网页浏览等)。我对 C++ 知之甚少,并且很擅长用 C# 编写应用程序功能。
我已经尝试过来自Mentalis(C# 套接字代理)的代理,它似乎适用于小型网页,但如果我去像tigerdirect.ca 这样的大型网站并浏览几层,它会很慢,有时请求未完成,我看到损坏的图像和 javascript 错误。我们所有的供应商网站和其他内容繁重的网站都会发生这种情况。
Mentalis 使用 HTTP 1.0,我知道它效率不高,但代理应该那么慢吗?使用代理的可接受的性能损失量是多少? HTTP 1.1 会产生明显的不同吗?
C++ 代理会比 C# 中的代理快得多吗? Mentalis 代码效率不高吗? 我是否能够使用预制的 C++ 代理并将 DLL 导入 C# 并仍然获得良好的性能,或者这个项目是否需要所有 C++?
对不起,如果这些问题很明显,但我以前没有做过网络编程。
编辑 回答 Joshua 的问题:我不一定需要自己编写核心代理服务器,只要有一个好的实现,但就像我说的那样,我一直在试验 Mentalis表现不佳。最终的应用程序需要通过单个安装程序安装在 Windows PC/Server 上,手动配置为 0。
我可以在安装程序中编写所有必要的注册表编辑,就像我之前在 C# 中所做的那样。
更新 我听取了 Aaronaught 的建议,并着手改进 Mentalis 的代码。我修复了一个问题,因此它可以与 HTTP 1.1 一起使用,允许它与 Chrome 和 Firefox 一起使用(Windows 上的 Safari 4 会因某种原因使代理崩溃)。
当我在 FireFox 和 Chrome 中进行测试时,我发现不存在性能问题,这意味着这是 IE 问题而不是代理问题。重置浏览历史设置后,问题就消失了。
谢谢大家!
【问题讨论】:
-
您能讨论一下为什么需要自己编写而不是使用 nginx 或 Haproxy 之类的东西吗?
-
我不一定需要自己编写核心代理服务器,只要有一个好的实现,但就像我说的那样,我一直在试验 Mentalis,它的性能并不好。最终的应用程序需要通过单个安装程序安装在 Windows PC/Server 上,手动配置为 0。