在众多远程访问的可选架构中,你可能会迷失,到底该选择哪一个呢?幸运的是,如果我们的需求一经设定,我们的答案将是十分清楚明了的,Spring的文档部分地痛了很详细而具体的关于选择怎样一种远程控制架构实现的讨论。在这里,我们回展开讨论这一话题,你可以结合文档中的讨论,一起阅读本
如文档中所述,RMI视需要传递复杂对象模型的Java-toJava的良好解决方案,因为RMI使用java内建的序列化功能,创建并发布在不同网络中传递复杂对象模型应用程序,这将大大简化你需要做的工作,结合Spring来使用RMI,让你从前胎的纷杂中隐藏起来
你的程序中RMI特有的实现细节,将是的它可以被简单地插入到一个远程控制架构中,并且可能由此改变你的需求。
如果你在多台环境重工作RMI将是一个很好地解决方案,因为它允许你使用COBRA IIO进行通讯,这些架构师被其他很多语言所广泛支持的,事实上,你可能会发现你的现有环境中部署新组件的时候,那个架构可能是COBRA,这种情况下,RMI就是你的最佳解决方了
RMI最大缺点是他不能够在HTTP协议间被方便的传递,所以如果你需要在internet中通信或者想要简单地穿越企业防火墙,你也需要考虑其他架构了。
如果你需要使用HTTP赖和其他语言编写的系统进行通讯,那么JAXRPC通常要托管使用,这是因为SOAP的广泛支持,请记住,在Java-to-Java通信中使用JAXRPC要特别三思而后行,因此除此以外还有其他更有效律的解决方案,即便你认为,也许在以后你会需要SOAP的支持,你仍可以便捷的非java客户端创建SOAP服务,并且在你的Java客户端中使用其他架构来用相同的实现类服务支持
原始的Spring HTTP调用者架构,对于使用Java-to-Java环境,两端据具有spring系统的通信来说是一个很好的选择,而且因为他基于Java序列化,可以很好的在组件间传递复杂类型的对象。
Hessian和一定程序下的Burlap是在同构与异构的环境下实用的最佳候选,除非XML被显示的要求使用,那么你应该使用Hessian而非Burlap,因为Hessian的执行效率远高于Burlap,并在java以外被广泛的支持。在Java-to-Java环境中,Hessian是一个有效的HTTP调用者的替代,而且在通信双方都没有使用Spring的条件,这也许是唯一的解决方案。不过还有一个问题,Hessian的序列化支持并不是想java的序列化一样十分复杂,所以对于复杂对象模型,为了让你的程序工作正常,你可能只有使用HTTP调用者了