Web 服务 vs EJB vs RMI,优点和缺点?

2022-08-31 17:09:35

如果所有工作都在那里完成,我的Web服务器将很快过载。我将在其后面建立第二台服务器来处理数据。

EJB 相对于 RMI 的优势是什么,反之亦然?

那么 Web 服务(SOAP、REST)呢?


答案 1

EJB 建立在 RMI 之上。两者都意味着Java客户端和bean。如果你的客户端需要用其他东西(例如,.NET,PHP等)编写,那就使用Web服务或其他与平台无关的有线协议的东西,比如HTTP或XML over HTTP或SOAP。

如果您选择 RMI,则不需要 Java EE EJB 应用程序服务器。您必须保持客户端和服务器JVM同步;如果不升级服务器,则无法升级客户端。您必须编写 EJB 应用程序服务器为您提供的所有服务(例如,连接池、命名和目录服务、池化、请求队列、事务等)。

当你想到它时,RMI是相当低的水平。你为什么要一路回到CORBA?

更好的选择是EJB 3.0而不是Spring。这取决于你是否喜欢POJO开发,除了ORM和JPA之外,你是否想要选择关系技术。

您可以支付Java EE应用程序服务器(例如,WebLogic,WebSphere)或使用开源服务器(JBOSS,Glassfish和OpenEJB和ActiveMQ),或者您可以坚持使用Spring并部署在Tomcat,Jetty,Resin或任何其他servlet / JSP引擎上。

Spring通过与技术无关提供了很多选择:持久性(Hibernate,iBatis,JDBC,JDO,JPA,TopLink),远程处理(HTTP,Hessian,Burlap,RMI,SOAP Web服务)等。

EJB 3.0是许多供应商的规范;春天只能从春天的源头获得。

我会推荐春天。它非常坚固,具有很大的牵引力,不会去任何地方。它保留了您的所有选择。

Web服务在理论上是伟大的,但有一些陷阱,你需要注意:

  1. 延迟。福勒的分布式对象第一定律:“不要!由大量细粒度分布式 SOAP 服务组成的体系结构将像糖蜜一样优雅、美观且缓慢。分发前请仔细考虑。
  2. 从 XML 到对象并返回的封送会消耗 CPU 周期,这些周期除了允许客户端使用与平台无关的协议外,不会提供任何业务价值。
  3. SOAP是一个标准,每天都变得越来越臃肿和复杂,但它有很多工具支持。供应商喜欢它,因为它有助于推动ESB的销售。REST很简单,但不太容易理解。工具不支持它。

Spring的Web服务模块非常好,但是在选择以这种方式部署时要小心。根据POJO服务接口编写。这些将允许您获得所需的概念隔离,将部署选择推迟到最后一刻,并允许您在第一个想法表现不佳时改变主意。


答案 2

在EJB和RMI之间,EJB肯定会更好 - 它拥有RMI拥有的所有内容,并且通过容器(对象池,事务管理等)提供更多功能。

在 EJB 和 Web 服务之间,如果您希望将来能够从非 Java 应用程序调用 Web 服务,那么 Web 服务将为您提供更多的可移植性。EJB 再次为您提供了事务管理和池化之类的东西,而这些东西可能无法通过 Web 服务“开箱即用”。

就个人而言,如果我这样做,我可能会使用EJB或一些类似的远程对象框架(春天的远程处理也会浮现在脑海中)。如果您需要能够从非 Java 应用程序调用对象,则始终可以根据需要使用简单的 Web 服务代理来引导 EJB。


推荐