c 網路傳輸如何規避序列化?

時間 2021-06-01 14:49:04

1樓:肖進

正常情況下效能問題應該和 Protobuf 沒有關係,任務排程與業務邏輯才是重點。

而 Marshal 不僅不通用還會帶來大量多餘的工作,為了這點效能真心不值得。

樓主可以試試 二進位制資料序列化 - C# 高效能自動化服務端框架 - 凹凸架構,或者 TCP 介面服務框架 - C# 高效能自動化服務端框架 - 凹凸架構。

2樓:胡啟航

網路傳輸都涉及到序列化,題主的解決方案也是採用 Marshal類序列成比 protobuf效率更高二進位制格式傳輸,實際上不是省略序列化,而是提高網路傳輸序列資料的encode/decode效率,但這種方式依賴語言和編碼實現,失去了通用協議的規範性、跨平台性、擴充套件性、相容性。

為提高encode/decode效率,實際上谷歌也發布了效率高得多的FlatBuffers協議,適用於高效能和遊戲開發,效能據其測試報告,比 protobuf提高了幾個數量級,10倍100倍以上,見:FlatBuffers: Benchmarks。

另外,還有 Cap』n Proto ,據稱將encode/decode消耗降到近乎0,見:Cap'n Proto: Introduction

目前正考慮平台架構傳輸協議選型,就此拋磚引玉,看看大家有什麼好的意見。

3樓:shuhari

Marshal.StructureToPtr / PtrToStructure 就是做這個事情的。

不過我對這個問題抱有疑問,因為以我的經驗,即使是SOAP這麼重量級的協議,序列化開銷通常也遠小於網路傳輸的開銷,不應該成為系統的瓶頸。如果 protobuf 都不能滿足你的要求,難道你的系統負荷比谷歌還高麼?

如何深入學習 TCP IP 協議,以及網路層 傳輸層 應用層各協議?

Life Bp 對任何事情的學習,如果你找到正確的方法 tz在知乎提這個問題就是在尋找最佳方法 並循序漸進的進行學習,並堅持下來,沒有什麼做不到的。我說下怎麼循序漸進的進行學習,我也是網路初學者,結合自己情況說下吧!1,首先tz對網路原理有個overview 要求 了解術語,有什麼協議,協議之間有什...

網路心理諮詢存在哪些潛在風險,如何規避?

已登出 乙個最大的問題 移情不夠強烈甚至微弱,我有一段時間一直做網路諮詢,一部分來訪者跟我反饋對我沒有很強烈的移情,原因都是 我看不到你 張海音不是也說過嗎?沒有真實的影像作為鏡映,移情會微弱很多 1,沒什麼卵用,人都看不到,什麼反應,移情,共情,簡直就是空中樓閣,誰知道對面是不是來玩你的!又有誰知...

C 中如何通過反射序列化泛型field?

題主沒有說清楚自己用反射序列化字典的應用場景啊,看題主的esle if我猜你是想傳入乙個object然後通過判斷object的型別來自動序列化? 趙劼 操作具體型別Dictionary的話,那麼直接用IDictionary介面就行。我這裡假設你要操作IDictionary。總而言之就是 物件導向學了...