0

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

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

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

我总是将 REST 与 XML 或 JSON 相关联;如果它可以配置为超快并处理二进制数据,我什至会喜欢它,因为我已经对泽西岛有点熟悉了。

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

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

4

2 回答 2

0

你不能用Java Sockets吗?

这就是你可以达到的低水平。

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

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

于 2013-03-29T22:18:44.230 回答
0

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 容器、服务器存根,应有尽有。

当您测量真正的性能瓶颈时回来,以便我们获得数据以更好地帮助您。

于 2013-03-29T23:04:40.457 回答