软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版


软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版

软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版

目录

01 - 后台连接策略(采用策略模式)

开发平台支持以下连接方式:

  • 1. ADO直连(标准3层逻辑架构),  最快速,最高效开发方案
  • 2. WCF连接,采用IIS服务器。
  • 3. WebApi (基于JSON数据格式,优势:跨平台,支持多种移动端)
  • 4. .NET Remoting
  • 5. Tcp/IP,定制数据包,写自己的协议。基于Socket套接字。

关于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 - 开发框架窗体基类 - frmBase

frmBase继承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# 全选
bool v= bllPermission.IsUserBelongRole (当前用户编号,"角色编号");
if (v) //有权限
{
//处理逻辑
}
else //没权限
{
//处理逻辑
}

基础资料、业务单据的权限值定义

基础资料窗体默认分配的权限值:

AuthorityCategory.MASTER_ACTION=111

业务单据窗体默认分配的权限值:

AuthorityCategory.BUSINESS_ACTION_VALUE=32895

10 - 如何扩展按钮

http://www.csframework.com/archive/5/arc-5-20110510-1465.htm

AuthorityCategory.MASTER_ACTION+ButtonAuthority.EX_01

软件开发框架培训大纲(1)

 

 

 

11 - 系统设置

系统设置:作为系统默认的参数,用户不可更改。表名:sys_SystemSettings。

用户设置:用户个性化设置、我的设置,用户可更改。表名:sys_SystemSettingsByUser。

软件开发框架培训大纲(1)

 

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.exe

https://www.cscode.net/archive/csframework-sqlconnector/1631288677.html

 

 更换图片及图标

更换图片,CSFramework开发框架更换图片,参考:

按钮图标素材库

https://www.easyicon.net

https://www.iconfont.cn/home/index

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_TableAttribute

Model类的特性,定义表名、主键、是否主表3个参数。

软件开发框架培训大纲(1)

ORM_FieldAttribute

字段的特性(Attribute)

isAddorUpdate: 是否用于更新的字段, 用于组合SQL脚本。

isPrimaryKey:是否主键

isForeginKey:是否外键

isDocFieldName:是否单据号码,流水序号。

软件开发框架培训大纲(1)

 

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# 全选
public class 表
{
public string PK {get;set;}//主键
public string F1 {get;set;}
public string F2 {get;set;}
public string Fn {get;set;}
}

自动生成三种脚本

SQL 全选
INSERT 表(F1,F2,Fn)values (@F1,@F2,@Fn)

UPDATE 表 SET F1=@F1 WHERE PK=@PK 

DELETE 表 WHERE PK=@PK

 

TIP: 针对需要保存的表,生成对应的Model。

17 - CreateSqlGenerator 创建SQL命令生成器实例

DAL层的CreateSqlGenerator方法:根据当前提交的表(DataTable)的表名,实例化SQL命令生成器对象。

当前DAL层提交多少张表,要定义对应的关系。

软件开发框架培训大纲(1)

18 - 前端界面数据采集、保存逻辑

1. 数据采集实现逻辑

将当前操作界面修改的数据组合一个DataSet内,作为临时数据,然后提交到数据库。

调用DataTable.GetChanges()返回一个新的DataTable实例,然后把DataTable实例放到DataSet里面。

若界面为主从表,主从子表结构,需要采集多张表的数据,放到DataSet里面。

2. 保存数据逻辑

数据采集完成后,调用业务逻辑层的保存方法:BLL.Update(DataSet) --> DAL.Update(DataSet)。

循环DataSet.Tables,逐张表提交, 参考dal基类的两个方法:

  • dalBaseDataDict.Update()
  • dalBaseDataDict.UpdateEx(DataSet)
  • dalBaseBusiness.Update()

 

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位。

枚举 Enumeration

for rech(循环)使用。

排序算法(Sorting)

比如冒泡排序算法, asc / desc,升序,降序。

队列(Queue)

如:先进先出、先进后出、后进先出、后进后出。

树(Tree)

树干+叶子,二叉树。

堆(Heap):先进后出结构。

栈(Stack):先进先出结构。

Hash表(散列表)

Hashtable, Dictionary字典。

链(Link)

链条(类似单车链条),主要用于Command命令模式,命令传递链:A→BC

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.Current

Loginer.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# 全选
ICommunication.Open();
ICommunication.Close();

//创建通信通道
ICommunication cs= ChannelFactory.Create();
cs.Open();

//强制转换为具体的接口,获取数据
ICommonService svc=( IcommonService) cs;
Svc.GetData()

 

33 - WCF透明代理工厂的应用

C# 全选
Svc=WCFFactory.Create<CSFrameworkV5.WCFContract.ISystemSecurityService>(); 
Svc.GetData()

对比WebService,再也不需要手动添加Web服务引用了!您只需要引用WCF的接口,使用透明代理工厂实例化接口即可!

WebService需要手动添加引用服务,VS自动生成一堆WebService代理类。

 

34 - 代码生成器

CSFramework代码生成器基于数据库的表结构生成源码,先建表,再生成代码。

生成模块(Project)

生成业务模块后,必须在Assembly.cs里面改 AssemblyModuleEntry 特性。

软件开发框架培训大纲(1)

生成单表界面,举例:dt_Doc表。

生成代码注意以下2点

1. 生成的DAL层源码命名空间:

CSFrameworkV5.Server.DataAccess→改为:CSFrameworkV5.DataAccess

2. 生成的BLL层

删除无效的using:using CSFrameworkV5.WebRef.DataDictModule;

代码生成器3个核心视频

软件开发框架 - 培训内容大全(客户1)

软件开发框架培训大纲(1)点击下载:生成项目工程模块(Project), 密码: jzqo 分辨率:1600x900

软件开发框架培训大纲(1)点击下载:生成数据字典窗体(DataDict Form), 密码: kic0

软件开发框架培训大纲(1)点击下载:生成业务单据窗体(Business Form), 密码: erus

下载地址:

https://www.csframework.com/cs-code-generator.htm

 

35 - 数据窗体界面重要成员变量、属性和方法

_buttons成员变量

当前界面按钮对象集合。

获取按钮对象:

C# 全选
IButtonInfo btn=_buttons.GetButtonByName(“btnAdd”);
btn.Enable=false; // 禁用按钮

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解决方案

软件开发框架培训大纲(1)

软件开发框架培训大纲(1)

软件开发框架培训大纲(1)

WCF客户端代理类接口实现

软件开发框架培训大纲(1)

软件开发框架培训大纲(1)

透明代理:创建WCF实例

软件开发框架培训大纲(1)

如何在客户端创建WCF对象实例?

C# 全选
private void TestCommonService()
        {
            string uri = "net.tcp://localhost:8585/CommonService";

            //创建透明代理
            ICommonService svc = WCFInvokeContext.CreateWCFService<ICommonService>(uri, BindingType.NetTcpBinding);
            try
            {
                (svc as ICommunicationObject).Open();//打开WCF通道

                //模拟用户登陆信息
                byte[] loginTicket = new byte[] { 22, 141, 34, 123, 55, 2, 23, 73, 22 };

                //调用WCF接口
                byte[] bs = svc.GetAttachedFiles(loginTicket, "PO201805130002");

                //将byte数组转换为DataSet
                DataSet ds = ZipTools.DecompressionDataSet(bs);
            }
            finally
            {
                (svc as ICommunicationObject).Close();//关闭通道
            }
        }

 

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框架网
上一篇:在VS内打开Form窗体,界面是个整体,所有控件不能操作选择和点击
下一篇:软件开发框架-WebApi后端框架培训大纲(1)
评论列表

发表评论

评论内容
昵称:
关联文章

软件开发框架培训内容大全 - CSFrameworkV5.1旗舰
软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰
C/S快速开发框架旗舰CSFrameworkV5.1 - VS开发环境配置
CSFrameworkV5.1旗舰代码生成器(Code Generator)
软件开发框架-WebApi后端框架培训大纲(1
C/S架构软件快速开发平台-旗舰V5.1简介
CSFramework旗舰V5.1介绍
C/S快速开发框架旗舰V5.1 - 业务单据明细表字段命名规范
C/S快速开发框架旗舰V5.1 - 预览报表
C/S快速开发框架旗舰V5.1 - 预览报表
Winform+DevExpress三层架构软件快速开发平台-旗舰V5.1
C/S架构软件快速开发平台-旗舰V5.1软件截图
CSFrameworkV5.1旗舰 - 电子邮件附件文件介绍
C/S架构软件快速开发平台-旗舰V5.1简介
C/S快速开发框架旗舰V5.1 - 数据库命名规范
C/S快速开发框架旗舰V5.1 - 数据字典窗体BLL、DAL继承关系图
C/S快速开发框架旗舰V5.1 - 手工建立业务模块Project
C/S快速开发框架旗舰V5.1 - 数据字典窗开发步骤
C/S快速开发框架旗舰V5.1 - 业务窗体命名规范
C/S快速开发框架旗舰V5.1 - 组件命名规范

热门标签
.NET5 .NET6 .NET7 APP Auth-软件授权注册系统 Axios B/S B/S开发框架 Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 CSFrameworkV6.1 DAL数据访问层 Database datalock DbFramework Demo教学 Demo下载 DevExpress教程 DOM EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS NavBarControl Node.JS NPM OMS ORM PaaS POS Promise API Redis SAP SEO SQL SQLConnector TMS系统 Token令牌 VS2022 VSCode VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 版本区别 报表 踩坑日记 操作手册 代码生成器 迭代开发记录 基础资料窗体 架构设计 角色权限 开发sce 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 毛衫行业ERP 秘钥 密钥 权限设计 软件报价 软件测试报告 软件简介 软件开发框架 软件开发平台 软件开发文档 软件体系架构 软件下载 软著证书 三层架构 设计模式 生成代码 实用小技巧 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 新功能 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序