java软件架构设计方案1设计思想该架构方案设计原理包括:分层架构思想、领域驱动设计思想(DDD)、面向对象分析与设计。采用多层(N-Layer)逻辑架构的实现方式对于降低系统开发的复杂度是非常必要的,并在设计、开发、测试、部署及维护等各个环节为应用系统带来高可用性、高延展性等正面效应。2设计优缺点2.1优点 2.1.1提高系统的可测试性多层(N-Layer)架构,层与层之间是低耦合的,增加各层的独立性,从而也提高了可测试性,这样开发出来的系统才更加健壮。2.1.2对解决方案的维护和管理变得更加简单层内高内聚、层间低耦合的结构,使得系统实现与分层组织方式变得非常灵活方便,维护和管理将非常直接,高效。2.1.3增加系统的可移植性(模板化)在企业软件开发中,许多模块都是可通用的,例如日志、异常、缓存、验证模块等等。通过分层,可以容易的分离出通用的模块,便于迅速应用到其他的项目,实现模板化。2.1.4数据库根据编码自动生成框架Hibernate技术优势,融入ORM框架,实现了从代码生成数据库的强大功能,在开发测试阶段数据库可以很容易应对业务的变化,从而大大提高了开发人员的效率。2.1.5增强系统的可伸缩性同样借助于分层的优势以及架构中各部分设计的高内聚性,可以各层就像独立的模块,互相独立,增删各个独立的模块,不会影响到其他的模块或层的功能,这样就增强了系统的可伸缩性。2.1.6实现编码自动化避免人为性能问题新框架采用Hibernate框架实现数据库访问的封装,日志、异常捕获以及AOP拦截等常用功能,减少重复模块编码量的同时,也避免了因人为因素导致的性能问题。2.2缺点 2.2.1需要非常熟悉业务领域知识在系统的整个开发过程中,需要对业务的非常熟悉才能正确完整的实现系统的业务逻辑,否则,就偏离的架构的核心——领域模型,从而导致项目重构甚至失败。2.2.2不适合过于简单的项目该架构本身就是为了应对复杂性而提出的,简单项目不需要采用领域驱动设计开发。3架构实现3.1整体架构说明 该架构使用JAVA技术实现。整体架构可能会在以后的逐步完善中有所改变。目前的系统架构图如下:表现层(PresentationLayer):该层的主要职责是通过用户界面向用户展示必要的数据信息,同时接收用户的反馈。服务层(ServiceLayer):该层提供对领域层业务的封装,通过网络或接口向上层(即表现层)暴露粗粒度的业务服务。领域模型层(DomainModelLayer):该层的主要职责是展现业务/领域逻辑、业务处理状态,以及实现业务规则,它同时也包含了领域对象的状态信息。这一层是整个应用程序的核心部分,它可以包含下面这些概念和内容:实体(Entities)值对象(ValueObjects)领域服务(DomainServices)仓储契约/接口(RepositoryContracts/Interfaces)基础结构层(InfrastructureLayer):该层为应用程序的数据存取提供服务,它可以是应用程序本身的持久化机制,也可以是外部系统提供的数据访问的WebService等。提供了能被其它各层访问的通用技术框架,比如异常捕获与处理、日志、认证、授权、验证、跟踪、监视、缓存等等。这些操作通常会横向散布在应用程序的各个层面,面向方面编程(AOP)关注的就是如何在不影响对象本身处理逻辑的基础上来实现这些横切的却又必不可少的功能点。3.2项目环境搭建 3.2.1先决条件该架构项目开发基于以下先决条件:MyEclipse8.6;Struts2,spring,Hibernate;ANT,Xdoclet;Oracle10g;3.2.2环境搭建1)包结构搭建,如图;2)配置Struts2+Spring+Hibernate:1.配置Struts2,首先添加struts2.0点击工程右键MyEclipseAddStrutsCapabilities,如图所示选择Struts2.1拦截所有.action请求。2.配置Spring,点击工程右键-MyEclipse-AddSpringCapabilities,添加相关的jia包,我这里添加了除JDO,IBATIS,OpenJPA,EclipseLink之外的所有包。点击Next,然后finish3.配置Hibernate,首先配置Database。点击MyEclipse右上角的MyEclipseDatabaseExplorer,如图:在左边的DBBrowser区域右键new一个DataBaseDriver准备工作完成以后继续向工程里添加Hibernate3.3。添加方法:右键点击工程MyEclipse-addhibernateCapabilities,如图:选择默认点击Next点击Next,如图:点击Next,选择刚才准备好的数据源,如图:点击Next.选择不需要创建SessionFactory.3)配置持久层Hibernate+ant+xdoclet:1.用xdoclet标签写java类2.再在每个属性的get方法上面添加对应的xdoclet标签,如图:4)配置hibernate.properties用于配置数据库连接,如图:5)build.xmlant的配置,如图:右击鼠标,选择“runas”---“ExternalToolsConfigurations”,选择Targets选项,如图:选中前两个选项,然后“run”,便会自动生成相应的Hbm配置文件和数据库。3.3技术应用 3.3.1数据库动态生成技术和ORM框架(EntityFramework)通过使用使用Hibernate+ant+xdoclet技术,从而实现hbm文件和数据库从代码生成,这大大提高了在开发阶段数据库应对业务变化的能力。同时采用ORM框架,可以隐藏数据访问的细节,使得与数据库交互变得简单易行,并且完全不用考虑具体的SQL语句,从而实现快速开发,也不会因开发人员的T-SQL水平而出现各种人为的性能问题。3.3.2面向方面编程AOP(PolicyInjection)使用Spring框架来实现AOP技术。通过利用AOP技术,分离出核心关注点和横切关注点。在实现了诸如日志、事务管理、权限控制等横切关注点的通用逻辑后,开发人员就可以专注于核心关注点,将精力投入到解决企业的商业逻辑上来。同时,这些封装好了的横切关注点提供的功能,可以昀大限度地复用于商业逻辑的各个部分,既不需要开发人员作特殊的编码,也不会因为修改横切关注点的功能而影响具体的业务功能。3.3.3实现依赖注入和IoC(Unity)使用Spring实现依赖注入(DependenceInjection/DI)机制。分层架构的设计,层与层之间是松散耦合的。“松散耦合”实际是指上层类不能具体依赖于下层,而应该依赖于下层提供的一个接口。这样,上层不能直接实例化下层中的类,而只持有接口,至于接口所指变量昀终究竟是哪一个类,则由依赖注入机制决定。3.4可能的技术应用及替代方案 3.4.1数据库访问部分采用ORM框架将由更多选择:jooq,hibernate,Ujorma等等;项目较小的情况,也可以使用jdbc直接进行数据访问。3.4.2可重用模块部分日志、异常及验证等可重用模块可采用java插件提供一致的功能,也可以根据每一模块采用一些技术框架,甚至自己开发。比如日志模块还可使用Log4j等。杨扬,王科2012-2-3