
适用开发:
快速构建支持多种客户端的服务端程序,支持APP、B/S、C/S跨平台移动终端等。
运行平台:Windows + .NET Framework 4.5

开发工具:Visual Studio 2015+,C#语言

数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
WebApi应用场景

二、架构图 (Architecture)


CSFramework.WebApi 封装多个通用功能,为搭建Web服务端软件提供强大的技术支持。

客户端请求以命令形式传递到服务端的API接口,命令也就是请求的数据包,包含有请求编号、数据签名以及提交的业务数据。服务端接收到请求,首先要进行数据格式分析以及安全检查,比如数据签名、用户令牌或用户账号信息等。检查通过后,系统自动将请求传递到命令处理处理程序,系统将拒绝非法请求,抛出异常或返回错误回应信息给客户端。

命令处理层即业务逻辑层,主要负责数据校验和提取业务数据,将
Request的数据(
JSON或
XML)文本内容转换为实体对象,最后传递到数据访问层提交到数据库。

数据访问层是整个逻辑处理的最后一个流程,负责将数据模型持久化到数据库。数据层使用开发框架内置的数据更新机制,根据表结构模型自动生成
SQL脚本,无论是提交单条或批量数据,无需手工编写
SQL脚本,系统自动实现数据的持久化。框架支持其他数据模型,如
Entity Framework等。
三、客户端请求流程 (Client Request)


流程说明:
客户端发起请求 -> 构建Request对象,封装账号信息以及业务数据 -> 序列化成为JSON/XML文本格式 -> 使用HTTPPOST 或 HTTPGET 方式向服务端提交数据 -> 服务端接收到请求信息。
四、服务端处理流程 (Server Process)

流程说明:
服务端接收请求 -> 记录IP访问日志(可配置) -> 进行安全检查 -> 命令工厂创建命令实例(Command Object) -> 由命令处理程序(CommandHandler)执行命令 -> 调用数据访问层 -> 提交数据。
五、命令处理机制 (Commands)


命令处理机制是CSFramework.WebApi后端开发框架采用的最新设计模式,本质上命令就是业务逻辑层。Api接口是暴露给客户端访问的端点(Endpoint),假设我们要设计一个含有几百个功能的大型系统,是不是要设计数百个Api接口?用命令模式可以解决这个问题,设计一个通用的接口来处理所有客户端的请求,然后用编号区分具体功能,比如编号80100代表客户订单,80200代表采购订单。服务端接收到请求后,通过命令工厂和编号创建对应的命令实例,对于三层架构来说,就是创建了具体的业务逻辑层。
六、数据访问层(DAL Data Access Layer)

数据访问层(Data Access Layer)分为单表操作数据层和主从表操作数据层,开发人员根据功能区分来选择继承方式。若提交一张资料表,使用dalBaseBusiness基类的功能完全兼容dalBaseDataDict基类的功能。主从表操作数据层实现要复杂一点,比如更新主外键、自动生成流水号、事务处理等。

业务逻辑层(命令)将处理传递到数据访问层,首先根据数据库提供者创建数据库对象实例,因此开发框架支持跨数据库操作。然后通过SQL命令生成器分析ORM模型,自动生成三种SQL脚本(INSERT,UPDATE,DELETE)。最后调用数据库对象(IDatabase)的相关方法提交或获取数据。
七、安全机制 (System Security)

系统安全保障机制由以下九个部分组成:
1.User - 用户账号:通过用户账号和密码确保有效访问,系统支持用户账号、手机号、邮箱登录。
2.Token - 令牌机制:通过令牌机制确保有效访问。用户登录成功,系统自动分配随机令牌编号。
3.ApiKey - 开发者账号:WebApi接口常用安全机制,使用公钥+私钥加密方式,确保系统安全。
4.Data Sign - 数据签名:WebApi接口常用安全机制,使用公钥+私钥加密方式,确保系统安全。
5.Blacklist - 黑名单:针对黑名单用户限制访问或操作,此功能可配置使用。
6.Throttle - 限流控制:有效避免频繁访问、恶意访问WebApi接口,此功能可配置使用。
7.ApiLog - 接口访问日志:针对任何Http请求,服务端会记录接口访问记录,此功能可配置使用。
8.Login Log - 系统登录日志:记录用户登入或登出系统的信息。
9.数据加密/解密:提供CryptoHelper工具类,以及4种对称加密工具。
八、ORM模型(ORM Model)

对象关系映射(Object Relational Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法 。O R M 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

ORM模型主要作用是传递给SQL命令生成器自动生成三种SQL脚本(INSERT/UPDATE/DELETE),开发人员不需要编写冗余复杂的SQL语句。若使用静态类(Static Class)的ORM模型,属性(字段名)还可以作为常量使用。
九、跨平台服务端 (Cross Platform Server)

开发框架为用户提供多种数据库支持,目前已封装三种底层数据驱动,支持SqlServer、Oracle、MySql三种常用数据库。Multi-DB架构采用策略模式设计,定义IDatabase通用接口,并实现DatabaseMSSQL, DatabaseMySql,DatabaseOracle三个数据库操作类。引用的类库名称:CSframework.DB.dll。
操作数据库代码示例:
十、WebApi服务器宿主(Server Hosting)

自承载 (Self Hosting)
开发模式必须使用自承载模式,主要方便开发人员进行系统调试、功能测试、断点跟踪和开发。

IIS承载 (IIS Hosting)
基于IIS(Internet Information Server)服务器承载WepApi服务。要求IIS版本在7.0或更高,应用程序池设置为.NetFramework 4.5。

Windows服务承载
基于Windows服务承载WebApi服务。首先要安装服务,运行程序目录下的_Install.bat批处理文件,命令窗体显示安装情况,安装完成后,打开Windows服务管理器,找到安装的服务(如:CSFramework.WebAPI.服务器,见下图),在属性页将启动类型设置为“自动(延迟启动)“。