代码之家  ›  专栏  ›  技术社区  ›  jthg

为什么要创建EJB而不是Web服务?

  •  3
  • jthg  · 技术社区  · 16 年前

    我本以为有很多关于这方面的信息,但我还没有找到任何真正能回答我问题的东西。

    有了web服务,我可以想到很多好处,包括java/.net之间的互操作性,以及更容易通过防火墙/代理进行网络连接,因为它使用http。有了WS-ReliableMessaging、WS-AtomicTransactions、MTOM等较新的标准(这些标准应该经过Sun和MS之间互操作性的全面测试),EJB提供了哪些web服务所没有的功能?

    除了基本的web服务,我从来没有使用过其他任何东西,所以也许有经验的人可以告诉我,这些服务都不如供应商所说的那么好?

    3 回复  |  直到 16 年前
        1
  •  2
  •   djna    16 年前

    首先,EJB和Web服务不是排他性的替代方案,实际上创建EJB并让它同时公开IIOP和Web服务接口是非常合理的。

    这里有两个问题:

    1. 对于可重用的业务逻辑,什么是好的实现技术。
    2. 对于一段业务逻辑,使用哪种调用样式?考虑因素,例如何时RMI/IIOP是一个好的选择?什么时候是SOAP/HTTP?当SOAP/JMS。。。等

    编写EJB3 ejb非常简单,并带来了事务性、安全性、实例池和可管理、可扩展的基础架构等好处——这往往会为严肃的企业逻辑带来回报。(您也可以将Spring等其他框架作为替代方案。)

    现在谈谈调用风格。显然,当需要与(比如.NET)进行交互时,Web服务是有用的。但是,在纯Java世界中,特别是当逻辑和“客户机”可以部署在同一个JVM中时,使用本地EJB接口确实比使用Web服务更有效。远程调用时,RMI/IIOP和Web服务之间的性能比较并不十分明确,在某些情况下,Web服务实际上做得相当好。对我来说,使用Web服务的反论点是,历史上存在许多互操作问题,不同供应商之间的标准版本偏差一直是一个问题——尽管如果您正在进行互操作,那么我猜您将始终存在此类问题。

        2
  •  0
  •   Asim Ghaffar    12 年前

    如果您想支持Java服务的非Java使用者,那么请使用web服务。对于Java消费者来说,IIOP可能是一种选择。

    服务实现 若您想要容器提供的功能,比如事务管理,那个么就使用EJB来实现服务。

        3
  •  -2
  •   Dean J    16 年前

    我不想讽刺,但我在EJB3之前看到的大多数EJB实现似乎都是为了保持工作安全而设计的。这是我的轶事,值得一提。