J2EE 架构

J2EE 是针对 webService、业务对象、数据访问和消息传送的一组规范(具体就是一组 api 构成的协议),比如 mysql 等数据存储厂商根据 JNDI 接口规范开发对应的 sdk,从而让各种 java 程序能使用统一的方法来访问数据。
各个平台开发商基于 J2EE 开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台(比如 Tomcat服务器、WebLogic)。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。
J2EE 核心是为了注重两个事情:
* 建立标准,让 web 应用的部署与服务器无关;
* 服务器可以控制构件的生命周期和其它资源,以便能够处理扩展、并发、事物处理管理、安全性问题。
具体基本由四层进行组织,不同中间件或者程序可能关注于某一层的具体规范来实现自己的功能。基本做法就是在前端使用Applet、HTML和JSP,在后端使用Enterprise JavaBeans支持的Servlet及其他成分。
构件
标准的J2EE 定义了几个基本构件:
- 应用客户端
-
- Applet : Java Applets实际上是运行在web页面上的Java程序。它是一个继承于java.Applet.Applet的Java类,它通过引用被嵌入到 HTML页面中去,就象一个图像一样。
- EJB 构件 :
- Servlets : 一种服务器端的应用,当被请求时开始执行,扩展了web 服务器的功能。
- JSP : 嵌入少量代码逻辑的 html 构件,JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
交互流程

一个典型的交互流程例子:

设计模式
- DAO : 将底层数据访问操作和高层业务逻辑分离开,内部会封装访问具体数据源的逻辑。
- DTO : 经典的 EJB 设计模式之一,DTO 本身是一组数据或者对象的容器,内部不做业务逻辑,仅封装一致性检查和基本校验之类的行为
- MVC 设计模式。
MVC
MVC 设计模式将行为拆分为三个行为主体:Model、View、Controllor。
Model 不依赖 View 和 Controllor,但是 model 的变化需要被 view 感知到,因此需要 view 在modle 上注册自己,当 model 产生变化的时候,通过事件等机制通知注册的 view,而 controllor 就是对流程进行控制的引擎,比如处理事件(model 的变化事件或者用户的行为)。
- view :展示给用户或者前端的一组视图;
- model :数据的实际载体容器,或者就是数据模型,对业务数据/信息的处理模块
- controllor :程序流程的控制者,具体比如将用户界面(View)的操作映射到具体的Model,以完成具体的业务逻辑;将通过Model处理完的业务数据及时反应到用户界面(View)上。
mvc 的标准实现就是分为:视图层、控制层、业务层
控制层将视图层的数据转交给对应的业务层做业务处理,并将对应结果返回给相应的视图层,具体可能负责复杂的数据转换,视图生成,多个业务结果的组合等偏流程性质的工作。
缺点
mvc 引入控制层,天然增加了复杂性,视图层和控制层往往是紧密结合的,二者不能很好的进行独立的重用,比如单独使用某个控制器;增加了维护困难,比如model频繁进行不兼容的变更,那么要对应修改相关联的的大量视图。
优点
view 和 model 的解耦对model 的多维度展示提供了良好的扩展性,model 也可以单独进行复用,而控制器和view也可以进行动态的修改(例如热插拔)。
业界的具体实现
Struts 框架有对mvc模式进行具体的实现,其中对 controllor 的实现就是通过一个 servelet 来将用户的具体行为事件转发给对应的行为处理模块。而 view 就是通过 jsp 实现的,
使用场景
针对企业级分布式应用的计算环境,企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应用。这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性考虑。
优点和缺点
todo
Tip
- ASP、PHP 等脚本语言,其实就是在前端放入一个解释器来处理逻辑,好处是简化了开发流程,问题就是业务逻辑、IO 逻辑、数据处理等混杂在一起,,带来维护、稳定性、扩展能力上的负面影响。
- Nginx适合处理高并发的静态请求和作为反向代理服务器,而Tomcat适合运行动态的Java Web应用程序。tomcat 本质是个 java servlet 的容器,专门用来运行 java web 服务。
8438

被折叠的 条评论
为什么被折叠?



