软件开发框架培训内容大全 | CSFrameworkV5.1旗舰版|培训大纲
软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版 目录
01 - 后台连接策略(采用策略模式)开发平台支持以下连接方式:
关于Tcp/IP技术Socket Server (Listing Port)服务器:建议采用Windows服务方式启动。 Socket Client:客户端。 02 - 自动升级程序基于独立升级包方式进行自动升级,升级包上传到数据库的 sys_PackageTable 表。每个升级包有唯一标识,版本号。 升级程序数据库:AutoUpgrader 升级程序启动方式主程序→升级程序 Main.exe → AutoUpgrader程序 参考:https://www.cscode.net/archive/autoupgrader/1634572645.html 03 - 系统消息系统消息是指开发框架提供的内部消息机制,采用心跳机制,每分钟定时从数据库获取当前用户的最新消息,心跳时间可配置。 实现:在frmMain主窗体,通过timer主动抓取服务器的消息,消息表:CSFrameworkV5_System.dbo.sys_Messages,系统数据库:CSFrameworkV5_System 04 - 数据窗体分类1. 基础资料窗体既:数据字典窗体,主要用于管理与维护单表基础资料,继承 frmBaseDataDict 基类。 2. 业务单据窗体主从表结构,或主从子表三层结构, 继承 frmBaseBusiness 基类。 05 - 开发框架窗体基类 - frmBasefrmBase继承DevExpress的XtraForm
06 - DevExpress组件注意
VS2017→不支持DevExpress15.x或以下的版本 VS2019→不支持DevExpress17.x或以下的版本 请选择安装合适的版本。 DevExpress组件下载: https://www.cscode.net/archive/newdoc/1634037196.html DevExpress官网
07 - 开发框架模块介绍开发框架模块是什么?开发框架模块是指类库(Class Library)或 VS工程项目(VS Project),编译生成DLL程序文件。 模块主窗体模块主窗体继承 frmBaseModule 基类,以 frmMainXXX, frmXXXXXMain开头的窗体文件。 开发模块主窗体注意事项
开发模块主窗体必须注意几点: 1. 定义菜单, 2. 定义按钮, 3. 实现菜单和按钮对应的Click事件, 4. 给菜单指定权限值。 08 - 数据窗体的表格支持导出Excel/PDF文件GridControl:表格组件。 GridView:表格视图 GridView的列头可右键弹出菜单,可以导出Excel,PDF等文件。 09 - 权限实现原理1. 界面权限界面权限是指控制界面的功能按钮。 每个按钮有特殊的编号,为二进制数据(2^n次方表示),如:0,1,2,4,8,16,32,64….. 权限值>0值的功能按钮可以分配权限。 参考:tb_MyActions表。 2.数据权限数据权限控制支持以下两种方式: 横向控制:基于制单人过滤记录数据,SQL脚本使用 “Where 制单人=当前用户“ 筛选数据。 纵向控制:控制界面的组件是否显示,表格的列控制,或文本输入框控制。 举例:若当前用户没有【采购单价】的数据权限,则:设列.Visible=false, 文本框.Enable=false; 或文本框.Text=0, 隐藏采购价格。 数据权限界面实现 : 通过【角色】自由扩展权限,在界面进行逻辑判断: C# 全选
基础资料、业务单据的权限值定义基础资料窗体默认分配的权限值: AuthorityCategory.MASTER_ACTION=111 业务单据窗体默认分配的权限值: AuthorityCategory.BUSINESS_ACTION_VALUE=32895 10 - 如何扩展按钮http://www.csframework.com/archive/5/arc-5-20110510-1465.htm
11 - 系统设置系统设置:作为系统默认的参数,用户不可更改。表名:sys_SystemSettings。 用户设置:用户个性化设置、我的设置,用户可更改。表名:sys_SystemSettingsByUser。 12 - 并发控制开发框架的并发控制是指防脏写。 1. 什么是脏写?一个事务修改了 另外一个事务未提交的修改过的数据。 简单的讲,A和B两个人同时打开及修改一条数据,A保存后,B再保存,此时B会覆盖A的数据。 2. 如何避免脏写?综上所述,系统要避免覆盖A的数据,该怎么处理呢? 通过时间戳(TimeStamp)字段(TS)控制。 时间戳:TimeStamp。 标准的更新数据SQL: UPDATE XXX SET XX WHERE PK=@PK 若加入TS, 组合复合条件,复合主键: UPDATE XXX SET XX WHERE TS=@TS AND PK=@PK 3. 使用时间戳避免脏写原理举例:a,b,c,d 四个人打开一张单据,单据号码:doc20210008,当前记录的TS值:2011111601234283 B最先提交数据(第1个人能保存成功),保存后TS字段的值自动更新为当前时间:如:2011111602254289 B,C,D任何一人保存数据,此时WHERE 条件不成立了,组合的SQL如下: UPDATE XXX SET XX WHERE TS=2011111601234283 AND PK=doc20210008 提示:更新影响0条记录。 这是ADO.NET底层抛出的并发异常,因为原记录被其他用户修改,不存在了! 13 - 项目开发CSFrameworkV5.ClientFoundation 开发架构基于 CSFrameworkV5.ClientFoundation 基础架构开发新项目。 CSFramework.Rename VS改名工具对基础架构VS解决方案改名,使用CSFramework.Rename工具 CSFramework.AutoUpgrader 商业版自动升级程序https://www.cscode.net/archive/autoupgrader/1630589770.html CSFrameworkV5.CodeGenerator.exe 代码生成器工具https://www.cscode.net/archive/codegenerator/1630583660.html CSFrameworkV5.SQLConnector.exehttps://www.cscode.net/archive/csframework-sqlconnector/1631288677.html 更换图片及图标
14 - WCF三种承载方式WCF应用服务器,三种承载(Hosting、宿主)方式: 1. IIS承载,适用HTTPS协议的接口。针对微信APP开发友好。 2. WinServer承载,既Windows服务,调试比较困难,也可以调试,采用:IP地址+端口,http://122.11.53.23:18885/api/do 3. Self Hosting自承载,开发环境,调试模式,CSFrameworkV5.TesterHosting设为启动模式。 建议采用双屏开发模式,提升开发效率。 特别是Client/Server双模式调试,使用双屏有非常好的用户体验。 15 - ORM模型模型(Model),表结构映射,将数据库表结构 转换为对应的C#类。 ORM_TableAttributeModel类的特性,定义表名、主键、是否主表3个参数。 ORM_FieldAttribute字段的特性(Attribute) isAddorUpdate: 是否用于更新的字段, 用于组合SQL脚本。 isPrimaryKey:是否主键 isForeginKey:是否外键 isDocFieldName:是否单据号码,流水序号。 C/S开发框架的ORM模型基于Nhibernate架构改装的,ORM Model / 模型主要用于系统自动生成SQL脚本。 关于Nhibernate
C/S框架的ORM模型基于Nhibernate架构改装的,Nhibernate作为ORM模型提交数据鼻祖。 在2005年,我们使用Nhibernate架构提交数据,开发了一套大型ERP系统。 演变:XML→C# Model,最后被Entity Framework 替换了。 16 - SQLGenerator:SQL命令生成器基本原理根据C#的Model模型,通过.NET反射类的全部属性, 获取 ORM_FieldAttribute 特殊各个参数的值,自动组合三种SQL脚本。 假设C#类,模型定义: C# 全选
自动生成三种脚本SQL 全选
TIP: 针对需要保存的表,生成对应的Model。 17 - CreateSqlGenerator 创建SQL命令生成器实例DAL层的CreateSqlGenerator方法:根据当前提交的表(DataTable)的表名,实例化SQL命令生成器对象。 当前DAL层提交多少张表,要定义对应的关系。 18 - 前端界面数据采集、保存逻辑1. 数据采集实现逻辑将当前操作界面修改的数据组合一个DataSet内,作为临时数据,然后提交到数据库。 调用DataTable.GetChanges()返回一个新的DataTable实例,然后把DataTable实例放到DataSet里面。 若界面为主从表,主从子表结构,需要采集多张表的数据,放到DataSet里面。 2. 保存数据逻辑数据采集完成后,调用业务逻辑层的保存方法:BLL.Update(DataSet) --> DAL.Update(DataSet)。 循环DataSet.Tables,逐张表提交, 参考dal基类的两个方法:
19 - 开发框架使用的设计模式(GOF 23)常用设计模式策略模式(Strategy),工厂模式(Factory),单例模式(Singleton),命令模式(Command),模板(Template),Façade(界面模式),桥接模式(Bridge),组合模式(Composite),访问者模式(Visitor) State Machine(状态机) 电梯,等等。 更多设计模式文档:https://www.cscode.net/Search/Q?id=设计模式 20 - OOP面向对象编程OOP语言,纯面向对象,万物皆对象! OOP语言: 类、实体、实例、继承、接口、重写、抽象。 面向结构编程,结构化程序设计(Structured Programming),面向结构编程语言有:c,pascal,basic,主要是方法+函数+变量+常量编程方式。 程序员基础条件
1.OOP,设计模式,不是必须的。 2.而数据结构:必须的! 21 - 为什么要用设计模式?单列模式特点:类里面必须定义自己的实例,并且只运行实例化一次。 举例:获取一组常用数据,如【产品资料】,因为【产品资料】需要在多个界面使用的。 若不使用设计模式,你必须在各个界面重复定义查询产品资料数据。 22 - 数据结构二进制二进制运算逻辑(AND, OR, NOT)。 数组(Array)(1维,2维,3维)、Array 列表(List)List / ArrayList 实现IList接口, 有枚举器 IEnumetor。 数据类型(DataTypes)了解常用数据类型,如:string,int,money,float,double,boolean,datetime等。 指针(Point)内存地址,比如:日期类型的8位,数字4位。 枚举 Enumerationfor rech(循环)使用。 排序算法(Sorting)比如冒泡排序算法, asc / desc,升序,降序。 队列(Queue)如:先进先出、先进后出、后进先出、后进后出。 树(Tree)树干+叶子,二叉树。 堆(Heap):先进后出结构。栈(Stack):先进先出结构。Hash表(散列表)Hashtable, Dictionary字典。 链(Link)链条(类似单车链条),主要用于Command命令模式,命令传递链:A→B→C 23 - CSFramework.DB.dll 多数据库支持底层提供:MsSQL, Oracle, MySQL三种常用数据库接口。 核心接口:IDatabase CSFramework.DB 软件简介: https://www.cscode.net/archive/csframework.db/1630589248.html 24 - 团队开发项目(Project DLL) 分离。 源码管理器:GIT、SVN、TFS。 必须有详细的开发文档,如:《详细设计说明书》 参考: https://www.cscode.net/archive/newdoc/cs-210903193552570-84.html 软件系统详细设计说明书-自动目录模板docx文档下载: https://www.cscode.net/archive/newdoc/cs-210903193606514-31.html 25 - Loginer.CurrentLoginer.Current,当前登录用户全局对象,重要属性:User账号,账套编号,IP,登录时间。 26 - DAL层的构造器如:dalPN(Loginer), 用于获取账套编码,建立对应账套的数据库连接。 27 - tb_DataSet 账套配置表System库的 tb_Dataset 表。 28 - 数据字典与业务单据命名规范xxxxDataDict:数据字典,DataDict,单表数据。 xxxBusiness:业务单据,Business,主从表结构的单据。 29 - 手动事务处理需要重写DAL层的Update方法,Demo源码例子:dalPO.cs 30 - 加密算法MD5算法主要用于APP移动端,比如手机号登录的密码。 对称加密算法如:DES, AES, RSA, Rijndael,开发框架默认使用Rijndael加解密,加密后字符串:3H0hVJsk1255KgahWKTyGA== 31 - frmMain主窗体命名控件:CSFrameworkV5.Library.Entry.frmMain frmMain.cs 主窗体重要方法: InitUserInterface 系统初始化_ModuleManager.LoadModules 动态加载dll模块32 - WCF介绍WCF是WebService迭代升级版本,开发框架高级版V3.0、企业版V4.0、旗舰版V5.0全部使用WCF。最前期的版本使用WebService。 ICommunication 通信接口WCF真正的通信底层接口是:ICommunication 通信接口。 ICommunication 接口几个重要方法: C# 全选
33 - WCF透明代理工厂的应用C# 全选
对比WebService,再也不需要手动添加Web服务引用了!您只需要引用WCF的接口,使用透明代理工厂实例化接口即可! WebService需要手动添加引用服务,VS自动生成一堆WebService代理类。 34 - 代码生成器CSFramework代码生成器基于数据库的表结构生成源码,先建表,再生成代码。 生成模块(Project)生成业务模块后,必须在Assembly.cs里面改 生成单表界面,举例:dt_Doc表。 生成代码注意以下2点1. 生成的DAL层源码命名空间: CSFrameworkV5.Server.DataAccess→改为:CSFrameworkV5.DataAccess 2. 生成的BLL层 删除无效的using:using CSFrameworkV5.WebRef.DataDictModule; 代码生成器3个核心视频点击下载:生成项目工程模块(Project), 密码: jzqo 分辨率:1600x900 点击下载:生成数据字典窗体(DataDict Form), 密码: kic0 点击下载:生成业务单据窗体(Business Form), 密码: erus下载地址: https://www.csframework.com/cs-code-generator.htm 35 - 数据窗体界面重要成员变量、属性和方法_buttons成员变量当前界面按钮对象集合。 获取按钮对象: C# 全选
ButtonStateChanged当按钮状态发生变化的时候触发该事件,主要对当前界面的组件状态做控制,比如修改组件的 Enable, ReadOnly属性, 改字体颜色等操作。 増、删、改、查、保存、取消等操作会触发ButtonStateChanged事件。 警告&建议
ButtonStateChanged事件会频繁调用:不要在ButtonStateChanged事件中处理数据逻辑、或查询数据。 OnEmbeddedNavigatorButtonClick明细表格按钮的事件 CreateOneDetail创建一条明细表记录。 数据操作窗体(单表、主从表窗体)按钮事件 http://www.csframework.com/archive/1/arc-1-20201110-2925.htm 自动下拉弹框表格过滤数据组件ucMyLookUpEdit http://www.csframework.com/archive/1/arc-1-20200328-2819.htm 36 - WCF服务端WCF服务器VS解决方案WCF客户端代理类接口实现透明代理:创建WCF实例如何在客户端创建WCF对象实例?C# 全选
WCF参考文档1. WCF服务,使用Win服务承载WCF http://www.csframework.com/archive/1/arc-1-20170913-2325.htm 2. C# ASP.NET WebApi服务器搭建详解 - Win服务承载(Windows Service Hosting宿主) http://www.csframework.com/archive/1/arc-1-20200217-2723.htm 3. 使用批处理文件安装或卸载WCF服务(Windows服务) http://www.csframework.com/archive/1/arc-1-20170305-2294.htm 扫一扫加作者微信
参考文档:
软件开发框架的设计和选择 基于C/S结构的开发平台|Winform开发框架研发的生产管理软件 快速软件开发框架|C/S框架网钜献 基于C#.NET C/S架构的生产看板管理系统软件开发框架平台 基于C#.NET MES软件开发工具MES系统开发框架 .NET快速开发框架 - 常见快速软件开发平台和开发工具 【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理 多语言界面软件开发框架 - 初始化多语言时发生单引号错误(解决方案) C/S架构多语言界面UI框架软件开发框架(C#.NET+Winform+DEV+SQL) 基于C/S架构轻量级快速开发框架软件开发平台(C#+ADO.NET+EF) 软件开发框架 - Software Development Framework 软件开发平台 - 软件开发框架介绍-C/S开发框架 图解软件开发-项目管理基础-C/S开发框架 行业软件简称大全:ERP/MRP/MES/CRM/MIS/HIS/POS/HRP/SCM/OA-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |