多年之后的一點感慨:
說來說去,任何服務器端程序,無論采用什么協議,怎么的encode / decode,其本質都是RPC。
把主要精力放在網絡傳輸這一塊,是一種偏差,誤解,浪費精氣神的舉動。
C/S程序,與單機程序,本質上是等價的。一個這樣的類比路徑:
C/S <==> {Client.exe + Server.dll} <==> {a project including Client source and Server Souce},不同之處在于其調用方式:網絡調用,DLL調用,還是直接編譯進去;
而網絡調用實際上就是RPC,就這么簡單。考慮單機版本怎么做,哪一些功能需做成Server.DLL。想象如何把Server.DLL變成Server.exe,就是C/S了,而且應該都是設計得蠻好的C/S程序了,因為你的精力集中在設計,而不是打包解包,不會被網絡上的問題耗掉。