Lev*_*Lev 5 .net c# flash client-server protocols
我们正在Flash愿望.Net服务器端编写在线多人游戏,我们需要双工通道,所以使用套接字进行通信.
你能告诉我一些关于在服务器和客户端之间交换数据的协议/格式的最佳实践吗?IMO的一个好选择可能是使用JSON序列化.
这取决于。暂时忘记所涉及的技术,专注于您的特定通信需求。希望您不介意我也探讨一些相关点。
如果您的代码需要任何类型的同步内容,那么您可能需要对代码进行回复流控制,以及某种消息传递结构,其中消息具有 ID,并且可能具有它们作为回复的原始消息 ID。这将帮助您控制异步协议上的内容。在这种情况下,像 JSON 这样易于维护的协议可能会更好,正如 @ JustLogin提到的。
全双工意味着您将在网络/解释器层上暂存更多数据,并且它可能必须处理异步通信。
如果性能是一个问题,并且根据您的具体情况,那么像 @Viacheslav 提出的建议会很有吸引力。自定义协议可以进行大量优化,但代价是可维护性和可移植性(多种语言都有自己的 JSON 解释器,而自定义解释器可能需要实现或封装,从而在流程中添加层,从而降低性能,或者需要代码转换。 )
如果您不在乎是否丢失一两个数据包,那么 UDP 可能是一个可行的解决方案。比 TCP 更少的控制意味着更轻的协议,但除非您实现自己的控制,否则您永远无法确定数据是否到达另一端。
TL;DR 版本:我会坚持使用 JSON 等标准低级协议,即使它们会增加一些开销。