本文作者:C/S框架网, *** 原创文档 *** 转载请注明出处!
适用版本:CSFramework 高级版3.x、企业版4.x、旗舰版5.x
三层逻辑架构 (3-Tier Logic Architecture)
C/S系统快速开发平台采用三层逻辑架构(3-Tier Architecture),由界面层(UI-User Interface Layer)、业务逻辑层(BLL-Business Logic Layer),数据访问层(DAL-Data Access Layer)三层组成。在软件体系架构设计中,分层次是最常见也是最重要的一种设计思路,目的是实现“高内聚,低耦合”设计思想。
以下是三层逻辑架构图:
所谓三层逻辑架构,是在客户端与数据库之间加入一个“中间层”,介于界面层与数据层中间部分的逻辑处理。通常用于处理界面的数据,如数据采集、数据合法性检验、基本数据运算,或界面组件生成、组件状态管理等。基于处理过程封装而成的中间层称为业务逻辑层(BLL - Business Logic Layer),业务逻辑层没有严格定义和规范,采用三层结构设计符合高内聚,低耦合设计理念,也是研发软件产品最常见的设计方式一。
三层逻辑架构不是指物理上的三层,比如三台联网的机器不是三层逻辑结构或三层体系架构,或者支持B/S应用的才是三层体系结构,所以定义和概念要区分清楚。三层是指逻辑上的三层,即把这三个逻辑层封装在一个软件项目内,是一个整体,缺一不可。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层处理,通常情况下,客户端不直接与数据库进行交互,而是通过中间层与数据库进行交互。
C/S系统开发框架基于三层架构的扩展应用
C/S系统开发框架基于标准三层架构扩展连接策略层(后台连接策略)共四层逻辑,支持以下两种连接模式:
1.直连模式(ADO-Direct)
直连模式是指标准三层架构的数据传递方式,业务逻辑层与数据访问层封装在同一个软件架构内,具有高内聚,低耦合的设计特征,数据流向:UI->BLL->DAL->Database,通常适用于局域网或直接访问数据库的软件系统。
2.WCF连接模式
WCF连接模式是指客户端跨地区、分布式远程访问WCF服务器,业务逻辑层通过调用远程WCF服务器提供的接口间接调用数据访问层,数据流向: UI->BLL->WCF->DAL->Database。介于业务逻辑层与数据访问层的“中间层“称为WCF层。 采用WCF连接模式的软件系统是真正意义的C/S系统,分为客户端-Client与服务端-Server,客户端封装界面层以及业务逻辑层,服务端封装WCF层以及数据访问层。可通过配套的SQLConnector.exe工具配置两种连接模式。
C/S系统快速开发框架体系架构图
C/S系统快速开发框架继承标准三层架构设计理念与核心设计思想,集成大量的通用开发包以及工具实用类,并提供丰富的例子,借助技术文档、网站资源、演示源码以及在线技术指导,用户能快速投入研发软件项目,配套的代码生成器作为快速开发核心工具,内置向导功能快速生成界面、业务层、数据层、模型以及报表等源代码,为快速开发能力提供可靠保障。经过十年的产品迭代升级,开发框架技术成熟、性能稳定、产出效率高,先后为2000多位用户提供技术指导及培训服务。
下面针对C/S系统快速开发框架体系架构进行详细阐述:
用户请求:用户操作界面的功能执行具体的动作,如点击【查询】按钮发起查询请求。
界面层:C/S结构的系统是以WINFORM方式表示,B/S结构是以WEB方式表示,如aspx页面。若业务逻辑层提供强大的扩展性,无论界面层如何定义和更改,业务逻辑层都能够提供相应的服务。
业务逻辑层: 主要是针对具体业务操作和数据的处理,如果说数据层是积木,那业务层就是对这些积木要搭建何种效果,要制定哪些过程和方法,在搭建过程相应的数据处理。业务逻辑层作为三层结构的“中间层”,通常用于处理界面的数据,如数据采集、数据合法性检验、基本数据运算等,或界面组件生成、组件状态管理,或制定处理业务需求流程和方法等。
数据访问层: 主要是针对数据库的操作,或者针对用于数据存储的文件操作,而不是处理数据本身。数据访问层为业务逻辑层或界面层提供数据服务。
WCF层(服务端连接策略): C/S系统开发框架支持两种连接访问后台数据的方式: ADO-Direct直连模式以及WCF连接模式。 这两种方式分别是两种行为不同的算法,通过策略模式(Strategy Pattern)实现多个不同的行为或算法。 策略模式的定义:一个类的行为或其算法可以在运行时更改,这种类型的设计模式属于行为型模式。策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,算法的变化不会影响到使用算法的用户。
策略模式UML图。
C/S系统开发框架策略模式应用-客户管理。
实现原理: 客户管理的业务逻辑层BLL(bllCustomer) 定义了策略接口IBridge_Customer的变量_MyBridge。 在实例化BLL时,同时根据用户配置的参数选择实例化一个策略接口_MyBridge。假设用户发起查询请求,界面层调用BLL.SearchBy方法,而BLL.SearchBy方法调用策略接口_MyBridge.SearchBy方法,因此业务逻辑层并不关心具体的算法与实现,而是与策略接口形成高内聚协作方式,通过策略接口设计模式有效将应用场景与具体算法解耦,这种机制使程序框架设计更灵活更具有扩展性。
直连模式: 直连模式是指标准三层架构,通常适用于局域网或直接访问数据库的软件系统,详情参考上文,不再赘述。
WCF层: WCF层包含两个逻辑层:分别是【WCF客户端透明代理】以及【WCF服务器】。
****WCF架构通信流程图 (WCF Communication Flow)
ORM模型
ORM,既对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R Mapping),是一种编程技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM相当于中继数据,具体到产品上,例如ADO.NET Entity Framework。DLINQ中实体类的属性(Table)就算是一种中继数据。 C/S系统快速开发平台的ORM表现方式是将数据表结构映射为静态类或实体类,主要作用是给SQL命令生成器自动生成三种DbCommand组件,分别是InsertCommand,UpdateCommand,DeleteCommand。
SQL命令生成器(数据自动更新模型)
SQL命令生成器主要职责是构建三个DbCommand组件,用于实现后台数据自动更新。 实现原理:使用.NET反射机制,分析ORM类的属性定义的特性(Attribute),读取属性名称(字段名称)、属性类型、长度等信息,自动组合成SQL脚本并创建DbCommand组件,最后交给DbDataAdapter适配器更新数据,总体而言,C/S系统快速开发平台是借助ADO.NET强大的数据库组件实现后台数据自动更新的。
多数据库底层驱动
开发框架为用户提供多种数据库支持,目前已封装三种底层数据驱动,支持SqlServer、Oracle、MySql三种常用数据库。Multi-DB架构采用策略模式设计,定义IDatabase通用接口,并实现DatabaseMSSQL, DatabaseMySql,DatabaseOracle三个数据库操作类。引用的类库名称:CSframework.DB.dll。
Windows 服务承载的WCF服务器
WCF服务器通过Windows服务承载,是目前部署WCF服务最为流行的承载方式之一,具有容易部署,易于维护等特点。注册成为Windows服务的WCF服务是承载在应用程序域中,服务进程的生命周期由 Windows服务控制管理器 (SCM) 控制。此类型的宿主环境要求应用程序编写某些宿主代码,实现方式是从ServiceBase 类以及从 WCF 服务协定接口继承,实现成为 Windows 服务和 WCF 服务,然后创建 ServiceHost服务宿主,重写 OnStart() 方法启动WCF服务,重写的 OnStop() 方法关闭WCF服务。 最后实现从 Installer 继承的安装程序类,该安装程序允许 Installutil.exe 工具将程序安装为 Windows 服务。由Windows 服务宿主托管WCF方案是承载于 IIS 之外、长时间运行的 WCF 服务非常可靠的方案, 服务的生存期由操作系统控制, 运行过程中进程和AppDomain不会被回收,除非用户手动关闭服务。
Windows服务宿主承载WCF具有以下优点:
(1)、承载在IIS外、长时间运行的WCF服务
(2)、所有Windows版本支持
(3)、由操作系统控制服务进程的生存周期
Windows服务支持的传输协议:
(1)、HTTP
(2)、net.tcp
(3)、net.pipe
(4)、net.msmq
IIS服务器宿主承载WCF服务
在 IIS 上的 Web 服务开发长期以来一直是 ASP.NET 的领地。ASP.NET 1.0 发布后,Web 服务框架成为它的一部分。Microsoft 利用 ASP.NET HTTP 管道使 Web 服务在 Windows 平台上成为现实。遗憾的是,ASP.NET 和 Web 服务之间的这种紧密耦合在面向服务的世界中产生了几个限制,对 HTTP 的依赖性是主要原因。在不同宿主上运行 ASP.NET HTTP 管道很困难,因此很少采用这种方案。 WCF 服务采用了完全不同的途径来实现面向服务。WCF 的统一编程模型基于严格分层的模型,以分解面向 Web 的范例,并使服务模型和通道层与受支持的传输方式断开连接。此模型允许 WCF 支持几个不同的宿主,其中 IIS 是最重要的。
WebApi服务器
WebApi服务器是服务端软件快速开发框架,借助ASP.NET WebAPI底层架构的强大编程能力,封装成为可复用的以及可定制开发的服务端软件模板,提供通用的软件功能,为用户快速轻松构建基于HTTP协议以及支持多种客户端的服务端程序,如:APP、B/S、C/S、各种跨平台移动终端等。 C/S系统开发开发框架基于后台连接策略的可扩展性,通过BLL层连接WebApi服务器,该机制规范数据交互格式以字符串形式传输,如JOSN, XML或标准字符串等。实现思路是前端或后端统一数据格式标准,若采用JSON格式,在调用WebApi接口前,首先将请求数据转换成为JSON格式,后端接受到请求,将JSON数据还原,最后提交到数据库。
参考: WebApi开发框架C/S Framework WebApi V1.0 (标准版)
代码生成器
代码生成器作为C/S系统开发框架核心配套工具,该系统可以自动生成基于开发框架项目的三层架构代码和工程模块,生成器根据事先定义的物理表字段信息自动生成对应的组件,如:文本输入框、数据表格及界面,自动实现了数据操作的基础功能,如:添加、修改、删除、查询、数据合法性检查、ORM、BLL、DAL、Form等源码。将源码集成到解决方案,调试编译后即可运行。代码生成器使程序员避免大量机械式编程工作和重复劳动,将主要精力集中在核心业务逻辑开发。
数据库连接工具 (SQLConnector.exe)
作为C/S系统快速开发平台配套工具之一,用于建立系统的初始连接以及配置后台连接模式。该工具支持SqlServer/Oracle/MySql三种数据库类型。用户使用开发框架之前,首先要配置连接CSFrameworkXX_System系统数据库,目的是建立初始连接,读取业务账套数据库的配置信息(tb_DataSet表),方便用户在系统登陆界面选择登陆账套。
版本自动升级程序 (AutoUpgrader.exe)
C/S 系统版本自动升级软件V1.0 作为C/S系统快速开发平台配套工具之一,用于客户端自动升级程序版本。升级程序能够独立运行,也可以通过主程序调用。当用户启动升级程序,系统自动匹配客户端版本信息与服务器上的版本信息,通过比较版本号码,若服务器的版本高于客户端,则提示用户更新软件。
产品特点:
1.以升级包方式自动升级,
2.可发布执行命令或独立程序的升级包,
3.升级包管理和维护,
4.升级程序独立部署。
C/S系统快速开发平台采用ADO-Direct模式模拟数据提交流程
1. 用户请求:用户点击【保存】按钮发起请求。
2. 完成数据采集、数据验证等逻辑处理, 调用业务逻辑层的Update方法。
3. BLL层通过三层直连模式直接调用数据访问层的Update方法。
4. 在DAL层,数据自动更新程序分析ORM模型,通过SQLGenerator命令生成器构建三种DbCommand对象, 分别是Command, UpdateCommand以及DeleteCommand。
5. 将3个DbCommand对象分配给DbDataAdapter适配器,最后调用适配器的Update方法提交数据。
6. 返回True/False信息。
C/S系统快速开发平台采用WCF模式模拟完整请求的流程:
1. 用户请求:用户点击【保存】按钮发起请求。
2. 完成数据采集、数据验证等逻辑处理, 调用业务逻辑层的Update方法。
3. BLL层构造器实例化策略接口(WCF客户端代理类,如WCF_XXX),调用_MyBridge接口的Update方法。
4. 通过WCF客户端代理类创建WCF透明代理实例,调用代理实例的Update方法,将请求转发到后台服务器。
5. WCF服务器接受到请求,完成安全相关验证,调用数据访问层的Update方法正式提交数据。
6. 在DAL层,数据自动更新程序分析ORM模型,通过SQLGenerator命令生成器构建三种DbCommand对象, 分别是SelectCommand, UpdateCommand以及DeleteCommand。
7. 将3个DbCommand对象分配给DbDataAdapter适配器,最后调用适配器的Update方法提交数据。
8. 返回True/False信息。