我想创建一个移动消息服务,但我不知道使用套接字编程还是网络服务更好?
在创建这样的服务时需要考虑哪些问题?例如连接成本等。
如果需要更多细节,请在投票问题关闭之前告诉我!
在创建这样的服务时需要考虑哪些问题?例如连接成本等。
如果需要更多细节,请在投票问题关闭之前告诉我!
Webservices通常比较容易实现,因为有很多开发者工具、库和框架对它们提供了支持。
然而,特别是如果你要传输的负载很小(比如典型的短信或推文大小),那么使用webservices会增加很多额外的开销:通过GPRS或UMTS等无线网络发送的字节仍然非常昂贵,与通过电缆或ADSL传输的字节相比。此外,web服务还会携带一些不可见的信息层,最终客户也需要为它们付费。
因此,如果你的用例基于短消息,我建议至少进行一些带宽模拟计算,并根据带宽节省与应用程序复杂性增加之间的权衡做出决策。
在查看socket时,也可以了解一下UDP:如果你能接受这样一个事实,即基本上你只需将消息抛给某个人,而不需要在协议中设计一些确认机制来确保消息到达,那么它非常高效,因为没有流量创建和维护连接,即使是相当长的消息也可以很好地传输到1个UDP数据包内。
编辑基于评论:
编辑2,我忘了提到的事情:移动网络曾经是开放、透明的网络,设备通过公共IP地址进行标识。目前向NAT的移动网络的快速发展对于"围墙花园"内外设备之间的通信(NAT穿透)产生了影响,设计通信通道时需要考虑这一点。
至于在聊天应用程序中使用数据流:它提供了一些概念上的优势,但您也可以很好地将聊天应用程序置于UDP之上。查看这里或这里。