2009-09-04 99 views
2

我想就使用哪種格式通過TCP傳輸數據提供一些建議。目前,我已經設計了一個帶有分隔字符串的簡單文本協議。我在想我應該使用已經存在的東西,如XML,JSON或XMPP?通過TCP傳輸數據的格式是什麼?

人們使用什麼數據格式來通過TCP傳輸?

我想優化速度和吞吐量,但寧願採用現有的標準比我自己的。

+2

您要傳輸什麼類型的數據? – 2009-09-04 17:26:02

+0

它的基本文字 - 主要是地圖,例如名稱 - >諾斯拉馬,國家 - >美國,ID-> 2343 ... – Nosrama 2009-09-04 17:27:53

回答

0

在大多數情況下,人們只是聲明一個記錄,其佈局可以在兩端重現並使用它。只有當你有更復雜的需求時,你才需要做更多的事情。

對於不同的長度字符串,我可能只是將它們實現爲一系列長度和長度字節的數據。在Cish語言中,您可以通過利用空終止符來獲得長度。沒有比這更復雜的了。

0

取決於數據類型和誰正在使用您的數據。

如果你正在編寫你自己的客戶端/服務器對,那麼可以說最好的格式是某種二進制序列化。它結構緊湊,可以在電線上輕鬆傳輸,並且可以快速重建。

如果你正在爲使用多種語言的許多消費者編寫東西......那麼我會更多地關心XML或JSON(取決於數據的大小和複雜性)。

XML更適合處理大型複雜的數據。

JSON適用於更小,更緊湊的數據。

+1

您可以詳細說明XML - >大數據,JSON小數據語句嗎? – JosefAssad 2009-09-04 17:46:39

+0

當您嘗試通過JSON傳輸大量數據時,它很快就會出現問題。試圖查看大量的JSON和調試問題是一場噩夢。當事情開始變得越來越大和越來越複雜時,XML更加結構化並且更容易處理。 – 2009-09-04 18:02:40

0

您的數據的鍵/值外觀暗示JSON可能更容易使用。

優化速度和吞吐量可能會更好地處理您的應用程序之外,第3層和第4層在OSI model我很危險。投入這些層的一個優化工作單元可能會給您帶來更多的最優性,而不是一個單元的努力沉浸到數據的結構和編碼中。

+0

謝謝 - 你能詳細闡述一下關於OSI模型的觀點嗎?我應該特別注意什麼? – Nosrama 2009-09-04 18:55:37

0

對於您的數據類型而言,XML聽起來是個不錯的選擇 - 現在已經有很多XML庫(或者您的語言甚至可能會內置XML解析)。

基於文本也使得手動調試更容易,所以這是遠離線路上的二進制編碼的一個原因。