EJB与Web服务?绩效观点

时间:2010-09-09 10:18:13

标签: java web-services ejb performance

好吧我们现在有情况决定。我认为stackoverflow是讨论的最佳场所。

背景:

我们有2台JVM企业应用服务器,每台都部署了一个应用程序。我们需要启用从一台机器到另一台机器的业务功能调用。假设一个是客户端而另一个是服务器。

现在从性能角度来看,哪种方法更适合设计服务器应用程序。

记住以下事项:

我有两个选择:

  1. 纯EJB应用程序是指EJB客户端和EJB服务器组件

  2. WebService简单Java方法(没有基于EJB的Web服务,因为它简直就是一团糟)

  3. 我的效果指标:速度:哪种设计方法可以更快地处理请求。我的业务应用程序肯定会部署在32位机器上!

    另请注意,有2个JVM,一个是32位和64位(现在避免这种情况是不可避免的)

    请提供您的反馈

    此致

    阿赫亚

2 个答案:

答案 0 :(得分:8)

如果“Web服务”是指SOAP Web服务,那么无论您如何操作,EJB都应该更快。

优点:

  • Java序列化比XML Web Services更快
  • 序列化和解析XML比直接序列化使用更多内存,EJB节省内存
  • EJB用直接Java接口和值对象表示。对于Web服务,您可能必须添加映射层,例如XmlBeans或JAXB。
  • 大多数EJB协议允许您轻松地重用调用之间的TCP / IP连接

缺点:

  • 正确设计第一个XML消息定义将解耦客户端和服务器
  • 在给定额外的间接层
  • 的情况下更改消息格式更容易
  • EJB实现历史上是巨大而缓慢的,因为它比Web服务堆栈更大(但是像Apache OpenEJB这样的新EJB实现是小型,轻量级和可嵌入的)

但是如果您不需要分布式事务处理,只需使用RMI即可。它有专业但没有EJB的缺点。它已存在多年,但它仍然只是花花公子。

答案 1 :(得分:1)

它不一定是一个或另一个。您可以在EJB中拥有所有业务逻辑,还可以提供Web服务外观来访问EJB。还要记住,有不同类型的Web服务体系结构。 SOAP是大多数人在听到“Web服务”时所想到的,但您可能也想看看JAX-RS。

通过HTTP将数据作为XML发送是非常低效的。另一方面,它为客户端提供了更多更多的灵活性。几乎可以从任何平台或编程语言中使用Web服务。