没有接触过服务端开发,所以想请教一下各位有经验的大佬关于网络带宽压力的问题。下午研究了一下发现服务器可以直接把组件序列化,然后发bytes的消息。
我觉得这个对于组装Unit非常方便,比如服务端Unit上有一个Numeric组件,分别有 int a,long b,string c三个字段,那么服务器下推这条消息的时候,既可以发一条包含 int a,long b,string c的Message消息,然后客户端接收到消息后,在给客户端这边的unit添加这个组件然后赋值;也可以发一条 bytes d的消息,其中bytes d存的数据为MongoHelper.ToBson(numericComponent)后的结果,客户端接收到消息后直接反序列化得到entity,在AddComponent(entity)即可。
我的感受是,如果要传送的字段很多,前者需要先在proto里写一大堆,然后cs代码又写一大堆。而后者的优点在于写起来方便多了,proto和cs均能少些很多,尤其是对于组件很多(组装一个unit需要添加很多component)和单个组件里需要传送的字段很多(比如Numeric可能有几十个属性)这两种情况,第二种方法就会显得十分简便。但是通过观察log,第二种消息会发很长的字符串。所以我就想问,这种方法相比第一种方法是否会给网络造成极大压力?
题外话问题还有一个是能不能直接把服务器组装好的Unit序列化发过去,发送的时候会不会把组件也给序列化了?