Java 为给定场景的最佳协议投票
我要做一个设计决定。我需要你的建议 要求:Java 为给定场景的最佳协议投票,java,web-services,protocols,vote,Java,Web Services,Protocols,Vote,我要做一个设计决定。我需要你的建议 要求: 服务器和客户端。客户端通常是移动电话 通过互联网连接 服务器和客户机想要相互交谈 在客户端和服务器之间交换文本、多媒体 文本将是某种标准格式。这是预先决定的 实时性要求 会议通常持续5-15分钟。在某些情况下,持续不到一分钟。假设会话持续时间为5分钟 议定书应遵守各项标准 它必须是有效的 选项1 我为我的应用程序设计的二进制协议 选项2 将我的服务器实现为HTTPServlet。客户端在post消息中发送post请求和查询,servlet在消息中发
- 服务器和客户端。客户端通常是移动电话
- 通过互联网连接
- 服务器和客户机想要相互交谈
- 在客户端和服务器之间交换文本、多媒体
- 文本将是某种标准格式。这是预先决定的
- 实时性要求
- 会议通常持续5-15分钟。在某些情况下,持续不到一分钟。假设会话持续时间为5分钟
- 议定书应遵守各项标准
- 它必须是有效的
谢谢选择选项1,并使用Google协议缓冲区从协议定义自动生成代码(即,它在仍然有效的情况下为您提供一些一致性/标准化)。使用选项1,作为协议使用!(有时称为二进制XML。)这会产生其他人可以理解的小型结构化消息。这是一个流行的标准,当您阅读此消息时,您刚刚使用了它。:-)
ASN.1是几种Internet协议的一部分。我觉得HTTP协议最适合您。它的开销很低,已经被广泛接受。使用TCP[这是移动通信的一个要求],它具有会话协商[良好的连接,而不是会话的实际状态] 使用不同的协议共享视频和音频,但使用http协议建立连接 由于所需的处理,使用SOAP/web服务将不是最优的。根据个人经验,移动机器上的webservice客户端更容易,但所需的处理非常复杂,可能会在应用程序中造成瓶颈。[移动机器不能很好地处理线程] 另外:由于您是通过无线发送数据,因此您还必须考虑处理非导向媒体的其他问题 您的要求:
- 服务器和客户端。客户端通常是移动电话:是的
- 通过互联网连接:是的,这取决于设备网络的设置方式
- 服务器和客户端希望彼此对话:是的
- 客户端和服务器之间的文本、多媒体交换:HTTP可以很好地处理文本和图像,但是您需要切换到一些不可靠的东西,比如视频的UDP
- 文本将是某种标准格式。那是预先决定的是的
- 实时性要求:这是不可能的,但可以尝试
- 会议通常持续5-15分钟。在某些情况下,持续不到一分钟。假设会话持续时间为5分钟。注意:有一些头可以保持会话打开
- 协议应遵守标准:什么
- 它必须是高效的唯一需要做的处理是逐行解析Key:data
此外,HTTP/1.1还支持后续请求的管道连接和连接重用。这减少了服务器设置和断开连接的负担。首先,如果您希望将客户端放在移动电话上,并使用轻量级解决方案,请避免使用SOAP。SOAP是浪费CPU和带宽的恶棍。这也不是最简单的解决方案 如果您计划在浏览器上实现客户端(使用javascript),那么基于JSON的解决方案显然是一条值得遵循的道路,而且也很简单。要了解这将是什么样子,请阅读本文:
(这里您不是在谈论Comet—一种技术,它倾向于在每个会话中使用一个线程,除非您有一个特殊的应用程序服务器。)选项1是一个很好的选项,如果您能够使它高效地用于您的目的。但我愿意选择方案2,只要不需要方案1。 选项2得到了很好的实施和支持。如果使用HTTP 1.1,它不应该每次都创建新线程 但如果您只需要传输文本,则可以使用选项