当前位置:  开发笔记 > 运维 > 正文

RMI与Web服务.什么是Java2Java远程处理的最佳选择?

如何解决《RMI与Web服务.什么是Java2Java远程处理的最佳选择?》经验,为你挑选了3个好方法。

我是Web服务和RMI的新手,我想知道哪种是在不同的Web应用程序之间进行远程处理的更好方法,当这些应用程序都是用Java编写的时候,就是当不同的编程语言无关紧要时(这将是WS的优点).

虽然一方面我猜想在使用Web服务时有一个性能开销(有没有人有一些数字可以证明这一点?),另一方面,在我看来,Web服务更加松散耦合,可以用来实现更加面向服务的体系结构(SOA)(RMI无法实现,对吧?).

虽然这是一个非常普遍的问题,但你有什么看法?

谢谢



1> Mario Ortegó..:

Web服务确实允许松散耦合的体系结构.使用RMI,您必须确保类定义在所有应用程序实例中保持同步,这意味着即使只更改了其中一个,您也必须同时部署它们(不一定,但它是因为串行UUID和诸如此类的东西而经常需要)

此外,它不是非常可扩展,如果您想拥有负载平衡器,这可能是一个问题.

在我看来,RMI最适合较小的本地应用程序,这些应用程序不是与Internet相关的,但仍需要解耦.我用它来处理电子通信的java应用程序,我对结果非常满意.对于需要更复杂的部署和跨Internet工作的其他应用程序,我宁愿使用Web服务.


"它也不是很可扩展"为什么你认为它不会扩展?
我在上面提到过,我认为它有问题的原因是对象类定义必须在所有部署中保持同步,这意味着您必须非常小心部署的内容或非常小心扩展类的方式.这两件事虽然可行但往往会导致错误.可以吗?当然!它会起作用吗?肯定会的!用户会犯错误吗?最肯定的!

2> Martin Klink..:

无论您使用Web服务还是更"本机"方法,都取决于环境.如果您必须通过代理或某些公司防火墙,Web服务更有可能工作,因为它们仅依赖于HTTP.RMI要求您为您的应用程序打开另一个端口,这在某些环境中可能很难(不是技术上的)......

如果您知道此问题不是问题,则应考虑使用RMI.SOA不依赖于技术,而是依赖于良好的服务设计.如果你有一个EJB容器,你可以通过RMI调用会话bean,并且如果你真的需要,还可以将它们作为Web服务公开.

性能取决于您计划交换的数据.如果要将复杂的对象网络从一个应用程序发送到另一个应用程序,那么使用RMI可能会更快,因为它以二进制格式(通常)传输.如果您有某种文本/ XML内容,Web服务可能相同甚至更快,因为那时您根本不需要转换任何内容(用于通信).

HTH,
马丁



3> 小智..:

有利于WS而不是RMI的一件事是WS通过HTTP端口80/443工作,它通常不会在防火墙上阻塞,可以在NAT之后工作等.RMI有一个非常复杂的底层网络协议,需要你打开RMI端口,还有如果客户端是NATTED可能不起作用.其次,使用RMI限制你的slef到JAVA-JAVA通信,而对于Webservies则没有这样的限制.通过线路调试Webservices要容易得多,因为数据是SOAP/HTTP,可以通过嗅探工具轻松捕获以进行调试.我不知道在RMI上做这件事的简单方法.除了RMI真的很老,过去几年也没有受到太多关注.在CORBA很大的时代,这是一个很大的回报,而且RMI CORBA都是过时的技术.最好的选择是REST风格的Web服务.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有