Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为给定场景的最佳协议投票_Java_Web Services_Protocols_Vote - Fatal编程技术网

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 我为我的应用程序设计的二进制协议

选项2 将我的服务器实现为HTTPServlet。客户端在post消息中发送post请求和查询,servlet在消息中发送响应。 然而,我认为对于实时交互来说,这不是一个好的选择,因为即使对于相同的客户端和会话,也会为每个post请求创建一个新线程。请评论这项工作的效率

选项3 使用普通的servlet。 将面临与上述相同的问题

选项4 使用

选项5 使用

选项6 使用(我还没有阅读说明书)

选项7 建议一些其他的协议

现在,我没有web服务方面的经验,但是如果它是选项,那么我不介意在它上面投入时间

基本上,我希望选择1的速度和效率,以及标准的做事方式


谢谢

选择选项1,并使用Google协议缓冲区从协议定义自动生成代码(即,它在仍然有效的情况下为您提供一些一致性/标准化)。

使用选项1,作为协议使用!(有时称为二进制XML。)这会产生其他人可以理解的小型结构化消息。这是一个流行的标准,当您阅读此消息时,您刚刚使用了它。:-)


ASN.1是几种Internet协议的一部分。

我觉得HTTP协议最适合您。它的开销很低,已经被广泛接受。使用TCP[这是移动通信的一个要求],它具有会话协商[良好的连接,而不是会话的实际状态]

使用不同的协议共享视频和音频,但使用http协议建立连接

由于所需的处理,使用SOAP/web服务将不是最优的。根据个人经验,移动机器上的webservice客户端更容易,但所需的处理非常复杂,可能会在应用程序中造成瓶颈。[移动机器不能很好地处理线程]

另外:由于您是通过无线发送数据,因此您还必须考虑处理非导向媒体的其他问题

您的要求:
  • 服务器和客户端。客户端通常是移动电话:是的
  • 通过互联网连接:是的,这取决于设备网络的设置方式
  • 服务器和客户端希望彼此对话:是的
  • 客户端和服务器之间的文本、多媒体交换:HTTP可以很好地处理文本和图像,但是您需要切换到一些不可靠的东西,比如视频的UDP
  • 文本将是某种标准格式。那是预先决定的是的
  • 实时性要求:这是不可能的,但可以尝试
  • 会议通常持续5-15分钟。在某些情况下,持续不到一分钟。假设会话持续时间为5分钟。注意:有一些头可以保持会话打开
  • 协议应遵守标准:什么
  • 它必须是高效的唯一需要做的处理是逐行解析Key:data
另外,我忘了提到SOAP/Webservices是XML over HTTP。

我推荐选项3,不要担心线程问题。如果您将其托管在servlet容器中,那么容器几乎肯定会使用线程池来优化传入请求的处理并控制应用程序中的线程数量


此外,HTTP/1.1还支持后续请求的管道连接和连接重用。这减少了服务器设置和断开连接的负担。

首先,如果您希望将客户端放在移动电话上,并使用轻量级解决方案,请避免使用SOAP。SOAP是浪费CPU和带宽的恶棍。这也不是最简单的解决方案

如果您计划在浏览器上实现客户端(使用javascript),那么基于JSON的解决方案显然是一条值得遵循的道路,而且也很简单。要了解这将是什么样子,请阅读本文:

您可以在json.org上找到更多资源

您可能可以将JAX-RS用作美化的Servlet实现。(我们中的许多人都说JAX-RS的JSR311看起来就像Servlet规范从一开始就应该是的样子……这并不是那么简单,但是……)

关于“每篇文章一个线程”——这不是问题,因为您提到的所有技术在大多数应用程序服务器/Servlet引擎上的行为都是相同的——在给定时间处理的每个请求都会有自己的线程


(这里您不是在谈论Comet—一种技术,它倾向于在每个会话中使用一个线程,除非您有一个特殊的应用程序服务器。)

选项1是一个很好的选项,如果您能够使它高效地用于您的目的。但我愿意选择方案2,只要不需要方案1。 选项2得到了很好的实施和支持。如果使用HTTP 1.1,它不应该每次都创建新线程

但如果您只需要传输文本,则可以使用选项