所以我在過去曾經使用過WCF,並且我知道你不僅可以將它用於Web服務,而且還可以用於持久化的TCP客戶端/服務器應用程序,但是我從來沒有真正使用它。WCF適用於低延遲持久連接本地客戶端/服務器應用程序嗎?
我正在研究爲.NET創建一個客戶機/服務器應用程序,該應用程序將在本地運行,即服務器和多個客戶機都將在同一臺機器上運行。不會有大量的同時連接,最多可能有50個。每個請求傳輸的數據量不會太多,大部分是40-100字節左右的小對象。雖然會有很多不同的對象類型,但我更喜歡使序列化簡單的解決方案。
最大的問題是我需要快速連續發送很多數據包,而且我不能承受很大的延遲。理想情況下,我需要100字節數據包的往返時間少於1毫秒(假設沒有處理時間用於處理服務器上的數據)。
我知道這是可能的原生Winsock/IOCP的解決方案,因爲我有一個解決方案,可用於另一個項目,但我不知道這是WCF可以處理的事情,因爲我不知道多少處理開銷涉及每個請求/響應,或者它使用什麼樣的異步IO。
那麼,你認爲WCF可以爲此工作嗎,還是我需要創建一個底層的基於套接字的解決方案?
我仍然會使用* a *庫 - 無需手動執行此操作。話雖如此,有可能比WCF更好的候選人(搜索「對象請求代理」或「rpc」 - 可能是很好的讀取)。就編碼而言,我發現[Protocol Buffers](http://en.wikipedia.org/wiki/Protocol_Buffers)爲這種用例提供了一個很好的序列化目標 - 它快速,緊湊並且支持反射/ POCO(如[Protobuf.NET](https://code.google.com/p/protobuf-net/))和生成的類型實現(如[ProtoGen](https://code.google.com/p/protobuf的-CSHARP端口/))。 – user2864740
你知道,我幾星期前只是在看Protobuf的其他事情,不知何故,它甚至沒有在我的腦海中想到。我很可能走這條路,因爲我相信Protobuf.NET應該與protobuf的本地C++實現二進制兼容,這將是一個不錯的獎勵。 – Gerald