2009-06-10 86 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