软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰版


软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰版

软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰版

客户:宁德时代

目录

扁平按钮,UI界面

Cursor=Hand

ButtonStyle=HotFlat

ImageOptions.Image=DevExpress图标

关于模块的主图标,必须是透明背景32bit,png/ico格式

开发环境配置 – VS开发环境对应的DevExpress版本

VS2015, 安装DevExpress 15.x

VS2017, 安装DevExpress 17.x

VS2019, 安装DevExpress 19.x

DevExpress组件历史版本

https://www.devexpress.com/Support/Versions.xml

开发框架子系统

ClientFoundation开发架构配置

附加2个数据库:

CSFrameworkV5_System(系统库)

CSFrameworkV5_Normal(账套库)

配置系统库的 tb_Dataset 表,核对 DBUser,DBPassword字段的内容,密码使用DemoTester.exe工具加密。

SqlConnector.exe 连接配置系统库

操作手册:https://www.cscode.net/archive/csframework-sqlconnector/1631288677.html

CodeGenerator.exe 代码生成器-连接配置

操作手册:https://www.cscode.net/archive/csframework-sqlconnector/1631288677.html

AutoUpgrader.exe 自动升级程序,配置连接

操作手册:https://www.cscode.net/archive/autoupgrader/1630589770.html

日志管理

操作日志:系统登陆日志,系统操作日志, Log.LogDB(), Log.LogLocal()。

数据日志: 需要配置写日志的列,配置重要列,比如:名称,数值类,用于记录旧值、新值、修改人,时间等信息。

功能入口:系统管理模块【日志配置】

 

明细表记录的排序算法

明细表要增加一个排序字段,如:Queue,类型:decimal(18,4)

插入记录的算法:(Current-Prior)/2+Current

查询排序:Order By Queue ASC

开发框架加解密算法

开发框架使用Rijdenal对称加密算法, 传统加密DES/AES:DES加密太简单,容易破解。

RSA加密256位,签名算法,特点:需要分发公钥+私钥,算法速度慢。

加解密工具的密码:key(8位)+iv(8位)偏移量。

vs改名工具 CSFramework.Rename

https://www.csframework.com/archive/1/arc-1-20201110-2927.htm

最新版本请联系作者。

集团数据权限控制

横向理论

  1. 支持GroupParent/GroupCode 两级(业务数据加2个字段),分别对应基地部门1和用户所在部门2。
  2. 加基地部门标识【勾选】。
  3. 根据当前用户获取所在部门,再获取部门链编号,如:a,b,c.
  4. 根据当前用户所在的部门,检索数据 GroupCode IN (a,b,c,)

纵向理论

  1. 数据权限配置,支持组织架构以及个人配置。
  2. 展示部门负责人(支持 2个负责人),图标与普通员工区分。 
  3. 配置部门时,默认给下面的所有员工配置列。
  4. 勾选的列表示可见。
  5. 表结构从字段名称管理获取

SqlCommandGenerator - SQL命令生成器 

生成SQL原理, SqlCommandGenerator,生成3种SQL脚本及DbCommand实例。

实现逻辑:通过.NET反射ORM类的属性,根据属性定义,动态生成三种sql脚本。

ORM模型/ Model 重点部分

主表配置主键

C# 全选
[ORM_TableAttribute("tb_PO", "PONO", true)]
    [ORM_ConcurrentAttribute("TS")] 并发控制
    public sealed class tb_PO
    {
        public static string __TableName = "tb_PO";

        public static string __KeyName = "PONO";

        [ORM_FieldAttribute(DbType.Int32, 4, false, false, false, false, false)]
        public static string ISID = "ISID";

        [ORM_FieldAttribute(DbType.DateTime2, 8, false, false, false, false, false)]
        public static string TS = "TS";
        
        [ORM_FieldAttribute(DbType.String, 20, false, true, true, false, true)]
        public static string PONO = "PONO";

明细表配置主键和外键

C# 全选
///<summary>
    /// ORM模型, 数据表:tb_POs,由ClassGenerator自动生成
    /// </summary>
    [ORM_TableAttribute("tb_POs", "ISID", false)]
    public sealed class tb_POs
    {
        public static string __TableName = "tb_POs";

        public static string __KeyName = "ISID";

        [ORM_FieldAttribute(DbType.Int32, 4, false, false, true, false, false)]
        public static string ISID = "ISID";

        [ORM_FieldAttribute(DbType.String, 20, false, true, false, true, false)]
        public static string PONO = "PONO";

代码生成器,配置明细表重点

明细表必须配置主键+外键。

主从子表,三层表,层级表

参考:库存模块的《生产工艺》。代码生成器仅支持生成1层明细,既:主、从表。

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

提交多表时(DataSet)怎样数据采集?

什么是数据采集? 就是保存数据前将界面的数据组合到一个DataSet。

保存数据流程:UI数据采集 --> 调用BLL.Update(Dataset) --> DAL.Update(dataset) --> Database

提交数据重点:DAL.CreateSqlGenerator方法要对应ORM模型,根据表名对应,实现自动提交数据。

窗体、类命名规范(按功能名称排序)

比如:PO\SO

开发框架命名规范.pdf下载:

https://www.csframework.com/archive/1/arc-1-20130825-2063.htm

 

关于流水号码自动生成

  1. ORM模型的主键字段,设置 isDocFieldName =true;
  2. DAL层重写GetNumber方法。

每个DAL层必须重写CreateSqlGenerator方法

单张表的DAL层,比如客户资料、产品资料:

C# 全选
protected override IGenerateSqlCommand CreateSqlGenerator(DataTable table)
        {
            Type ORM = null;

            if (table.TableName == tb_Customer.__TableName) ORM = typeof(tb_Customer);

            if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!");

            return new GenerateSqlCmdByTableFields(ORM, table, this.GeneratorFactory);
        }

多张表的DAL层,采购订单、生产单:

C# 全选
/// <summary>
        /// DAL层:根据表名获取该表的SQL命令生成器,提交多张表
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <returns></returns>
        protected override IGenerateSqlCommand CreateSqlGenerator(DataTable table)
        {
            Type ORM = null;
            if (table.TableName == DXD_PN.__TableName) ORM = typeof(DXD_PN);//主表ORM对应关系
            if (table.TableName == DXD_PNDtlA.__TableName) ORM = typeof(DXD_PNDtlA); //明细表ORM对应关系
            if (table.TableName == DXD_PNDtlB.__TableName) ORM = typeof(DXD_PNDtlB); //明细表ORM对应关系
            if (table.TableName == DXD_PNDtlSub1.__TableName) ORM = typeof(DXD_PNDtlSub1); //明细表ORM对应关系
            if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型,请生成此表的Model类!");
            return new GenerateSqlCmdByTableFields(ORM, table, this.GeneratorFactory);
        }

 

CSFramework.DB.dll (数据库底层接口组件)

介绍:IDatabase 里面有4个meta_XXX接口,用于查询数据库元数据的接口。

代码生成器,生成SQL脚本要支持MySQL, 改@参数符号。

代码生成器,生成WCF接口到单独文件。

代码生成器,加选项:界面组件自适应。

开发文档:https://www.cscode.net/archive/csframework.db/1630589248.html

DbDataUpdate组件(已废弃,请使用DbFramework)

C/S框架网官网搜索文档,用于轻量级数据操作界面,Add/Edit/Delete对象实体操作。

参考:https://www.csframework.com/archive/1/arc-1-20210611-3587.htm

通过代码生成器生成标准的实体类模型,可用于DbDataUpdate组件操作。

DbFramework组件

参考文档:https://www.csframework.com/archive/1/arc-1-20210726-3732.htm

CSFramework.DB.dll (数据库底层接口组件)

frmBaseXXX基类窗体里面重要的方法

  1. InitButtons 初始化按钮。

  2. ButtonStateChanged, 按钮状态改变触发的事件。

  3. If (this.ButtonAuthorized(value):判断当前窗体是否拥有value参数的权限Value参数:权限值,2的n次方,如:1,2,4,8,16,32,…..

  4. IButtonInfo接口,增加Visible属性

框架基类界面

1. frmBase 窗体基类

  1. 仅展示数据的,继承 frmBaseChild, 无增删改

  2. 处理单表数据的,继承 frmBaseDataDictionary

  3. 处理主从表数据的,继承 frmBaseBusiness

  4. SetLanguage: 设置多语言,frmBase.SetLanguage(),框架默认封装三种语言,派生类可以重写 override 此方法,用于自定义设置组件的语言。

2. frmBaseModule 模块主窗体

  1. SetMenuTag(): 给窗体分配最大的权限数值(可分配数值)

  2. SetMenuButtonRelations():绑定菜单与按钮的对应关系, 菜单显示,按钮同样显示。

  3. MdiTools.OpenChildForm: 打开子窗体.

特点:继承frmBaseModule 基类的窗体,作为业务模块的主窗体。

3. frmBaseDataDictionary 单表数据窗体

  • InitButtons:初始化按钮。
  • ButtonStateChanged:按钮状态改变时触发该事件。
  • DoBindingSummaryEditor:自动绑定文本输入框的数据源。

4. frmBaseBusiness 主从表数据窗体

  • InitButtons:初始化按钮。
  • ButtonStateChanged:按钮状态改变时触发该事件。
  • DoBindingSummaryEditor:自动绑定文本输入框的数据源。
  • DoBindingDetailGrid:绑定明细表格的数据源。
  • OnEmbeddedNavigatorButtonClick:明细表格操作按钮的click事件,支持Add,Insert,Delele。
  • CreateOneDetail: 创建一条明细表记录。
  • 明细表格. CellValueChanged事件:修改单元格的值触发的事件。常用计算逻辑,计算金额:Quantity*Price=Amount(Amount列设为只读,计算结果不支持修改)

5. frmBaseDialog 对话框窗体

6. frmMsgEx:自定义UI消息窗体。

C# 全选
frmMsgEx.ShowInformation(“您好!”);
frmMsgEx.ShowWarning(“显示警告消息!”);

软件开发框架培训大纲-实时讲解总结-CSFrameworkV5.1旗舰版

文本输入框命名规则

文本框:txt+字段名

勾选框:chk+字段名

文本框赋值:SetEditorBindingValue(txt字段名,true); 

文本输入框赋值方式

赋值差异:

C# 全选
txtCode.Text=”1111”; //给没有绑定数据源的文本框赋值
SetEditorBindingValue(txtCode,”1111”,true); //给绑定数据源的文本框赋值

 

CSFrameworkV5.DataAccess 数据访问层几个重要的方法

  • DAL层Update方法(DataSet ds):
  • DAL层Update方法(DataTable data):
  • DAL层GetNumber方法,生成流水序号(单据号码);

 

动态加载模块

动态加载模块,怎样区分业务模块?

  • 对dll文件过滤,区分dll文件名,使用通配符如:ERP*.dll,筛选:ERP1.dll,ERP2.dll等文件。
  • Dll类库的程序集要定义AssemblyModuleEntry特性 (开发框架通过.NET反射获取该特性,判断是否业务模块)。
  • Assembly.cs, AssemblyModuleEntry模块入口标识 (用于识别开发框架的模块)

动态加载dll流程

在debug目录查询CSFramework*.dll  查找AssemblyModuleEntry特性,满足这两个条件,自动加载该dll文件。

动态加载模块技术:.NET反射,.NET Reflecation。

参考:frmMain.InitUserInterface方法,LoadModules方法

账套管理与维护

系统库 tb_DataSet 表, IsVisible=Y, 登陆界面可选择账套。

DBUserPassword 对称加密, Rijndael , DES,   DemoTester.exe加密。

 

常量改名注意事项

1.升级程序 Program.cs 文件内的常量改名

2.主程序 Globals.cs,替换:CSFramework,替换为您的项目名称,如:YourERP。

代码生成器 CodeGenerator

生成主从表界面注意事项

配置主表ORM

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

 

配置明细ORM

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

 

新开发的界面如何给用户分配权限

  • 给菜单定义权限值。
  • 给角色分配权限
  • 给用户分配角色
  • 权限值分类:

单表:AuthorityCategory.MASTER_ACTION ---- 核对菜单打开的界面必须继承frmBaseDatadict界面

主从表:AuthorityCategory.BUSINESS_ACTION_VALUE –>打开的界面必须继承frmBaseBusiness界面

报表:AuthorityCategory.REPORT_ACTION_VALUE

扩展权限:AuthorityCategory.MASTER_ACTION + ButtonAuthority.EX_01

 

扩展按钮

官网搜索关键词“扩展权限”。

扩展窗体中自定义按钮

http://www.csframework.com/archive/1/arc-1-20210722-3729.htm

扩展通用权限按钮(Toolbar中的按钮)

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

http://www.csframework.com/archive/1/arc-1-20161023-2266.htm

 

隐藏按钮: InitButtons方法的最后面加代码

_buttons.GetButtonByName("btnPrint").Visible = false;

 

WCF开发

WCF有三种承载(宿主,Hosting)方式,IIS, Win服务, SelfHosting自承载

IIS或自承载用于开发调试。

IIS承载(适用http/https协议)

配置web.config三个结点: bingings, services, behaviors

SQL连接字符串加密

Globals.asax文件的代码位置:App_Code\web_app.cs文件, 初始化Rij加密器。

关于协议与WCF结点绑定

HTTP/HTTPS协议:wsHttpBinding, basicHttpBinding

Net.tcp协议:nettcpBinding

WCF开发相关文档

Self Hosting自承载(适用http协议,开发环境调试)

https://www.csframework.com/archive/1/arc-1-20200217-2722.htm

Windows服务承载(适用http/https协议,生产环境)

http://www.csframework.com/archive/1/arc-1-20200212-2703.htm

WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务

http://www.csframework.com/archive/1/arc-1-20210709-3707.htm

WCF快速开发框架 - IIS承载WCF服务wsHttpBindings配置详解(HTTP协议)

http://www.csframework.com/archive/1/arc-1-20210709-3705.htm

WCF快速开发框架 - IIS承载WCF http协议BasicTcpBinding配置详解

http://www.csframework.com/archive/1/arc-1-20210709-3704.htm

WCF快速开发框架 - IIS承载WCF net.tcp协议NetTcpBinding配置详解

http://www.csframework.com/archive/1/arc-1-20210709-3701.htm

WCF开发框架 - vs发布IIS承载(IIS Hosting)的WCF应用服务详解

http://www.csframework.com/archive/1/arc-1-20210709-3703.htm

WCF开发框架 - BasicHttpBinding绑定的web.config与C#代码配置(支持https协议)

http://www.csframework.com/archive/1/arc-1-20210708-3696.htm

WCF开发框架 - NetTcpBinding配置web.config与C#代码配置

http://www.csframework.com/archive/1/arc-1-20210708-3695.htm

WCF开发框架之WSHttpBinding参数配置(C#代码配置+App.Config两种方案)

http://www.csframework.com/archive/1/arc-1-20210707-3691.htm

WCF开发框架IIS承载WCF - Website站点承载改为ASP.NET网站应用程序承载

http://www.csframework.com/archive/1/arc-1-20210707-3693.htm

WCF开发框架之ICommunicationObject 对象详解

http://www.csframework.com/archive/1/arc-1-20210707-3690.htm

关于数据处理超时解决方案

若是WCF服务器,在Globals.cs

1.DatabaseFactory.CommandTimeOut = 10;//单位:秒,设置DbCommand命令执行超时;

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

若是直连模式

BridgeFactory.InitializeBridge() 

软件开发框架培训大纲-CSFrameworkV5.1实时讲解总结

 

软件开发框架培训大纲-实时讲解总结-CSFrameworkV5.1旗舰版

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:软件开发框架-WebApi后端框架培训大纲(1)
下一篇:Winform软件开发框架使用DevExpress组件有那些优势?
评论列表

发表评论

评论内容
昵称:
关联文章

软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰
软件开发框架培训内容大全 - CSFrameworkV5.1旗舰
C/S快速开发框架旗舰CSFrameworkV5.1 - VS开发环境配置
CSFrameworkV5.1旗舰代码生成器(Code Generator)
C/S架构软件快速开发平台-旗舰V5.1简介
CSFramework旗舰V5.1介绍
C/S快速开发框架旗舰V5.1 - 业务单据明细表字段命名规范
C/S快速开发框架旗舰V5.1 - 预览报表
C/S快速开发框架旗舰V5.1 - 预览报表
软件开发框架-WebApi后端框架培训大纲(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
Winform+DevExpress三层架构软件快速开发平台-旗舰V5.1
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 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 智能语音收款机 自定义窗体 自定义组件 自动升级程序