多年之后的一点感慨:
说来说去,任何服务器端程序,无论采用什么协议,怎么的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程序了,因为你的精力集中在设计,而不是打包解包,不会被网络上的问题耗掉。