关于EJB,为什么用EJB?为什么不用EJB?
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?的更多相关文章
- 有状态的EJB对象和无状态的EJB对象
一,定义有状态Bean和无状态Bean 有状态Bean: @Stateful @Remote public class StatefulEjbBean implements StatefulEjb{ ...
- EJB初识(通熟易懂)
转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...
- EJB概念理解
转自http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是"企 ...
- [转] EJB到底是什么,真的那么神秘吗??
原文地址:http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是&quo ...
- EJB到底是什么,真的那么神秘吗??
1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...
- EJB究竟是什么,真的那么神奇吗??
1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...
- Web Service 与 EJB 的分布式的区别
EJB的分布式:一个业务逻辑可能会调用分布在多台服务器上的 EJB 组件,但是这么多的组件调用必须纳入一个事务范围之中.也就是说如果需要调用三个 EJB 组件,第一个调用成功,第二个调用成功,但第三个 ...
- JEE , EJB概念深入概括
说起EJB,不得不提JEE,java EE 英文全称为:java Enterprise Edition企业级应用的软件架构,是一种思想,也是一种规范,方便从事这方面的开发者以及开发厂商进行规范性的开发 ...
- EJB理解
1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...
随机推荐
- Python学习-35.Python中的List Comprehensions(列表解释|列表生成式)
在某些情况下,我们需要对列表进行某些操作,例如对列表中的每一个元素都乘以2,这样一般来说就是遍历每个元素在乘以2.那么写下来就得两行了.而且这会修改原来的列表,如果要求不能修改原来的列表,又得多一行了 ...
- Python - 更改pip源至国内镜像
永久使用 [windows] 在用户名目录下创建一个目录 C:\Users\xxx\pip [linux] ~/.pip/pip.conf 新建pip.ini [global] index-url = ...
- [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]
Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...
- IocPerformance 常见IOC 功能、性能比较
IocPerformance IocPerformance 基本功能.高级功能.启动预热三方面比较各IOC,可以用作选型参考. Lamar: StructureMap的替代品 Lamar 文档 兼容S ...
- 创建/读取/删除Session对象
//创建Session对象 Session["userName"] = "顾德博";//保存,这里可以存储任意类型的数据,包括对象.集合等 Session.Ti ...
- HI-LO计数法,赌桌,与机会
HI-LO计数法,赌桌,与机会 “人只是在拼一种可能性”. 很多简单道理往往字面上理解容易,可实际运用难极. 一,那些人生中被扯的蛋 而关于人生的指导,好多耳熟能详的老话最终都被发现是蒙傻逼的.随便说 ...
- s11 day 101 python Linux环境安装 与路飞项目支付功能
from django.conf.urls import urlfrom django.contrib import adminfrom app01 import viewsurlpatterns = ...
- Java基础学习篇---------封装
一.类和对象分配内存 二.Java中的内部类 : 可以直接去访问外部类的所有属性(包括私有成员) 1.Java中成员内部类 (1).内部类的方法可以直接访问外部类的类中的所有成员变量 (2).外部类 ...
- 940. Distinct Subsequences II
Given a string S, count the number of distinct, non-empty subsequences of S . Since the result may b ...
- iOS Block初探
//https://www.jianshu.com/p/d28a5633b963 #import <Foundation/Foundation.h> void (^FFGlobalBloc ...