本文作者:C/S框架网,*** 原创文档 *** 转载请注明出处!
适用版本:CSFramework 高级版3.x、企业版4.x、旗舰版5.x
适用版本:CSFramework 高级版3.x、企业版4.x、旗舰版5.x
![C/S系统开发框架-旗舰版 v5.0 (Ultimate Edition)](http://www.csframework.com/images/3-tier.jpg)
三层逻辑架构 (3-Tier Logic Architecture)
C/S系统快速开发平台采用三层逻辑架构(3-Tier Architecture),由界面层(UI-User Interface Layer)、业务逻辑层(BLL-Business Logic Layer),数据访问层(DAL-Data Access Layer)三层组成。在软件体系架构设计中,分层次是最常见也是最重要的一种设计思路,目的是实现“高内聚,低耦合”设计思想。
![](http://www.csframework.com/images/item1.gif)
![C/S框架三层逻辑架构](http://www.csframework.com/images/cs-3-tie-001.jpg)
所谓三层逻辑架构,是在客户端与数据库之间加入一个“中间层”,介于界面层与数据层中间部分的逻辑处理。通常用于处理界面的数据,如数据采集、数据合法性检验、基本数据运算,或界面组件生成、组件状态管理等。基于处理过程封装而成的中间层称为业务逻辑层(BLL - Business Logic Layer),业务逻辑层没有严格定义和规范,采用三层结构设计符合高内聚,低耦合设计理念,也是研发软件产品最常见的设计方式一。
三层逻辑架构不是指物理上的三层,比如三台联网的机器不是三层逻辑结构或三层体系架构,或者支持B/S应用的才是三层体系结构,所以定义和概念要区分清楚。三层是指逻辑上的三层,即把这三个逻辑层封装在一个软件项目内,是一个整体,缺一不可。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层处理,通常情况下,客户端不直接与数据库进行交互,而是通过中间层与数据库进行交互。
C/S系统开发框架基于三层架构的扩展应用
![C/S框架三层逻辑架构](http://www.csframework.com/images/cs-3-tie-002.jpg)
C/S系统开发框架基于标准三层架构扩展连接策略层(后台连接策略)共四层逻辑,支持以下两种连接模式:
![](http://www.csframework.com/images/item1.gif)
直连模式是指标准三层架构的数据传递方式,业务逻辑层与数据访问层封装在同一个软件架构内,具有高内聚,低耦合的设计特征,数据流向:UI->BLL->DAL->Database,通常适用于局域网或直接访问数据库的软件系统。
![](http://www.csframework.com/images/item1.gif)
WCF连接模式是指客户端跨地区、分布式远程访问WCF服务器,业务逻辑层通过调用远程WCF服务器提供的接口间接调用数据访问层,数据流向: UI->BLL->WCF->DAL->Database。介于业务逻辑层与数据访问层的“中间层“称为WCF层。 采用WCF连接模式的软件系统是真正意义的C/S系统,分为客户端-Client与服务端-Server,客户端封装界面层以及业务逻辑层,服务端封装WCF层以及数据访问层。可通过配套的SQLConnector.exe工具配置两种连接模式。
C/S系统快速开发框架体系架构图
![C/S框架网|C/S系统快速开发框架体系架构图](http://www.csframework.com/images/v5.0%E6%9E%B6%E6%9E%84%E5%9B%BE.jpg)
C/S系统快速开发框架继承标准三层架构设计理念与核心设计思想,集成大量的通用开发包以及工具实用类,并提供丰富的例子,借助技术文档、网站资源、演示源码以及在线技术指导,用户能快速投入研发软件项目,配套的代码生成器作为快速开发核心工具,内置向导功能快速生成界面、业务层、数据层、模型以及报表等源代码,为快速开发能力提供可靠保障。经过十年的产品迭代升级,开发框架技术成熟、性能稳定、产出效率高,先后为2000多位用户提供技术指导及培训服务。
下面针对C/S系统快速开发框架体系架构进行详细阐述:
![](http://www.csframework.com/images/item1.gif)
![](http://www.csframework.com/images/item1.gif)
![](http://www.csframework.com/images/item1.gif)
![](http://www.csframework.com/images/item1.gif)
![](http://www.csframework.com/images/item1.gif)
![](http://www.csframework.com/images/item1.gif)
![C/S框架网|策略模式UML图。](http://www.csframework.com/images/cs-3-tie-003.png)
![C/S框架网|S系统开发框架策略模式应用UML。](http://www.csframework.com/images/item1.gif)
![C/S框架网|策略模式UML图。](http://www.csframework.com/images/cs-3-tie-004.png)
![](http://www.csframework.com/images/item1.gif)
![C/S框架网|S系统开发框架策略模式应用UML。](http://www.csframework.com/images/item1.gif)
![C/S框架网|S系统开发框架策略模式应用UML。](http://www.csframework.com/images/item1.gif)
![WCF两个逻辑层:WCF客户端透明代理,WCF服务器](http://www.csframework.com/images/cs-3-tie-005.png)
![](http://www.csframework.com/images/item1.gif)
![C/S框架网|WCF架构通信流程图 (WCF Communication Flow)](http://www.csframework.com/images/v5.0-wcf-art.png)
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命令生成器(数据自动更新模型)
![C/S框架网|SQL命令生成器(数据自动更新模型)](http://www.csframework.com/images/cs-3-tie-006.jpg)
SQL命令生成器主要职责是构建三个DbCommand组件,用于实现后台数据自动更新。 实现原理:使用.NET反射机制,分析ORM类的属性定义的特性(Attribute),读取属性名称(字段名称)、属性类型、长度等信息,自动组合成SQL脚本并创建DbCommand组件,最后交给DbDataAdapter适配器更新数据,总体而言,C/S系统快速开发平台是借助ADO.NET强大的数据库组件实现后台数据自动更新的。
多数据库底层驱动
![C/S框架网|多数据库底层驱动](http://www.csframework.com/images/v5.0-mdb.jpg)
开发框架为用户提供多种数据库支持,目前已封装三种底层数据驱动,支持SqlServer、Oracle、MySql三种常用数据库。Multi-DB架构采用策略模式设计,定义IDatabase通用接口,并实现DatabaseMSSQL, DatabaseMySql,DatabaseOracle三个数据库操作类。引用的类库名称:CSframework.DB.dll。
Windows 服务承载的WCF服务器
![C/S框架网|Windows 服务承载的WCF服务器](http://www.csframework.com/images/cs-3-tie-007.png)
![C/S框架网|Windows 服务承载的WCF服务器](http://www.csframework.com/images/cs-3-tie-008.png)
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不会被回收,除非用户手动关闭服务。
![](http://www.csframework.com/images/item1.gif)
(1)、承载在IIS外、长时间运行的WCF服务
(2)、所有Windows版本支持
(3)、由操作系统控制服务进程的生存周期
![](http://www.csframework.com/images/item1.gif)
(1)、HTTP
(2)、net.tcp
(3)、net.pipe
(4)、net.msmq
IIS服务器宿主承载WCF服务
![C/S框架网|IIS服务器宿主承载WCF服务](http://www.csframework.com/images/cs-3-tie-009.png)
在 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数据还原,最后提交到数据库。
![](http://www.csframework.com/images/item1.gif)
代码生成器
代码生成器作为C/S系统开发框架核心配套工具,该系统可以自动生成基于开发框架项目的三层架构代码和工程模块,生成器根据事先定义的物理表字段信息自动生成对应的组件,如:文本输入框、数据表格及界面,自动实现了数据操作的基础功能,如:添加、修改、删除、查询、数据合法性检查、ORM、BLL、DAL、Form等源码。将源码集成到解决方案,调试编译后即可运行。代码生成器使程序员避免大量机械式编程工作和重复劳动,将主要精力集中在核心业务逻辑开发。
![](http://www.csframework.com/images/item1.gif)
数据库连接工具 (SQLConnector.exe)
![C/S框架网|数据库连接工具 (SQLConnector.exe)](http://www.csframework.com/images/cs-3-tie-010.png)
作为C/S系统快速开发平台配套工具之一,用于建立系统的初始连接以及配置后台连接模式。该工具支持SqlServer/Oracle/MySql三种数据库类型。用户使用开发框架之前,首先要配置连接CSFrameworkXX_System系统数据库,目的是建立初始连接,读取业务账套数据库的配置信息(tb_DataSet表),方便用户在系统登陆界面选择登陆账套。
版本自动升级程序 (AutoUpgrader.exe)
C/S 系统版本自动升级软件V1.0 作为C/S系统快速开发平台配套工具之一,用于客户端自动升级程序版本。升级程序能够独立运行,也可以通过主程序调用。当用户启动升级程序,系统自动匹配客户端版本信息与服务器上的版本信息,通过比较版本号码,若服务器的版本高于客户端,则提示用户更新软件。
![](http://www.csframework.com/images/item1.gif)
1.以升级包方式自动升级,
2.可发布执行命令或独立程序的升级包,
3.升级包管理和维护,
4.升级程序独立部署。
C/S系统快速开发平台采用ADO-Direct模式模拟数据提交流程
![C/S系统快速开发平台采用ADO-Direct模式模拟数据提交流程](http://www.csframework.com/images/cs-3-tie-011.jpg)
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模式模拟完整请求的流程:
![C/S系统快速开发平台采用WCF模式模拟完整请求的流程](http://www.csframework.com/images/cs-3-tie-012.jpg)
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信息。