JEE架构优质PPT.ppt

上传人:b****1 文档编号:14313290 上传时间:2022-10-22 格式:PPT 页数:69 大小:1.17MB
下载 相关 举报
JEE架构优质PPT.ppt_第1页
第1页 / 共69页
JEE架构优质PPT.ppt_第2页
第2页 / 共69页
JEE架构优质PPT.ppt_第3页
第3页 / 共69页
JEE架构优质PPT.ppt_第4页
第4页 / 共69页
JEE架构优质PPT.ppt_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

JEE架构优质PPT.ppt

《JEE架构优质PPT.ppt》由会员分享,可在线阅读,更多相关《JEE架构优质PPT.ppt(69页珍藏版)》请在冰豆网上搜索。

JEE架构优质PPT.ppt

新型的C/S架构特点是:

胖客户端虽然也是由Delphi/Swing/J2me等组成,但是胖客户端只包含界面UI显示部分,业务逻辑在服务器端运行。

多层架构的诞生,原始JavaBeans中间件架构,原始JavaBeans架构缺点,设计问题:

容易退回到传统过程化设计编程思路,进而使用基于面向数据表分析设计方法。

代码质量:

容易导致jsp中写入大量Java代码,带来调试困难和难于维护和扩展,丧失灵活性。

性能问题:

容易导致内存泄漏和性能陷阱。

例如:

数据库连接无法关闭,原始JavaBeans架构设计问题,JavaBeans既可实现业务功能、也可实现与业务无关的功能(如显示、缓存、事务等),导致紧耦合,难于扩展维护。

开发方式混乱,代码难懂,无法形成模板化编程,开发进程难以掌握和控制。

完全解耦真正分层,从类开始分离,类是最小单位,粒度最小,相当于沙粒。

每个板块层是由很多基本类组成的,如果能够实现基本类之间解耦分离,那么可完成板块层之间的解耦分离。

类的解耦通过设计模式实现。

GoF设计模式为实现类之间解耦关系提供了最常见的23种处理方式,仅供思路拓展。

类的解耦,类的调用关系不可能被消灭,只能被转移。

调用路径转移。

多层模式实现,为了达到层之间松耦合,层之间使用设计模式实现分离:

表现层:

MVC模式。

业务层:

工厂模式、Command模式和Ioc/AOP。

持久层:

ORM模式、DAO模式和ActvieRecord模式。

框架Framework,框架是设计模式的具体实现。

但比模式更明确,更适合不懂模式的程序员。

使用框架替代模式的好处:

通过一定强制性机制确保结构层次清晰。

框架选择:

Java世界是自由选择,每个层多种多样的框架产品可供选择。

多层框架实现,表现层(MVC模式):

Struts/Tapestry/JSFSwing/Delphi业务层:

EJB/Spring/JdonFramework它们是不同模式和技术的实现。

Hibernate/JDO/JdbcTemp/iBatis,多层框架示意图,表现层MVC模式,表现层MVC模式(续),View:

表示显示的视图,如:

不含Java代码的jsp页面/Swing/J2MEController:

表示流程控制,struts中的Action,Controller是Mediator模式实现。

Model:

代指业务层。

表现层基本元素和结构,必须实现功能:

模型组件显示事件触发页面跳转,组件显示对比,Struts:

组件必须继承ActionForm,一个Html表单一个ActionForm。

Tapestry:

组件必须继承BaseComponent;

可将组件嵌入Html页面任何一行,对使用组件数量无限制。

JSF:

ManagedBean,无需继承,Ioc模式。

总结:

JSF/Tapestry灵活,JSF干净;

Struts多一个界面对象ActionForm,好处。

事件触发对比,Struts:

通过表单提交submit激活,不能细化到表单里字段。

能够给于表单每个字段贴一个事件,事件组件必须实现PageListener接口。

一个字段一个事件,事件组件必须实习ActionListener接口总结:

Struts粒度粗,简化;

Tapestry/JSF细,灵活。

视图跳转对比,Struts:

URL使用html:

link的page实现,page的值需要对照配置文件的path命名,与组件Action耦合。

URL名称就是组件名称,不涉及目录路径,不需在配置文件人为寻找。

URL值也需要在配置文件中查找,但是与组件分离解耦。

Struts/JSF缺点;

大量动态链接如工作流等使用Tapestry.,业务组件模型,DomainModel使用四色图等分析方法得出,通过UML类图来表达,反映的是业务需求,和具体项目有关,每个项目不同的就是域模型不同。

ComponentModel是计算机概念,代表业务需求的DomainModel需要计算机软件运行环境支撑,从而组成一个完整的信息系统。

组件模型具体实现,

(1)功能性组件(ComponentModel)实施功能操作行为的类,重点集中在类的方法上。

(2)数据性组件(DomainModel)包含属性、数据(Property)的JavaBeans,重点在类的属性上,类的方法是setXXX()或getXXX()。

服务Service概念,源于WebService概念,SOA将之深入。

定义:

专为外部系统或客户端调用的功能方法业务层中有两种类:

1.一些功能类是供表现层客户端调用,这些功能类为Services,如EJB的SessionBean2.一些功能类只提供业务层本层内部访问调用,称为通常Operations,业务服务的调用,表现层是业务层客户端,表现层中嵌入(耦合)了业务层的调用代码。

action调用代码两行:

1.创建业务层业务功能类代码,将类变成对象:

BusinessIFbi=container.get(“b”);

2.调用业务功能对象的方法bi.xxxx();

真正目的是调用业务功能对象方法,是第二句。

第二句只和接口有关,和具体业务层功能类无关,已经与业务层解耦(面向接口编程)。

目标:

去除多余的第一行:

如何优化对象创建。

对象发现创建的几种模式,工厂和单态模式:

早期Jive等软件实现,方便简单,存在性能陷阱。

Command模式:

SUN的J2EE案例JPetstoreJNDI:

适合分布式多台服务器运行环境,是EJB创建的最原始方式。

Ioc(又称依赖性注射):

2003年以后兴起的流行的新模式,是JNDI的一种变种,适合POJO和EJB。

Service调用:

工厂单态模式,优点:

形成客户端单一访问业务逻辑层入口,便于增加过滤器(?

)。

缺点:

使用一个总入口会造成过多代码耦合在一个类中,类似滥用Facade模式的后果,Service调用:

Command模式,将所有的服务都展示给客户端,客户端可以通过特定命令形式直接指定调用后台众多Service中任何一种突破了工厂模式单一入口的缺点,但是带来的缺点是易用性不够缺点:

难以形成框架,易用性不够。

EJB的JNDI,优点:

支持集群分布式环境,带来强可伸缩性。

只对EJB有效,客户端调用业务层实现代码较多;

无法非常自由地为所有Service动态增加新的Filter之类新功能,只能限定在EJB标准规定的几个功能:

事务和安全等。

Ioc模式,具备前两种调用模式的优点,克服其缺点,实现调用关系的最大解耦。

Ioc与AOP的结合使用,可以将通用组件和业务组件很好地协调在一起运行,提供优雅的解决方案。

需要第三方的Ioc容器组件。

业务层组件的组织路线,以IBMBEASUN等工业界软件厂商为主导的EJB标准,将服务强化成SessionBean,诞生相对Web容器的EJB容器。

以开源社区为主导的POJO框架,倡导自主实现,Ioc/AOP是其特征。

两者区别联系:

前者是框架+独立容器;

后者是框架+微容器。

J2EE架构组件实现路线比较,业务层组件实现路线比较,EJB路线:

优点:

业界标准,可以有多种产品选择。

因为分布式组件导致复杂、难于使用解决缺点方式:

现在:

提供可视化EJB开发工具;

EJB3吸收POJO优点。

EJB容器代表产品:

WeblogicWebsphereJBoss,J2EE架构组件实现路线比较,POJO路线优点:

可以自己干预定制通用功能实现,即实现透明操作。

目前无标准,严重依赖某个框架产品;

需要开发通用功能的高手。

解决缺点方式:

通过开源推广,成为事实上标准。

AOP代表:

Spring框架/Jdon框架,Spring特点,Spring特点,AOP:

可以指定在执行任何Service组件之前或之后执行一个通用功能,粒度最细,灵活度高,运行时组件装配。

Ioc:

解决了对象依赖,将依赖配置在XML,在运行时,将依赖注射。

广泛开源项目,整合Hibernate,提供一个完整J2EEAPI。

Jdon框架特点,Ioc:

依赖无需配置,自动寻找autowiring.AOP:

可以为所有Service之前或之后运行通用功能。

提供模型的CRUD流程配置自动化实现,以及批量查询缓存以及自动分页显示。

同类组件框架比较,设计模式在业务层中的应用,简单系统只有DomainObject和Service;

在复杂的系统中,将围绕Service产生很多辅助运算的JavaBeans,数量有可能非常多,使用设计模式组织组件之间的关系.GoF设计模式中的结构模式解决:

如何设计新的组件对象?

如何组织已有的组件关系?

业务组件,多个类组合在一起实现一定功能,称为组件(Component)。

多个类组合关系使用设计模式实现,是一种松散的类关系,容易分离,因此,组件是可组装,如同积木。

组件最大程度提高了复用性,提高大型项目的生产效率。

传统业务组件缺点,组件概念提出虽然解决了编程时软件组合问题,但是灵活性不够。

组件组合不但是编程时灵活组装,而且要求运行时可灵活组装,这样提高软件灵活性。

传统组件运行顺序:

编程顺序=运行顺序,组件之间运行顺序按照编程时确定的代码调用顺序。

失去灵活性,不能根据实际需求动态配置运行。

动态组件,动态组件定义:

业务组件之间的关系是在运行时指定的,而不是在编程时确定。

动态组件通过XML配置实现运行顺序调配,减少编码嵌入过程,大大提高软件生产效率。

动态组件是可插拔的Plug-in,可根据需求新增或更换新的组件功能。

动态组件:

过滤器,过滤器实现:

代理模式、Decoraotr模式、Chain模式以及AOP拦截器。

多个过滤器组成过滤器链,ServletFilter以及JiveJdon帖子显示过滤。

Decorator与AOP拦截器的相同与区别;

选择使用要点在于被过滤者粒度范围。

替代IfElse,使用过滤器实现动态Plug-in设计。

替代ifelse。

业务层动态组件架构,业务壳Shell设计,业务层包括几个主要功能:

业务核心;

Model缓存;

权限验证等等如何能够松耦合实现?

多个Decorator和Proxy模式就组合成一个过滤器链,整个过滤器链需要有一个薄容器管理,这就是壳Shell。

Shell特点:

处于业务层最外面,前面和拦截器和表现层接壤;

后面和缓存和数据库相接。

动态组件实现之一:

ACL,Web资源,主要是以WebURL为特征,对Web资源的Jsp/Servlet图片等目录下全部资源实现授权访问。

组件资源,同一个组件的不同方法实现对资源进行不同性质的操作,每种操作方法都需

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1