280 likes | 391 Views
电子商务技术解决方案 Java Command Framework. —— 成都 XX 科技有限公司. 1. 框架背景介绍. 2. 相关技术介绍. 3. 框架分析和思路. 4. 5. 系统介绍和代码展示. Q&A. Agenda. 1. 框架背景介绍. 2. 相关技术介绍. 3. 框架分析和思路. 4. 系统介绍和代码展示. 5. Q&A. JCF. 1 、框架背景介绍. 框架背景介绍. 本框架简称 JCF 本 JCF 架构参考商务领航项目原有 JCF 实现 化简原有 JCF 框架 EJB 调用的难度 规范测试流程
E N D
电子商务技术解决方案Java Command Framework ——成都XX科技有限公司
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 5 系统介绍和代码展示 Q&A Agenda
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 系统介绍和代码展示 5 Q&A JCF 1、框架背景介绍
框架背景介绍 • 本框架简称JCF • 本JCF架构参考商务领航项目原有JCF实现 • 化简原有JCF框架EJB调用的难度 • 规范测试流程 • 灵活的事务处理和异常处理方法 • 适用于横向切分的项目开发模式
解决的问题 Aim:设计出高水平、高质量的软件出来。 How:怎样是高水平、高质量的软件? 它应当是易于维护、易于适应变更、可重用性好的一个系统。如何做到这一点呢? Answer:低耦合、 高内聚。 低耦合就是软件在构造的时候,各个模块、各个功能、各个类都不会过度依赖于它周围的环境。只有这样,才能使我们的模块(功能、类)在周围发生变更时不受影响,做到易于维护和易于适应变更。正因为如此,也使它更易于重用到其它功能类似的环境中,提高了重用性。
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 系统介绍和代码展示 5 Q&A JCF 2、相关技术介绍 电子商务
系统关键技术 Struts Spring MVC Spring Hibernate • 表示层 • 业务逻辑层 • 数据持久层 Java Command Framework
Spring Ioc • Inversion of Control,即反转模式,著名的好莱坞理论:你呆着别动,到时我会找你。 • 也称为Dependency Injection模式,将依赖关系先剥离,然后在适当时候再注射进入。 • IoC模式实现了调用者和被调用者之间关系在某处完全分离,目前解耦程度最高的模式。
Spring Aop • Authentication 权限 • Caching 缓存 • Context passing 内容传递 • Error handling 错误处理 • Lazy loading 懒加载 • Debugging 调试 • logging, tracing, profiling and monitoring 记录跟踪 • Performance optimization 性能优化 • Persistence 持久化 • Resource pooling 资源池 • Synchronization 同步 • Transactions 事务
Spring 抽象服务 • 支持JDBC • Hibernate • JDO • Ibatis • 远程调用 • Webservice • EJB • Mail • Spring MVC 其中对Hibernate的支持是一大亮点。
Hibernate 符合Java习惯的关系数据库持久化 JDBCHibernate 提供了从Java 类到数据表的映射和数据查询、恢复等机制,实现数据层对象的持久性. 相对于使用JDBC 和SQL 来手工操作数据库,使用Hibernate ,可以大大减少操作数据库的工作量。 • QBC • HQL • JDBC
Struts • 第一个基于JSP Model 2的MVC框架 • 大量应用采用Struts最为开发表示层的工具 • 拥有大量的Struts开发人员 • 利用Spring扩展Struts的功能
引入Spring的好处 • 极大的提高系统了可测试性,使用本地Datasource不用启动容器就进行测试,可以实现测试先行(TDD),部署到测试或者生产环境可以换用容器管理的Datasource 。 • 有效的减少了代码量,不用写try、catch和ServiceLocator、Singleton模式等,提高了开发效率。 • 拥有比EJB的CMT更好的声明式事务支持。 • 同时支持EJB和POJO两种调用模式,符合公司原来的开发习惯。 • Dao( Hibernate )用Spring来管理。 • Command交由Spring来管理,利用Spring AOP可以为Command实现安全和事务等服务,Command只关注于业务流程本身。
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 系统介绍和代码展示 5 Q&A JCF 3、框架分析和思路
J2EE经典的5层架构 客户端 表示层 业务逻辑层 数据持久层 DB 针对以上几个层次有相应的解决方案: Jsp(struts)+javabean(servlet) Jsp(struts)+sessionbean+eneitybean Jsp(struts)+sessionbean+hibernate Jsp(struts)+spring+hibernate …………………
方案点评 • 第一个解决方案针对一些小型的软件还可以应付,项目大的话运行效率和开发效率都会跟不上。第二个是经典的EJB架构,人称重量级的架构。EJB将企业级应用的事务安全都考虑在内了,但是这种框架配置文件复杂,调试困难,开发效率不行,运行效率也备受争议。尤其是entitybean是被批评最多的,所以在第三种架构当中将entity换成hibernate。第四种是人称轻量级的开发框架,也是时下最流行的一种框架。本文也是主要针对这个框架来说事的,该框架组合用struts实现表现层,用spring实现逻辑控制层,用hibernate实现数据持久层。以下提出我的若干想法: • 无论采用怎么样的框架都是对J2EE经典分层模型的一个实现,就看谁更快,更好。 • J2EE各个层次的解耦不是依赖于特定的框架的,将设计模式融入到项目中才能很好的将各个层次很好的分开来,并且要基于接口的编程。 • 不同的情况下采用不同的框架。没有最好的框架,最好做到框架的可替换性。 • 复用最好定在组件级别的复用,而不是代码级别的复用。
开发模式 现在公司采用的开发模式一般有2种: 1、按功能垂直划分,每个开发人员负责某个功能点的包括表示层,业务逻辑层,数据持久层的开发,可能还要包括美工,DBA部分的工作。 2、按J2EE分层来划分,表示层由某些开发人员开发,业务逻辑层由其它的开发人员开发,数据持久层又是另外一批人来做。 开发模式1的优缺点: 优点:功能模块划分清晰,责任明确。是你做的功能点就是你做的,逃不掉的。各个开发人员之间的交互较少。 缺点:各个方面都要做,对开发人员的要求比较高,项目大了可能就没有办法采用这种开发模式。 开发模式2的优缺点: 优点:适合大型软件开发,对开发人员要求低。每个开发人员都是一个螺丝钉,最终组装出一个优秀的软件。 缺点:开发人员之间的交流成本增大,系统架构和项目管理显得很关键。
要求 要制定一个通用的解决方案,就要结合EJB和Spring的强项。具体要求如下: 1、要能将各个模块很好的解耦,J2EE的各个层次之间耦合性小,使得各个层次的框架可替换。 2、能够快速开发和调试,应付常见的需求变更等。 3、复用性高,并且能对各个功能点进行编排和组合。 4、通用性好,可以不做修改或者修改很少就可以在不同的服务器上运行。
方案 • 在表示层和业务逻辑层之间引入delegate和sessionfaçade模式,能很好的将表示层和业务逻辑层进行解耦。 • 在业务逻辑层和数据持久层之间引入dao模式,提供一个baseDao的接口,dao的实现类要实现这些基本的接口。 • 构建一个灵活可靠的业务逻辑层,类似工作的思想,一个流程中的活动能相互编排和组合。 • 企业应用的安全、事务和异常处理等要抽取为系统服务,各个层的代码只是关心各自的业务逻辑,各个层次的异常不会相互影响。 • 引入Spring,运行是来决定各个bean的关系。来实现各个层次的解耦。前台的struts、后台的hibernate都可以被换掉。 • 数据实现统一管理,业务逻辑层能为多个客户端(表示层)提供服务。只要涉及数据库操作的都要通过业务逻辑层来操纵数据持久层来实现。
参考SOA的思想 面向服务的架构(SOA)是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行标准封装并在异构环境、异构技术下进行分布式部署、组合、使用和互操作。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
跟SOA的对应关系 服务提供者 service provider :processor 服务调用者 service comsumer :client(junit testcase/struts action/webservice) 服务描述者 service broker : delegate接口 服务编排 :commond组合
JCF的主要组件类型 Command:服务的提供者,实现Component接口。 Delegate:服务的入口,继承AbstractBizDelegate抽象类,分为Pojodelegate和Ejbdelegate,可以调用本地的接口或者远程的接口。 Processor:服务的装配器,实现BaseProcessor接口。Sequenceprocessor,Runbyresultprocessor等,实现对内部command的运行时调配。 ErrorHandler:错误处理者,实现ErrorHandler接口,分为global、processor、command3个级别的ErrorHandler,处理不同的Exception并按需要返回不同的Errorcode。
Command的粒度 每个Command完成单独一个事情。 最基本的流程是按顺序执行command,在整个process过程中共享同一个request和response。
processor的实现 Service Provider Service Consumer Service Interfaces 调用本地服务 调用远程服务 Integration middleware processor command
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 系统介绍和代码展示 5 Q&A JCF 4、系统介绍和代码展示
1 框架背景介绍 2 相关技术介绍 3 框架分析和思路 4 系统介绍和代码展示 5 Q&A JCF 5、Q&A 联系人:Newway 电话 :270158613 Msn :leo3877@hotmail.com 如有疑问,可在现场解答或者线下联系,谢谢。