TOC
KINA

KINA-0

Start having fun with KINA right now!

系统架构设计理论与实践(3):层次式架构

层次架构

1 层次式体系结构概述

层次/分层架构是最通用的架构,常作为初始架构。层次架构【关注分离】,即每层只负责本层的工作

层次架构


2 表现层框架设计 ⭐️

MVC/MVP/MVVM要实现完整流程还需ORM,故严格讲仅属于模式。

2.1 MVC

MVC(Model-View-Controller)架构风格/模式的组成:

  1. Model】(模型):应用程序的主体部分。模型表示业务数据和业务逻辑一个模型通为多个视图提供数据。提高应用的可重用性。
    • 在J2EE体系结构中为EJB(Entity Bean、Session Bean等)
  2. View】(视图):用户看到并与之交互的界面。接收用户输入数据,向用户展示数据
    • 在J2EE体系结构中为JSP
  3. Controller】(控制器):用户界面与Model的接口。接受用户的输入,并调用模型和视图去完成用户的需求。
    • 在J2EE体系结构中为Servlet

MVC

优点:

  1. 允许多种用户界面的扩展
  2. 易于维护
  3. 易于构件功能强大的用户界面
  4. 增加应用的可拓展性、强壮性、灵活性

2.2 MVP

MVP(Model-View-Presenter)是MVC的变种,优点如下:

  • 模型与视图完全分离,可以修改视图而不影响模型。(做了严格分层;MVC并非严格分层)
  • 可以更高效地使用模型,因为所有交互都发生在【Presenter】内部
  • 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑
  • 若把逻辑放在Presenter中,则可脱离用户接口来测试这些逻辑(单元测试)

MVP

2.3 MVVM

MVVM(Model-View-ViewModel)风格中,View和Model的交互通过ViewModel来实现,也就是View和Model不能直接通信,两者的通信只能通过ViewModel来实现。ViewModel是MVVM的核心,通过DataBinding实现View与Model之间的双向绑定,其内容包括数据状态处理、数据绑定及数据转换。

MVVM


3 中间层框架设计

业务逻辑框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。在业务容器中,业务逻辑常按照Domain Model-Service-Contro思想来实现,其中:

  1. Domain Model:仅包含业务相关的属性的领域层业务对象。
  2. Service是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
  3. Control服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的。

3.1 组件设计

业务逻辑层组件分为接口实现类两个部分。接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个数据访问对象(Data Access Object,DAO)组件作为基线,从而实现对外提供系统的业务逻辑服务。

3.2 工作流设计

工作流管理联盟(Workflow Management Coalition,WFMC)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作已达到业务的整体目标。

如图,工作流参考模型:

工作流

3.3 实体设计

逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。可以使用具有复杂架构的数据构建,这种数据通常来自数据库中的多个相关表。业务逻辑层实体数据可以作为业务过程的部分I/O参数传递。业务逻辑层实体是可序列化的以保持他们的当前状态。


4 数据访问层框架设计

4.1 数据访问模式

  1. 在线访问
  2. Data Access Object
  3. Data Transfer Object
  4. 离线数据模式
  5. 对象/关系映射

4.2 工厂模式在数据访问层的应用

工厂设计模式是数据访问层中的主要使用方法。要实现工厂模式在数据数据访问层的应用,需要在实际开发过程中将这些数据库访问类再作一次封装。不仅可以达到上述目标,还可以减少操作数据库的步骤,减少代码编写量。

工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。可能会涉及对多种数据库的操作,因此需要先定义一个操纵数据库的接口,然后根据数据库的不同,由类工厂决定实例化哪个类。

4.3 ORM ⭐️

进行数据访问层设计时常用到ORM(Object Relational Mapping),建立对象与关系数据之间的映射,使得在具体操纵数据库时不再需要和复杂的SQL语句打交道,只需像平时操作对象一样操作即可。

映射关系表:

面向对象 关系数据库
类(Class) 数据库的表(Table)
对象(Object) 记录(Record,行数据)
对象的属性(Attribute) 字段(Field)

实现技术对比表:

维度 Hibernate MyBatis(iBatis)
简单对比 强大,复杂,间接,SQL无关 小巧,简单,直接,SQL相关
可移植性 好(不关心具体数据库) 差(根据数据库SQL编写)
复杂多表关联 不支持 支持

4.4 XML Schema

XML Schema用来描述XML文档合法结构、内容和限制,由XML 1.0自描述,并且使用了命名空间,有丰富的内嵌数据类型及其强大的数据结构定义功能,充分地改造了并且极大地扩展了DTD(Document Type Definition,定义传统描述XML文档结构和内容限制)的能力,将逐步替代DTD成为XML体系中正式的类型语言,同XML规范、Namespace规范一起成为XML体系的坚实基础。

4.5 事务处理设计

事务(Transaction)是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或一步也不执行,则称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,则称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从ISO/IEC所制定的ACID原则。

4.6 连接对象管理设计

对于共享资源,为了解决资源频繁分配、释放所造成的问题,可以使用资源池设计模式。把该模式应用到数据库连接管理领域,即建立一个数据库连接池,提供一套高效的连接分配、使用策略。建立连接池的第一步为建立静态连接池,其中静态是指池中的连接在系统初始化时即已分配好,并且不能够随意关闭。该静态连接池提供了一套可自定义的分配、释放策略。当客户请求数据库连接时,首先看连接池中是否有未分配出去的连接,若存在空闲连接则把连接分配给客户,并作相应处理。


5 数据架构规划与设计

5.1 数据库与类的设计融合

对类和类之间关系的正确识别是数据模型的关键所在。

要想将建模过程缩减为一个简单的、逐步进行的过程是不太可能的。从本质上讲,建模是一项艺术。对一个给定的复杂情况而言,不存在唯一正确的数据模型,然而却存在好的数据模型。一个企业或机构的某个数据模型可能会优于另一个数据模型,如何为一个特定的系统建立数据模型没有唯一的解决方案。

好模型的目标是将工程项目整个生存期内的花费减至最小,同时也会考虑到随时间推移系统可能发生的变化,因而设计时也要考虑能适应这些变化。因此,将目光集中在最大限度地降低开发费用上是一个错误。

5.2 数据库设计与XML设计融合

XML文档分为两类:

  1. 以数据为中心的文档。这种文档结构规则,内容同构,具有较少的混合内容和嵌套层次,人们只关心文档中的数据而并不关心数据元素的存放顺序。这种文档简称数据文档,常用来存储和传输Web数据

  2. 以文档为中心的文档。这种文档结构不规则,内容比较零散,具有较多的混合内容,并且元素之间的顺序是有关的。这种文档常用来在网页上发布描述性信息、产品性能介绍和E-mail信息等。

XML文档的存储方式:基于文件的存储方式、数据库存储方式。


6 物联网层次架构设计

物联网(Internet of Things,IoT)通过信息传感设备,按约定的协议,将任何物体与网络相连接,物体通过信息传播媒介进行信息交换和通信,以实现智能化识别、定位、跟踪、监管等功能。其结构从上往下依次为:

  1. 应用层:解决信息处理和人机交互问题
    • 例:应用服务、智能终端
    • 有时在应用层之后增加平台层(如操作系统、软件开发、设备管理平台、连接管理平台)
  2. 网络层:传递信息和处理信息
    • 例:网络通信标准/协议
  3. 感知层:解决数据获取问题
    • 例:传感器、芯片、通信模组

示例:

物联网

发表评论