C/S框架网 | C/S框架核心组成部分

一. 框架由多个模块组成

框架由多个模块构成,每个模块是一个类库(Class Library),Main.EXE是主程序。模块分两大类:系统模块和业务模块,系统模块是指框架核心模块,是系统主要组成部分,缺一不可。业务模块是指实现用户需求的功能模块,如:进,销,存模块,业务模块之间零藕合完全独立的,运行系统时动态加载业务模块。

二. 动态加载模块

如“进货”,“销售”,“库存”,“财务”等业务模块全部由ModuleLoader子系统动态加载的,而系统模块通过静态引用使用其功能。业务模块可以独立部署在用户的机器上,如采购部门的用户只需要部署“进货.dll”文件,销售部门只部署“销售.dll”文件,不同部门的用户部署不同的模块文件,表面上看来系统少了某些文件,但丝毫不影响程序正常运行,主窗体左侧的导航面板(Navigator Control)不显示未加载的模块,实际上是当前部门看不到其它部门的功能,另外,权限管理可以控制模块是否在主窗体显示。
 

三. 标准三层设计(UI,BLL,DAL)

框架的三层设计:

1. UI(User Interface 界面展示层)
2. BLL(Business Logical Layer 业务逻辑层)
3. DAL(Data Access Layer 数据访问层)

基础版及标准版是最简单的三层设计,而带桥接功能高级版最多是五层设计,分别是UI、BLL、Bridge(桥接代理层)、WCF(Web服务中间层)、DAL。


四. MDI(多文档界面)架构

MDI(多文档界面)架构在框架中应用

五. 共享主窗体的工具栏

主窗体的工具栏按钮视图。
部分接口实现:

六. 数据窗体模板

框架的数据窗体模板有两种:数据字典窗体和业务单据窗体。数据字典指的是单表数据或者是基础数据,比如货币资料,客户数据,产品资料等等。业务窗体指构成主从表结构关系的业务操作,通常有一个具体的主表及一个或多个明细表。业务窗体同时管理多张数据表,表之间通过主外键关联,比如:采购单,销售单,出/入库单等。

开发框架提供的窗体模板有:

基础资料 - 产品资料管理,客户资料管理,公共数据字典,销售员资料,产品类型管理。

业务单据 - 采购订单(PO Purchase Order),销售订单(SO Sales Order)。

七.框架的核心接口

主窗体的接口。
子窗体的接口,如数据基窗体,基础资料,业务单据,报表子窗体等。
主窗体与子窗体功能交互接口,如按钮注册接口(在主窗体显示当前子窗体的按钮)。
模块主窗体接口。
业务逻辑层接口。
数据访问层接口。
桥接功能接口(高级版)。
登录策略接口。
日志功能接口。

八.支持多帐套功能

开发框架支持多个帐套,每个帐套对应一个独立的数据库,适合分公司独立部署数据库.

九. Web服务中间层及服务安全

高级版集成Web服务中间层,因Web服务是暴露在广域网下的一组公共接口,所以严格要求高安全性,下面是基于WebService的安全机制。

十. 后台数据更新机制

后台数据更新机制及SQL命令生成器。

十一. 代码生成器(Class Generator)

代码生成器可生成以下类型的代码:

1. 表结构静态类(ORM)

2. 实体类(ORM)

3. BLL层代码

4. DAL层代码

5. 数据字典窗体(开发中)

十二. SQL连接管理工具

SQL连接管理工具可以为您配置客户端与数据库服务器的连接,适用于V2.0,V2.0及V3.0的ADO-Direct直连模式。连接成功后将参数存储到INI文件或系统注册表。

十三. 数据字典缓存及同步更新

开发数据库系统时会用到大量的缓存数据,这样会提高系统的性能。特别是业务窗体的功能比较复杂,界面上会提供许多选择功能(使用LookupEdit组件),比如销售订单有货币种类,单位等选择项。在运行程序时从后台取货币种类及单位的基础数据下来“缓存“起来,然后绑定Lookup组件的数据源即可实现选择功能。但是,当用户更新原始数据时(增删改)如何立即更新缓存的数据呢?我想大家曾遇到这种问题,我整理了一套方案供大家。
参考: 开发应用-观察者模式之C#实现缓存数据更新
上面的方案只能满足单机版的系统,要想真正实现数据同步难度极大,特别是使用Web服务中间层运行在广域网Client/Server系统难度更大了,虽然Web服务提供异步回调可以通知客户端同步更新数据,但随着用户数的增加,系统的性能及网络带宽成正比下降,在C/S系统架构下要想实现数据同步是不现实的。

折中的方案是:运行客户端程序时从服务器复制一份数据缓存到本地,及实现单机版的数据同步并且定时从服务器下载最新数据(如有更新时),虽然不尽完美也有可能承担脏读风险。

十四. 版本自动升级系统

开发框架集成独立的版本自动升级程序,可以在局域网和广域网络环境下自动升级程序。



2.0 beta版已经开发完成了,支持下面两种下载方式:

1.Tcp/Ip下载,

2.通过局域共享目录复制文件

为了扩展使用其它下载方式,所以抽象出来IDownloader接口,您可以扩展通过WCF,.NetRemoting 传送文件(将文件转换为byte[]传送)。

UpgraderController控制器与IDownloader下载器关系图:

十五. 数据修改日志及查询管理

开发框架提供数据修改日志及查询功能。

十六. 业务单据辅助功能

目前仅开发完成附件管理。附件可以是业务单据的原始手稿或传真件图片等。

十七. 系统权限管理

系统权限管理包括用户管理和用户组管理两大部分,用户组管理可分配角色和权限。

十八.报表模板

贴图图片

开发框架支持两种报表模板:

1. FastReport for .Net
2. DevExpress XtraReport

DevExpress XtraReport


贴图图片


FastReport for .net 1.x


贴图图片

回到顶部