我知道在Java中,當你想創建一個高性能的服務器時,你使用nio而不是常規套接字。 對於C#來說,創建高性能服務器有沒有這樣的事情?C#==>高性能服務器?
回答
的
SocketAsyncEventArgs
類是一組增強的System.Net.Sockets.Socket
類的那 提供可由 專門高性能插座 一起使用的備選異步 模式的一部分 應用。這個類是 專門設計用於網絡 服務器應用程序,需要高的 性能。應用程序可以專門或僅在目標熱點 區域(例如,當接收到大量數據時)使用增強的異步模式 。
嗯,這是沒有錯的,但它使得它聽起來好像這是所使用的一類特殊*,而不是常規*'Socket'的時候,其實它只是對某些類型的異步的事件類型調用'Socket' 。 – 2010-08-09 17:15:27
使用SocketAsyncEventArgs進行編程絕對不是「只是某種異步調用的事件」。當開始一個項目時,它有明確的選擇:使用同步調用,使用經典異步(beginsend/callback/endsend)或使用SocketAsyncEvent。請參閱版本3.5中的套接字性能增強http://msdn.microsoft.com/en-us/library/bb968780.aspx – 2010-08-10 00:04:26
使用常規套接字有多種不同的方式。通常,異步使用可以更好地擴展
您可以使用異步套接字。如果那個不夠好,您可以隨時查看Network Direct SPI
,這是HPC SDK的一部分。請注意,Network Direct確實需要特定於硬件的提供商。
+1但是,沒有用於網絡直接管理的API,是嗎? – 2010-08-09 17:14:23
這看起來很有趣,但硬件特定的要求讓我懷疑它是否是一個好主意。另一個有趣的,但也許不明智的選擇是隻使用P/Invoke。 – 2010-08-09 17:16:21
謝謝,異步不會這樣做,我們正在談論超過5k客戶端連接到服務器,並保持連接,並與服務器通信。我將看看網絡直接SPI,謝謝 – aryaxt 2010-08-09 17:23:59
SocketAsyncEventArgs使用Windows I/O完成端口,這使得它更快。它是異步的,這使得它可以擴展。與SocketAsyncEventArgs真正的大交易是I/O完成端口。
有關如何使用SocketAsyncEventArgs,請參見http://www.codeproject.com/KB/cs/socketasynceventargs.aspx。
- 1. 高性能rtsp服務器
- 2. Node.js中的高性能tcp服務器?
- 3. 提高Web服務器性能
- 4. 提高網絡服務器的性能
- 5. 如何提高Jenkins服務器性能?
- 6. 使用libEvent的高性能服務器
- 7. 高性能UDP服務.NET
- 8. 提高Web服務性能
- 9. 高性能C#服務器套接字的技巧/技巧
- 10. 性能服務器腳本
- 11. MySQL服務器性能
- 12. 追加服務器性能
- 13. 圖像服務器性能
- 14. Web服務性能:跨服務器與同一臺服務器
- 15. App> OAuth2服務器> Facebook> OAuth2服務器> App
- 16. Netty websocket服務器高可用性
- 17. 提高頁面性能,保存服務器上的PHP數組?
- 18. 加入鏈接服務器表時提高查詢性能
- 19. 提高機器學習REST服務性能
- 20. 的Java NIO或Java IO高性能服務器
- 21. 在JAVA中提高Netty服務器的性能
- 22. Linux下的TCP/UDP高性能服務器
- 23. 提高多線程Web服務器的性能
- 24. 超高性能套接字服務器 - 實現細節
- 25. nginx如何提高Web服務器的性能?
- 26. 高性能服務器 - 我應該使用什麼?
- 27. 如何最大限度地提高服務器性能?
- 28. 關於使用Java編寫高性能服務器的問題
- 29. 在服務器上緩存數據是否會提高性能?
- 30. 使用Perl的高性能套接字服務器
我最近看到這個,你可能會覺得很有趣:http://developers.slashdot.org/story/10/07/27/1925209/Java-IO-Faster-Than-NIO – AaronLS 2010-08-09 17:04:29
@AaronLS:它看起來像nio是一個異步套接字庫,而.NET的套接字可以同時工作。 – 2010-08-09 17:05:35
無論語言如何,套接字類將在.NET中都是一樣的,所以我更改了標籤。 – 2010-08-09 17:05:58