2012-02-16 30 views
2

我正在開發c#.net中的客戶端/服務器應用程序。現在我將選擇客戶端/服務器數據包中使用的通信機制。我想知道,在套接字上發送和接收數據的最佳格式是什麼。在TCP套接字中傳遞二進制數據的最佳方式是什麼

的Xml序列化或 二進制序列化(我使用編組,即在證明http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx

儘管XML序列化將做的工作,但我們知道,它會慢一些。所以我認爲二進制編組將是不錯的選擇。但是在這種技術中,我必須爲通信中使用的每個單獨的數據包創建很多結構。我需要幫助,請提出建議,如果它是在這個場景中使用的唯一最好的方式,或者存在一些更好的方法來達到目標​​。

+1

Xml速度慢一小時花費一毛錢。你每小時花費一百美元。很難掙脫。使用WCF或Google協議緩衝區。 – 2012-02-16 11:31:21

+0

這一切都取決於您需要在服務器和客戶端之間交換的消息數/秒數。如果該流量從未被期望達到非常高的水平,那麼我同意@HansPassant – mac 2012-02-17 10:35:31

回答

0

除非Xml序列化符合一幀(1480字節),否則二進制編組將發送更少的IP數據包。是的,你將不得不爲你的數據包定義結構。

我建議您爲所有數據包類型定義一個公共數據包標頭的結構,其中包括數據包中的字節數。如果你有不同的數據包類型,你也可以在公共頭中包含數據包類型。

相關問題