《全国中小学教育技术装备网络管理系统》研发技术报告(三)
北京博地亚科技发展有限公司技术部
三、系统构架与分层设计
3.1 总体技术构架
软件系统的构架犹如建筑设计构架一样,是科学与艺术的结合更是实际经验的不断总结。构架的优劣从根本上决定了软件产品的稳定性、扩展性、柔韧性、有效性,所以软件系统的总体技术构架就如骨架是支持任何系统的基础。以下简要介绍一下构架的基本概念。
构架(Architecture,愿意为建筑学设计艺术与科学): 在RUP中的定义:软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互;构架是系统在其所处环境中的最高层次的概念。软件系统的构架是通过接口交互的重要构件(在特定时间点)的组织或结构,这些构件又由一些更小的构件和接口组成。构架的描述方式:“4+1”视图(用例视图、设计视图、实现视图、过程视图、配置视图)是一个被广为使用的构架描述的模型。
层(layer):对模型中同一抽象层次上的包进行分组的一种特定方式。通过分层,从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。(层是对构架的横向划分,分区是对构架的纵向划分)。系统分层的几种常用方法:
1) 常用三层服务:用户层、业务逻辑层、数据层;
2) 多层结构的技术组成模型:表现层、中间层、数据层;
3) RUP典型分层方法:应用层、专业业务层、中间件层、系统软件层;
4) 基于J2EE的B/S模式构:表现View层、业务逻辑层、服务接口层、数据持久层;
结构:软件构架是多种结构的体现,结构是系统构架从不同角度观察所产生的视图。就像建筑物的结构会随着观察动机和出发点的不同而有多种含义一样,软件构架也表现为多种结构。常见的软件结构有:模块结构、逻辑或概念结构、进程或协调结构、物理结构、使用结构、调用结构、数据流、控制流、类结构等等。
以下就SOA(面向服务的构架)技术、基于J2EE分层的表现层框架、业务逻辑层框架、数据持久层框架技术分别予以简要分析和说明,然后给出本系统基于SOA面向服务的构架和多层体系结构。
1 SOA:面向服务的构架(Service-Oriented Architecture)随着互联网的飞速发展和信息技术为基础的全球一体化的不断进展,世界正在变得越来越小,网络正在改变着人民的生活并提供着越来越多便捷的、多样的服务,但同时服务提供商的服务却变得越来越庞大,客户要求也日趋个性化、多样化和复杂化。传统的面向数据、对象为中心的体系构架面对繁杂的业务逻辑、海量数据处理和异构系统集成日益呈现出越来越多的问题,其固有的弊端和局限性限制了业务实现的松耦合、扩展性、柔韧性、自动化、高效率和低成本,在这种情况下面向服务的构架设计呼之欲出,粉墨登场。 SOA(英文Service-Oriented Architecture),即面向服务架构的缩写。简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。本质上说,SOA体现的是一种新的系统架构,新的构架理念。SOA一切以“服务”为中心,完全抛弃了具体的编程的技术、环境、平台等因素的限制,使得开发企业能有效利用原有的系统和数据,更易于集成和管理业务系统的复杂性并显著地减少系统开发和集成的成本。以下给出本系统基于SOA的面向服务的体系结构构架图:
如上图所示,系统的整体构架大致可以划分为学校端、区县端、省市端以及客户服务中心端四个松散耦合的子系统。整个系统构架于SOA基础上(用WEB SERVICE技术实现SOA构架),各个子系统之间的数据传输与交换是通过基于XML的Web Service服务来实现的。各系统互不干扰、互相独立又互相协作,SOA技术使得整个体系结构更具扩展性、灵活性、平台无关性和柔韧性。SOA解决了本系统的整体体系构架,那么接下来我们简要分析一下实现系统的整体分层结构和相关的框架支持技术。
3.2基于J2EE的多层结构设计
高质量的J2EE/Java EE系统标准实际就是OO设计的标准,松耦合是OO设计的主要追求目标之一,那么无疑解耦性成为衡量J2EE/JEE质量的首要标准。实际选择中,还需要兼顾可伸缩性/性能/开发效率等方面综合考虑。典型的J2EE/Java EE至少划分三个层次:表现层/业务逻辑组件层/持久层:1)表现层英文是Presentation Layer,是实现显示功能的,这部分一般使用B/S结构来完成,当然你也可以使用专门远程客户端来实现;2)业务逻辑层因为是由大量组件(Components)组成的,也可称为组件层,组件从不同角度又可分为各种类型,然后又有不同的流派,目前占主要位置的是Model+Service,模型加服务,所以这一层又称为业务服务层Business Service;也有称为Model业务层;3)持久层是负责对象持久化也就是数据库操作的层次(英文Persistence Layer)。这三个层次的实现技术现在是分别独立发展,高歌猛进。下文就各种层中的框架技术的优缺点和使用的环境、时机,作一下分析,以便通过对各层分析对比可以导出系统的总体分层结构!
2.1表现层框架
表现层主要的功能和任务是复杂与客户的GUI页面交互,请求的提交和应答。表现层技术框架比较成熟的是基于MVC模式的STRUTS、WebWork、JSF等组件技术。借用MVC设计思想,实现显示(VIEW)、业务处理(MODEL)、控制(CONTROLLER)三层分离,独立实现,减少模块的关联,实现高内聚。MVC三层结构如下图:
典型的,表现层业务逻辑流程大致可以分为:客户(Client)通过GUI页面发出业务请求->STRUTS控制层获取客户请求,调用->Request Processor处理客户情况->ACTION获取客户提交表单并调用业务逻辑接口?业务代理处理业务逻辑->处理结果返回给ACTION->通过STRUTS控制层返回客户页面->View客户端显示请求结果。具体处理序列如下图:
MVC模式的优点:
(1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。
(2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。
(3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。
(4) 层次清晰,实现了业务逻辑与视图的分离,加速开发速度,降低系统复杂度和成本。
2.2业务逻辑层框架 业务逻辑层是整个系统的核心,它是整个系统的业务(领域)的逻辑计算和处理中心,是表现层业务服务的提供者和数据持久层功能的使用者。业务逻辑层框架的构建应该考虑其可伸缩性、灵活性、定制性、透明性、快速构建性等指标。现在主流的开源业务组件框架主要有EJB2/EJB3、Spring Framework 、Jdon Framework:
通过对以上组件框架技术的分析,Spring Framework自从推出以来使用非常广泛,备受推崇。
参考上图框架结构分析:Spring框架包含许多特性,并被很好地组织如上图所示的七个模块中:
Core 封装包是框架的最基础部分,提供IoC和依赖注入特性。
构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。
DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。
ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。
Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。
Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。
Spring中的 MVC 封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种 清晰的 分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。
2.3持久层框架
数据持久层位于领域层和基础架构层之间。由于对象范例和关系范例这两大领域之间存在“阻抗不匹配”,所以把数据持久层单独作为J2EE体系的一个层提出来的原因就是能够在对象-关系数据库之间提供一个成功的企业级映射解决方案,尽最大可能弥补这两种范例之间的差异。
数据持久层的实现技术主要有:1、JDBC 许多开发者用JDBC进行数据库程序的开发。这种方式很多情况下都使用DAO模式,采用SQL进行查询。虽然用此方式可以使应用程序代码与具体的数据库厂商和数据库位置无关,不过JDBC是低级别的数据库访问方式,JDBC并不支持面向对象的数据库表示。JDBC数据库表示完全围绕关系数据库模型。在大型应用程序的DAO中书写这样的代码,维护量是非常大的。2、EJB 在J2EE的规范中,为EJB定义了两种持久化的解决方案:一种是BMP,另一种是CMP。其中CMP不需要将SQL语句加入到代码中。目前,在采用J2EE的应用中,EJB CMP方式得到了广泛应用。更加引人注意的是,随着EJB规范的发展,CMP也包含了一些高级关系的内容。但是,CMP的使用比较复杂,对很多开发人员来说比较难以掌握。而且,不是在所有的情况下都适合在系统中采用EJB,而且想要非常清楚的了解EJB规范也是非常费时的。在用EJB编码前,先要让专家理解API,然后需要了解每一个容器部署时所要关注的技术。此外,许多情况下商用容器的性能和支持也不是很好。3、Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库, Hibernate可以大大减少操作数据库的工作量。 另外Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用Hibernate QL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本Hibernate可以和多种Web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。
通过以上持久层技术的对比分析,可以总结:Hibernate是一个功能强大,可以有效地进行数据库数据到业务对象的O/R映射方案。Hibernate推动了基于普通Java对象模型,用于映射底层数据结构的持久对象的开发,通过将持久层的生成自动扩展到一个更大的范围,Hibernate 使开发人员专心实现业务逻辑而不用分心于繁琐的数据库方面的逻辑,同时提供了更加合理的模块划分的方法,可以大大减少操作数据库的工作量,节约开发时间和成本。
2.4系统的总体分层结构图
通过对系统的层次拆分以及对各层应用框架技术的对比分析,可以归纳总结出本系统基于J2EE的多层结构,如下图示:
参考上述分层结构图,系统在表现层采用了基于MVC构架的STRUTS框架,在业务逻辑层采用了时下比较流行的Spring技术框架,在数据持久层采用了对象关系映射框架Hibernate。从整体分层结构来看各层层次分明、责职清晰,为构建扩展性强、灵活度高、复用性好的系统提供了实现基础。
至此,本文介绍和分析了基于SOA面向服务的体系构架和基于J2EE的整体分层结构技术,从整体业务模型到整体构架、分层设计都给出了解决问题的方法途径。接下来的篇幅本文将着重介绍实现系统的具体技术流程和算法设计。
架构 防腐层指的是什么 什么叫构架层
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java Stream并行流 如何指定线程池
Python 在程序并行化方面多少有些声名狼藉。撇开技术上的问题,例如线程的实现和 GIL,我觉得错误的教学指导才是主要问题。常见的经典 Python 多线程、多进程教程多显得偏"重"。而且往往隔靴搔痒,没有深入探讨日常工作中最有用的内容。传统的例子简单搜索下"Python 多线程教程",不难发现几乎所有的教程都给出涉及类和队列的例子:import osimport PILfrom multipr
java扫雷代码简单实现 opengl实现三维动画简单代码 python join函数 python 多线程并行