http://blog.csdn.net/linxi1209163com/article/details/51029890

一:什么是EJB

官方说法,就是企业级是基于语言的服务器框架技术,通过我们可以轻松的构建企业级,分布式的构建应用。也就是说提供了一个框架来开发和实施分布式商务逻辑。
二:为什么要用EJB

要说到为什么使用EJB,不得不先问一个问题,为什么使用J2EE规范?

J2EE是一种利用java2平台来简化企业解决方案的开发,部署和管理相关复杂问题的体系结构,可以用于开发大型的多层的以及分布式的企业级应用系统。作为一种规范,技术框架和技术的集合,J2EE主要是用于分布式企业级应用的框架。

企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用,这些大型企业级应用结构复杂,涉及到的外部资源众多,事务密集,数据量大,用户数量多,有较强的安全性考虑。通俗的理解企业级应用就想是一个城市的规划,我们需要考虑和解决的事情太多,之间的复杂性也太多,而我们要自己解决这个问题需要耗费大量的人力物力,也不一定可以很好的解决,而j2ee就是为了规范城市规划,规范解决这些复杂问题而产生的。

所以如果是一个企业级的复杂的分布式系统应用,j2ee是我们很好的选择,而实现j2ee规范最好的EJB当然是更好的现成的框架选择。当然小型应用,不需要分布式,不需要复杂事务处理就可以考虑不适用J2EE,当然EJB也不用考虑了。

EJB可以帮助我们解决企业级开发分布式,分布式事务等这些问题,让程序员从复杂的关系中抽离出来,专心开发企业业务逻辑。

当然EJB也有不好的一面:

三:为什么不用EJB?

以上我们知道,EJB规范的关键目标之一就是简化应用代码,让编写应用变得更容易,开发人员不必了解低级事务,状态管理,多线程,连接池等,理论上通过把所有低级问题都推向EJB容器,开发人员能够把精力都投入业务逻辑,但其实EJB在消除复杂性的情况下,给应用增加的复杂性也一样大:

1.ejb是比较重量级,学习成本高,复杂性高,潜在问题多。

2.ejb难以调试:看到ejb的调用流程,虽然看上去ejb让用户不用了解远程调用细节,使用简单,但是由于里面的调用过程复杂,一旦有一个环节错了,用户都难以调试,排错,开发过程中出现问题不可避免,而解决ejb的问题,解决周期要比较久。出错的时候,错误信息也千奇百怪。

3.ejb的性能问题:ejb的调用涉及太多类的序列化和反序列化,本来通过网络传输已经很慢了,还要传递对象,数据量又更大了,还要涉及了对象的序列化和反序列化,这中间有太多的开销了。

4.ejb的替换开源产品太多了:现在业务逻辑,在Java上要用框架的有spring,远程调用,有webservice(apache cxf已经做得很好了,而且webservice又是通用标准),mina(一个apache的NIO框架),netty(现在性能最快的NIO框架,来自jboss).而且这些产品都是可移植,社区交流多,出了问题,google就找到了。

。。。

EJB 是分布式应用和复杂事务管理问题的一个上佳解决方案。但是,许多应用没有遇到这些问题,EJB在这样的应用中增加了不必要的复杂性。一个EJB解决方案可以比喻为一辆卡车,而一个WEB应用服务可以比喻为一辆小轿车。当我们需要执行一些像搬运大型对象之类的任务时,一辆卡车会被一辆小轿车高效得多。但是,当一辆卡车和小轿车做相同工作时,小轿车的灵活性、更容易操作!

关于EJB,为什么用EJB?为什么不用EJB?的更多相关文章

  1. 有状态的EJB对象和无状态的EJB对象

    一,定义有状态Bean和无状态Bean 有状态Bean: @Stateful @Remote public class StatefulEjbBean implements StatefulEjb{ ...

  2. EJB初识(通熟易懂)

    转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...

  3. EJB概念理解

    转自http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是"企 ...

  4. [转] EJB到底是什么,真的那么神秘吗??

    原文地址:http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是&quo ...

  5. EJB到底是什么,真的那么神秘吗??

    1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...

  6. EJB究竟是什么,真的那么神奇吗??

    1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...

  7. Web Service 与 EJB 的分布式的区别

    EJB的分布式:一个业务逻辑可能会调用分布在多台服务器上的 EJB 组件,但是这么多的组件调用必须纳入一个事务范围之中.也就是说如果需要调用三个 EJB 组件,第一个调用成功,第二个调用成功,但第三个 ...

  8. JEE , EJB概念深入概括

    说起EJB,不得不提JEE,java EE 英文全称为:java Enterprise Edition企业级应用的软件架构,是一种思想,也是一种规范,方便从事这方面的开发者以及开发厂商进行规范性的开发 ...

  9. EJB理解

    1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...

随机推荐

  1. Bitcoin

    看李笑来老师的2013演讲——Bitcoin is not virtual currency,it is a real world. 1.由于bitcoin的算法中进行有上限量的发布,所以这是不会出现 ...

  2. Chrome For EBS

    https://chrome.google.com/webstore/detail/oracle-ebs-r12-enablement/ekkagabmggbmpmncofhgkfigmeldifnc ...

  3. Python学习-28.Python中的列表切片

    在实际的业务过程中,经常有这么一个操作:取一个列表的一部分进行操作,而不影响原来的列表.也就是将原来的列表复制一个部分副本并对其进行操作. 举个完整例子: list = ['a','b','c','d ...

  4. 今天犯了一个StringBuilder构造函数引起的二逼问题。

    在.Net里,StringBuilder的构造函数有很多,最常用的是无参的构造函数,默认分配16个字符的空间.其次就是填写StringBuilder空间的带一个Int32的构造函数,这个在优化代码的时 ...

  5. 查看Linux服务器被映射的公网ip

    查看Linux服务器被映射的公网ip   现在云服务器非常流行,不仅企业甚至是个人都可能拥有自己的云服务器,但是目前的云服务器厂商提供的公网IP大都是映射而来,所以在Linux服务器上执行ifconf ...

  6. AndroidPn服务端部分bug解决方案

    目前推送的情况已经大致可以了,可以正常推送.但是要在实际生产中使用,要改进很多地方. 原本的版本,是不会对消息重新发送的.消息如果丢失,或者用户没有在线,消息也不会重新的发送.所以,这些问题都是要解决 ...

  7. asp .net api 日志

    方法1:继承IExceptionLogger ExceptionLogger是框架提供的表示未处理的异常记录器的抽象类 public class RecordExceptionLogger : Exc ...

  8. .net core cache使用

    整理下.net core cache的使用 Nuget安装   Microsoft.Extensions.Caching.Memory using Microsoft.Extensions.Cachi ...

  9. 单线程任务 Task.Factory.StartNew 封装

    代码: using log4net; using SunCreate.CombatPlatform.Security; using System; using System.Collections.G ...

  10. 浅谈.NET,C#三层架构(自己总结)

     三层架构 常见架构: 三层(经典) MVC MVVM MVP   开发中常见的23种设计模式: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种: ...