java - 请问java RMI的意义?

标签 java computer-science rmi software-design anti-patterns

<分区>

为什么人们使用 RMI,或者我应该什么时候使用 RMI?我在 oracle 的网站上阅读了那些关于 RMI 的教程。但它没有提供足够的实际示例。

据我了解,软件的模块应该尽可能“不相关和分离”。 RMI 在某种程度上对我来说似乎是高耦合的一个例子。为什么这不是一个糟糕的编码习惯?我认为客户端应该只触发指令,而对象的所有实际操作都由服务器完成。

最佳答案

你真的不应该将 RMI 用于你今天构建的任何应用程序,主要是因为你刚刚列出的原因。

在某些情况下(深入研究遗留或“企业”应用程序)您别无选择。

但是,如果您要开始一个新项目,其他选项是:

基于 HTTP 的 REST + JSON

与远程服务通信的事实标准。它最大的优点是轻巧,易于掌握概念。

理论上它应该比 RMI 需要更多的工作,因为您必须手动制作可用的 URL、每个 URL 中可接受的动词等。在实践中,我会说 RMI 的样板文件并不能真正帮助任何人。

坚持使用 java,Jersey is a brilliant library编写您自己的 RESTful Web 服务。

如果您想要使用 Java 的 RESTful Web 服务的电池解决方案,Dropwizard由 Yammer 的好人提供了一个完整的服务器和框架,可以直接插入您的业务逻辑,并提供日志记录、数据库连接、序列化、请求路由,甚至开箱即用的指标收集。

肥皂

以前的远程服务通信标准。除非你有理由使用它,否则我会坚持使用 REST。

节俭

Thrift 将创建一个客户端和一个服务器 stub ,基本上完成大部分工作。通信采用高效的二进制协议(protocol)。它在 Java 世界中越来越受欢迎,因为它被“大数据”领域的许多开源项目使用。例如,Cassandra、HBase(切换到 Avro)。 Scrooge 是一个 Twitter 项目,用于为 Scala 创建惯用的节俭 stub 。

Akka Actor

Akka is framework实现了 Actor model对于 Scala 和 Java。包括服务间通信的规定,并处理引擎盖下的许多细节。我


根据您的需要,有些会比其他更适合。

关于java - 请问java RMI的意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326901/

相关文章:

math - 使用固定大小位宽寄存器的偏移二进制算法是否有任何常规规则?

algorithm - 在哪里可以了解有关 "ant colony"优化的更多信息?

java - 序列化空值的大小

Java 垃圾收集引用类

java - Servlet url 映射

Java EE Web 应用程序插件架构

algorithm - 大 O 归纳法证明

java - RMI 异常 "error marshalling arguments"

java - 如何从 Android 应用程序调用远程方法

java - 请求关注 JavaFX 阶段不会更改 macOS 左上角菜单栏标题