2009-06-10 63 views
1

我正在开发一个简单的套接字服务器,将作为一个Windows服务运行一点研究。我打算用C#写这篇文章,但我已经意识到.Net套接字是slllooooowwwww。对于使用.Net网络类的初始推出将会很好,但是我想知道是否有人对高性能(希望免费)套接字库有经验。我想可能是用C++编写的东西,我可以在.net中用作com对象。套接字建议

我以前使用过indy套接字,但看起来好像没有任何与该项目一起进行的活跃开发了。我做了一些Google搜索,并且找到了一些图书馆,但我希望从实际使用套接字库的人那里获得反馈,并取得了很好的成功。

任何帮助表示赞赏。谢谢。

+1

我可能是错的,但我怀疑.NET套接字和通过P/Invoke使用C++ COM套接字库之间的性能损失将等于... – Nate 2009-06-10 17:54:51

回答

2

我会重新审视你的初始假设 - 我不相信这是准确的。

根据我的经验,使用.NET框架套接字库的开销不高 - 它们表现相当好。我看到,非常慢的套接字代码的主要原因是人们试图直接将非C#代码移植到C#中,特别是试图移植同步的C++套接字代码。 .NET的BCL中的套接字都是为了异步使用而设计的。如果你试图强制他们进入同步模型,你最终会添加相当多的阻塞,这肯定会导致代码非常慢。

尝试按照它们设计的方式使用套接字类 - 我认为您会对性能以及可用性感到满意。

+0

感谢您的回答。我最初使用.Net套接字的经历早于版本1.0,我也不知道当时我在做什么。我会试一试内置的类。 – infocyde 2009-06-10 18:03:18

2

听起来像你正在优化之前,你需要。我会继续使用.NET构建它,并在尝试执行可能会更慢的之前查看是否存在性能问题。 COM有很多开销。

+0

好点。我会给.net类,并尝试看看让我有多远。 – infocyde 2009-06-10 18:04:18