我发现另一个问题要求提供相同类型的功能,但是这个问题已经有两年多了,所以我想知道从那以后是否有人看到过任何东西。
我基本上已经使用标准的异步http/套接字客户端套接字编写了自己的.NET。我维护1024个套接字池,我有128个“服务”线程使用套接字池以每秒371页的速度从互联网下载网页(今天刚刚在一台亚马逊的EC2服务器上进行了测试)。我还开发了另一个异步HTTP客户机,它使用HttpWebRequest异步下载网页,但速度要慢得多:使用相同的设置: 1024个池HttpWebRequest和128个“服务”线程,平均每秒大约50页(也在亚马逊的EC2上进行了测试)。
当然,提供HTTP协议支持将占用更多的处理能力和内存。我希望通过亚马逊的超大EC2服务器,我不会受到处理能力/内存的限制,而只会受到网络带宽的限制(到目前为止,情况就是如此)。
我使用的机器的一个例子是Amazon的高CPU特大型实例:
我可以自己编写符合HTTP协议的HTTP处理,但是如果有一个现成的、快速而健壮的解决方案,它将为我节省大量的工作、痛苦和痛苦。
我至少需要以下功能:
有人知道这样的解决方案吗?
发布于 2011-05-03 20:08:44
我不知道HttpWebRequest如何在内部处理套接字。打开/关闭套接字可能会对性能造成很大影响。WebClient使用的是“保持生存”,并且可能会更好地工作。
编辑:我做了一些谷歌搜索,我不会接受这作为一个答案。WebClient似乎是HttpWebRequest/Response:http://www.codeproject.com/Articles/156610/WP7-WebClient-vs-HttpWebRequest.aspx?msg=3775084的包装器
更新
既然你已经开始使用套接字了,我会坚持下去的。请随意从我的webserver项目中获取内容:http://webserver.codeplex.com
我的解析器:
http://webserver.codeplex.com/SourceControl/changeset/view/56552#671689
https://stackoverflow.com/questions/5874731
复制相似问题