【发布时间】:2011-09-27 20:46:13
【问题描述】:
我目前正在编写 iPhone 应用程序的网络层和随附的服务器。 iPhone 应用程序在主机模式和访客模式下运行,并且还与服务器通信,用于在设备之间通过 3G 中继消息。两者都是用 C# 编写的,并且我使用套接字。出于速度和效率的原因,我想坚持使用二进制通信。
是否有正确的设计方法来设计网络层,特别是在服务器和客户端之间传输的数据包?
我是否应该创建一个基类作为我的第一个版本,它允许系统的基本操作,然后从该基类继承以用于将来的版本和更改,并将其序列化?
我知道 XML 是一种选择,但我做了一些测试,iPhone 上的 XML 序列化比二进制序列化慢几个数量级,最终,网络层的部分需要是二进制的,因为我在设备之间发送文件。
我的应用需要向后和向前兼容不同的版本。我不希望将来对功能有大的变化,但可能会有某种形式的新功能。
我读过这个问题:Backwards compatibility in .NET with BinaryFormatter
最后一个答案似乎是最好的选择,使用“手动”反序列化和序列化方法。我只是想知道这是唯一的选择。
【问题讨论】:
标签: c# iphone client-server