2010-08-13 22 views
1

有時候,我必須使用.Net框架2.0來處理普通的TCP/IP客戶端 - 服務器應用程序。我發現.net 2.0套接字庫效率非常低,用來處理大量內存和處理週期,然後我們切換到C++,並且它工作得非常好。.Net TCP/IP庫有任何改進嗎?

我想檢查一下.Net 3.0或更高版本的TCP/IP庫是否有任何改進。如果在2.0之後使用.Net 2.0和.net框架的.Net TCP/IP庫,您的經驗是什麼?

+0

這聽起來很奇怪,.NET套接字庫在本地套接字上是一個相當小的層 - 我們通過.NET推送大量數據,並且從來沒有遇到任何內存或處理器瓶頸問題。和3.5) – nos 2010-08-13 07:34:19

回答

0

我對基本的Socket類沒有任何問題;作爲「nos」指出,它只是WinSock API上的一個非常薄的層。

他們做整個*Async/SocketAsyncEventArgs添加 - 基於API來Socket在.NET 2.0 SP1(注意,這應該與基於事件的異步模式,它採用*Async*Completed糊塗了,*AsyncEventArgs命名約定)。這個API的重點在於通過重用本機OVERLAPPED結構來減少對GC的壓力,而不必在每次讀寫時分配和GC。

我實際上沒有使用*Async API;我使用Begin*/End* API,並且沒有任何性能問題。據我所知,自2.0 SP1以來沒有對Socket類進行更改。