繁体   English   中英

Java Rest / Web服务的TCP /二进制版本?

[英]TCP/binary version of Java rest/web services?

我是一名网络新手,并且探索了一些框架,例如Jersey和CXF,用于在Java中构建RESTful Web服务。

我有一个新的应用程序,它需要通过Internet(在客户端和服务器之间)发送大量的二进制数据,并且它必须非常快。 我想知道是否存在诸如纯“ TCP / IP(非)Web服务”之类的东西,以及是否存在用于构建此类东西的开源Java库。

如果所有网络服务都必须位于TCP / IP之上,那么我想我正在寻找一种仍在使用二进制数据的东西,但是这为快速服务带来了极少的开销。

我总是将REST与XML或JSON相关联。 如果它可以配置为超快并可以处理二进制数据,那么我什至会加入其中,因为我已经对Jersey有所了解。

认为 RMI可能是一个不错的选择,但不确定是否适合该用例。

我需要速度,我需要一个二进制协议 ,并且不确定从哪里开始。 有任何想法吗? 提前致谢!

您不能使用Java套接字吗?

那就是您可以达到的最低水平。

http://docs.oracle.com/javase/tutorial/networking/sockets/

是的,RMI比任何高级传输抽象(例如CFX)要快得多。 您有两个选择,原始套接字或RMI,使用RMI更容易。

REST是一种架构模式,其独特特征是使用HTTP动词来实现它们的初衷。 即使大多数已部署的REST服务都使用JSON序列化对象,整个HTTP事务看起来也像这样:

PUT /user/foo HTTP/1.1
Host: example.com
X-Auth-Token: foobarbazanythingyouwanthere

{"fist": "Jeff", "last": "Atwood"}

响应是:

HTTP/1.1 200 OK

因此,没有真正的“开销”。 相反,您可以利用现有库的功能来处理路由,身份验证,序列化等。 由于HTTP使用的是类似MIME的信封,因此二进制内容没有问题,即使这会增加一些开销,也很难想出一个超高效而又有效的协议,更不用说您需要设计它了,实施所有库,并且-没人会对您的工作感兴趣。

由于您声明自己是“网络新手”,并且似乎以随机方式使用了诸如REST和RMI之类的术语,因此我强烈建议不要考虑性能,而应该使用标准技术。 您可以使用HTTP,有很多预先构建的框架,servlet容器,服务器存根,您都可以命名。

当您衡量实际的性能瓶颈时,请回来,以便我们提供更好的帮助您的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM