2010-09-09 90 views
11

那么现在有情况决定。我认为stackoverflow是讨论的最佳地点。EJB与Web服务?性能的观点

背景:

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

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

通过保持以下事项:

我有两个选择:

  1. 纯EJB应用程序意味着EJB客户机和EJB服务器组件

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

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

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

请提供您的反馈

问候

阿赫亚

+0

为您的问题添加了java标签。 – 2010-09-09 12:27:17

+0

您支持EJB的Web服务有什么问题? – 2010-09-16 15:01:10

+0

@BlaiseDoughan对于offtopic感到抱歉,但是让EJB支持Web服务是一个好习惯吗? – MyTitle 2012-12-07 13:58:52

回答

8

如果通过“Web服务”来表示SOAP Web服务,那么无论您如何实现,EJB都应该更快。

优点:

  • Java序列化速度较快的是XML Web服务
  • 序列化和解析XML使用更多的内存比直系列化,EJB的节省内存
  • EJB是直的Java接口和值对象表示。对于Web服务,您可能需要添加映射层,如XmlBeans或JAXB。
  • 大多数EJB协议,可以让你轻松地重用电话

缺点之间的TCP/IP连接:

  • 做一个适当的设计第一XML消息定义将分离的客户端和服务器
  • 这是考虑到额外的间接层,更容易改变消息格式
  • EJB实现历来是巨大且缓慢的,因为比Web服务栈更大(但是更新的EJB实现像Apac他的OpenEJB体积小,重量轻且可嵌入)

但是,如果您不需要分布式事务处理,只需使用RMI即可。它具有优点,但没有EJB的缺点。它已经存在了很长时间,但它仍然只是花花公子。

+0

非常感谢细节..我正在寻找2个JVM之间更快的通信方式。 EJB是我感觉到的。特别是在我的应用程序中,我不想因为两端的XML解析而失去我的性能。 – Chetan 2010-09-17 11:59:47

1

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

通过HTTP以XML格式发送数据效率非常低下。另一方面,它给你在客户端更多的灵活性更多。 Web服务可以从任何平台或编程语言中使用。

+0

谢谢迈克。如果我通过EJB使用SOAP,XML处理将会严重影响我的性能。因为我的xml有效载荷大约在60到100KB左右。 – Chetan 2010-09-17 12:03:54

+0

Mike建议发送XML而不是SOAP消息的JAX-RS。有关示例,请参阅:http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html – 2010-09-17 16:34:13