# WinForm框架

## 架构模式
典型的C/S架构有两层架构模式和三层架构模式两种。

### 两层架构
两层架构就是客户端-数据库架构，客户端直接连接数据库。

优点：
- 客户端与数据库直接连接，没有中间环节，因此响应速度快
- 传递大量数据时很少会造成内存溢出

缺点：
- 安全性差，数据库的账号密码都暴露在客户端代码中
- 适用性差，只适合在局域网中使用

### 三层架构
三层架构就是在两层架构的基础上多了一层应用服务器，即客户端-应用服务器-数据库。

优点：
- 安全性高，数据库连接操作都在应用服务器中进行，提高了数据库安全性
- 扩展性好，除了在局域网中使用外，还可以在公网中使用

缺点：
- 因为多了一级应用服务器，效应速度稍慢
- 传递大量数据时，因为序列化和反序列化经常造成内存溢出

鉴于两层架构和三层架构的优缺点，以及咱们公司的业务场景，现在的WinForm架构是同时支持两层架构和三层架构的。一些安全性要求比较高的场景通过三层架构实现；而对响应速度要求比较高的场景则通过两层架构实现。

## WinForm架构功能

![](./static/images/01.png)

|模块|说明|
|-|-|
|网关处理模块|三层架构中用于接受并转发客户端请求；把返回结果返回客户端|
|控制台管理模块|用于管理应用层、应用层处理器和应用层数据库组的配置信息|
|数据库操作模块|用于操作数据库|
|控件库|自己封装的ui组件，既为了方便程序开发，又为了让程序界面更加美观|
|模块界面设计|动态配置模块界面，提高开发效率和程序的易维护性|
|动态SQL配置|动态配置SQL语句，提高程序的易维护性|
|报表平台|允许自定义报表，包括平面报表、交叉报表和图形报表都能|
|套打平台|自定义套打格式的打印管理平台|
|文件管理平台|文件服务器，允许上传、下载文件，并允许部分格式文件在线预览|
|预警|根据用户设定条件触发预警机制，并通知相关责任人|
|定时任务|定时执行用户预先设定的任务|
|用户管理|管理平台用户|
|角色管理|管理平台角色|
|日志管理|管控模块日志，包括模块进入日志和操作日志|
|多语言管理|平台支持多余元|
|数据同步|多地进行数据同步|
|菜单模板管理|根据用户权限已经ip地址等限制，使用不同的菜单选项|
|功能权限管理|用于控制模块可不可用，模块里的功能可不可用|
|数据权限管理|用于控制模块数据的可见范围|
|短信平台|与外部短信平台进行连接|
|消息平台|平台内部消息平台|
|审核流|自定义审核流程|





