`
lijun87
  • 浏览: 268360 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

系统构架与分层设计

阅读更多
《全国中小学教育技术装备网络管理系统》研发技术报告(三)

北京博地亚科技发展有限公司技术部

三、系统构架与分层设计

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开发环境中。一个良好的架构设计能够确保系统的稳定性、扩展性、柔韧性和有效性。本文主要探讨了系统架构的基本概念、分层设计以及面向服务的架构...

    系统应用分层架构图(可线上编辑)

    1、平台架构图,分层展示架构图:从访问层、前端UI、web层、业务层、数据存储等层次展示系统架构,设置权限控制与日志记录; 2、提供pdf版本和可线上编辑文件,若需要编辑,可根据readme操作,操作简单 3、压缩包中...

    软件架构设计分层模型和构图思考.docx

    架构思维的核心是定义问题,架构设计需要具备分层思维,通过架构分层可以更好地全面理解业务系统或功能实现。 架构分层模型有多种,例如云平台三层架构:资源-平台-应用,IaaS 层、PaaS 层、SaaS 层。资源层从物理...

    系统架构:复杂系统的产品设计与开发PPT.zip

    《系统架构:复杂系统的产品设计与开发》是2016年出版的一本关于系统架构设计的重要著作。这本书深入探讨了在构建大型、复杂系统时所面临的挑战和解决方案,为IT行业的专业人士提供了宝贵的指导。其PPT形式的资料集...

    系统架构设计师教程.pdf

    根据提供的信息,我们可以推断这份文档“系统架构设计师教程.pdf”是关于系统架构设计方面的教程。由于提供的部分内容仅包含重复的网址(www.TopSage.com),我们无法从中直接获取具体的教学内容。因此,我们将基于...

    基于模式的分层分布式系统架构的设计研究.pdf

    软件架构的设计与复用是提高软件开发效率和质量的关键所在,而模式的应用则是实现软件架构复用的有效途径。在设计分层分布式系统架构时,应当充分考虑系统的可扩展性、可用性和维护性,以实现对大型、复杂软件系统的...

    系统架构设计师真题与答案解析.zip

    1. 架构模式:系统架构设计中常用的设计模式,如分层架构、微服务架构、事件驱动架构等,以及它们在实际项目中的应用。 2. 可扩展性:设计能够随着业务增长而扩展的系统架构,包括水平扩展和垂直扩展的策略。 3. 高...

    系统架构设计师教程(第2版)-希赛版.pdf

    5. 系统架构风格:不同类型的系统有不同的架构风格,例如分层架构、微服务架构、事件驱动架构等。理解这些风格对于选择合适的架构模式至关重要。 6. 系统分析和建模技术:包括需求分析、数据流图、UML建模等。系统...

    系统架构设计师教程(第4版)pdf.zip

    6. **架构决策与评估**:系统架构设计不仅仅是技术实现,还包括一系列的决策过程。书中详细讲解了如何进行架构评估、权衡不同选项,并提供了决策制定的框架和方法。 7. **最佳实践与案例研究**:结合实际项目,本书...

    系统架构设计师教程-第4版

    《系统架构设计师教程-第4版》是一本深入探讨系统架构设计的专业教程,适用于准备进行系统架构设计学习或备考系统架构设计师资格认证的读者。本书全面涵盖了系统架构设计的基础理论、核心概念、最佳实践以及最新技术...

    系统架构师设计教程-杨春晖-计算机技术与软件技术资格考试指定书

    《系统架构师设计教程》是杨春晖编著的一本专为计算机技术与软件技术资格考试而准备的指导书籍。本书全面涵盖了系统架构师所需掌握的核心知识,旨在帮助读者理解和应用系统架构的基本原理、方法和技术,提升在实际...

    VS2010架构分层应用系统

    软件与服务外包学院由吉奈特工程小组负责开发该系统,小组成员经过详细的讨论和调研决定采取面向对象的分多层架构进行系统开发,采取SQl Server2008设计和管理数据库资源,采取VS实现分层架构和网络功能模块,开发...

    系统架构设计师教程_第5章_软件架构设计

    3. **分层设计**:通过层次结构组织系统,使得每一层只依赖其下一层,保持清晰的边界。 4. **可扩展性**:设计应易于添加新功能或修改现有功能,而不影响系统的其他部分。 5. **健壮性**:系统应能处理异常情况,...

    领域驱动设计(DDD):分层架构

    在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢? 在研究分层架构时,常通过...

    系统构架设计考虑

    4. 架构模式:架构模式是系统构架设计中的一种常见概念,是一种通用的架构设计方法。 5. 层:层是系统构架设计中的一种常见概念,是系统的逻辑结构。 二、系统分层方法 系统分层方法是系统构架设计中的一种常见...

    系统架构设计师-思维导图.pdf

    此外,软件架构与质量属性紧密相关,架构设计需要充分考虑到系统将如何支持质量属性,如性能、安全、可用性和可维护性等。架构评估是一个对现有或即将实现的架构进行检查、分析和改进的过程,它是确保架构设计质量和...

    系统架构方法 系统架构设计师

    本文将深入探讨“系统架构方法”这一主题,解析系统架构设计师的角色与职责,并详细介绍几种主流的系统架构设计方法论。 ### 一、系统架构概述 #### 1.1 定义 系统架构是指在计算机科学领域内,为了解决复杂系统的...

    系统架构设计师论文汇总

    系统架构设计师论文汇总是一份非常宝贵的资源,包含了38篇专为系统架构设计师准备的论文。这些论文不仅适合备考人员作为复习资料,还能够提供关于系统设计思路和方法的深入理解。通过对这些论文的研读,我们可以提炼...

    2023年11月份系统架构设计师论文范文.pdf

    作者提到了采用分层设计来提升软件的可修改性和可扩展性,同时通过关注点分离降低系统的复杂度,从而提高整体的可靠性。 【项目管理与演化式开发】 作者采用了演化式开发方法,即在项目进程中逐步完善系统。这涉及...

    系统架构设计师教程 软考高级

    在软件设计阶段,系统架构设计师需要关注模块化、分层设计、服务化等技术,以实现系统的可重用性和可维护性。此外,对于分布式系统,教程会讲解网络通信、负载均衡、故障恢复等关键技术。对于数据存储,可能涉及...

Global site tag (gtag.js) - Google Analytics