EJB与WebService?从性能角度来看

12

嗯,我们现在需要做出决定。我认为stackoverflow是讨论最佳地点。

背景:

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

那么从性能角度来看,哪种方法更好地设计服务器应用呢?

考虑以下几点:

我有两个选择:

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

  2. WebService普通Java方法(没有EJB的WebService,因为它会变得很混乱)

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

请注意,这里有2个JVM,一个是32位,一个是64位(目前避免这种情况是不可避免的)

请提供您的反馈

问候

Chetan


已为您的问题添加了Java标签。 - Petar Minchev
你在使用EJB支持的Web服务时遇到了哪些问题? - bdoughan
@BlaiseDoughan 抱歉离题了,但使用EJB支持的Web服务是一种好的实践方法吗? - WelcomeTo
@MyTitle - 是的,EJB后端的Web服务是一个好的实践。 - bdoughan
2个回答

8
如果您所说的“Web Services”是指SOAP Web Services,那么无论如何,EJB都应该更快。
优点:
- Java序列化比XML Web Services快。 - 序列化和解析XML使用的内存比直接序列化多,而EJB可以节省内存。 - EJB表达为纯Java接口和值对象。对于Web Services,您可能需要添加映射层,如XmlBeans或JAXB。 - 大多数EJB协议允许您在调用之间轻松重用TCP/IP连接。
缺点:
- 首先进行适当的设计,定义XML消息将使客户端和服务器解耦。 - 由于额外的间接层,更容易更改消息格式。 - EJB实现历来巨大而慢,比Web Service堆栈还要大(但像Apache OpenEJB这样的新EJB实现小巧轻便且可嵌入)。
但是如果您不需要分布式事务处理,只需使用RMI。它具有EJB的优点,但没有缺点。它已经存在很长时间了,但仍然有效。

非常感谢提供的详细信息。我正在寻找两个JVM之间更快的通信方式。我认为EJB是一个不错的选择,特别是在我的应用程序中,我不想因为XML解析而失去性能。 - Chetan

1

不必非此即彼。您可以将所有业务逻辑放在EJB中,并提供Web服务外观来访问EJB。还要记住,有不同类型的Web服务架构。当人们听到“Web服务”时,SOAP是大多数人想到的,但您可能还想查看JAX-RS。

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


谢谢Mike。如果我选择SOAP而不是EJB,XML处理会严重影响我的性能,因为我的XML负载大约在60到100KB左右。 - Chetan
Mike建议使用JAX-RS来发送XML而不是SOAP消息。例如请参见:http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html - bdoughan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接