Java的RPC框架[关闭]
Posted
技术标签:
【中文标题】Java的RPC框架[关闭]【英文标题】:RPC Framework for Java [closed] 【发布时间】:2012-02-27 21:14:37 【问题描述】:我正在构建一些服务,我需要它们来远程访问彼此的方法。 我目前正在使用 Spring 的 RmiServiceExporter,但我想知道是否有一个不依赖于 java 类、序列号等的框架。 换句话说,我不想在服务之间共享 java 代码/类。
【问题讨论】:
【参考方案1】:您的选择包括:
SOAP 网络服务 XML-RPC Apache Thrift Protocol Buffers(另见this question) Apache Avro RESTful Web 服务REST 并不是真正的 RPC。它需要一种不同的思维方式,你专注于定义一组丰富的资源(名词)而不是一组丰富的方法(动词)。
其他的可以提供更传统的 RPC,但与 Java 的耦合不那么紧密,因此与编程语言无关。
在 SOAP 中,您可以在 WSDL 中编写接口,或者从带注释的 Java 类中生成它。
在 Thrift 中,您在 Thrift IDL 中编写接口,并从中生成 Java 类。
【讨论】:
【参考方案2】:使用 RMI,您将始终致力于 Java 类。我可以建议您看看 RESTful Web 服务方法吗?
【讨论】:
【参考方案3】:您可以查看 Spring 的 HttpInvoker。或者 Spring 远程处理支持的 Hessian 和 Burlap。见http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/remoting.html
【讨论】:
【参考方案4】:Protocol Buffers 是避免序列化/版本化问题并保持语言无关的好方法。
【讨论】:
【参考方案5】:另一个选项是Versile Java(我是开发人员之一)。它正在开发中,但已经相当稳定,因此您可能想尝试一下 GNU Affero GPL 许可证是否适用于您的项目。
Versile Java 处理对象级交互。通过继承适当的基类并使用注释来公开对象和方法是直接的。下面是一个简单的示例类。
import org.versile.orb.external.*;
@Doc(doc="Provides an echo service")
public class Echoer extends VExternal
@Publish(show=true, ctx=false)
@Doc(doc="Echo service, returns the provided argument.")
public Object echo(Object obj)
return obj;
作为奖励,您还可以使用它与Versile Python 客户端或服务进行交互。
【讨论】:
谢谢。我去看看 @Mikhas 希望它能满足您的需求;如有任何问题,请随时使用我们的forum以上是关于Java的RPC框架[关闭]的主要内容,如果未能解决你的问题,请参考以下文章