EJB与WebService? 绩效观点

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

背景:

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

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

通过记住以下事项:

我有2个选择:

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

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

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

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

请提供您的反馈

问候

阿赫亚

如果“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的缺点。 它已经存在了很长时间,但它仍然只是花花公子。

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

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