OracleWinform开发框架的重中之重特征统计

从事Winform开发框架的商讨和松手,也做了有多少个新春了,从早期的品种雏形到当下各样紧要特点的投入完善,是通过了重重连串的总括概括和升华,有些则是依照客户须要或许应用前景的内需展开的应有尽有,整个Winform开发框架具有很好的通用性和借鉴性,本文从该Winform开发框架举行包涵总计,力求把种种主要的性格开展部分详细的认证,使大家探听整个Winform开发框架的相貌和特点。

Winform开发框架总体性概括有:协理插件化应用开发,可以动态配置及加载开发的插件;菜单支持动态配置,可按照用户权限进行动态控制呈现;集成种种独立开发好的模块,如权限管理种类、字典管理模块等,自动更新模块等,完成系统的权能决定、字典管理、软件襄助远程自动更新等作用;可重复使用的系统基础模块,Winform分页控件和.NET开发公用类库等;整个框架通过与代码生成工具Database2Sharp进行合作,可以一键转变全体性框架代码,Winform系统界面代码,开发更高效。

凡事Winform开发框架,提供了诸多常见业务系统提供的功能,包含Excel数据导入导出,能便捷导入自定义模块的Excel数据,飞速导出列表数据;自定义Excel自定义模板报表的成形,生成各个复杂的Excel报表;强大通用的总括图表模块,数据总计更利于;基于多数据的数码查询模块和通用高级查询模块,查询数据更便利;框架提供依据八种数据库(Sqlserver/Oracle/Mysql/Sqlite/Access)的咬合,可以手动配置数据库类型,通用模块内置帮衬各个数据库切换;框架提供了莫大封装的数量访问基类,开发代码更少更高效;框架界面基类也展开合并封装,使用更有益于,效果更统一;框架提供基础性的帮助,蕴含合并登陆、闪屏、托盘作用,以及为插件模块提供登陆用户信息和系统音信。

Winform开发框架的第一功能概览如下图所示。

Oracle 1

1、支持插件化应用开发,可以动态配置及加载开发的插件

框架已毕基于插件化的选拔,如下所示。

Oracle 2Oracle 3

接济插件化应用的支付框架能给程序带来持续生命力,也是当下众多系统、程序追求的显要趋势之一,插件化的模块,在安分守己一定的接口标准的底蕴上,可以兑现急迅集成,约等于所谓的热插拔操作,可以极其对已经支付好系统开展扩充,而且不会影响已有的职能,不再要求的模块,通过改动配置移除即可。

插件化应用也是当下框架和序列开发的主流方向,从支付集团的成品管理角度来看,第一方可把控好已有些框架产品,第二能够把内部的人手分配到区其余业务模块中,让她们根据一定的接口即可火速支付,从而升高社团对工作模块的横向切割和高效支付的作用,更好、统一、高效到位公司化应用框架的搭建和动用。

2、菜单帮助动态配置,可根据用户权限进行动态控制显示

相似Winform程序中,菜单都以向来写在主程序中的,那样对于修改和护卫菜单的连锁消息,可能有所不便,而且对于插件化应用,新增菜单是周边的作业,那样就须求对菜单举办动态配置管理了,通过后台菜单的布局和权限的指定,可以完成菜单的动态加载和权杖验证。

为此菜单也是权力分配的一部分,为了有效管理菜单资源,我们把菜单放到权限管理连串中开展管理控制。

Oracle 4

设定好菜单的图标和Winform窗体类型,就能在Winform框架中动态创设菜单音讯了。菜单的图样放置在系统的相对目录下即可。

Oracle 5

Oracle 6

 

3、集成种种独立开发好的模块,如权限管理连串、字典管理模块等,自动更新模块等

 3.1 权限管理模块

权力的分红和管制,基本上是每种事情体系需求考虑的事物,而那一个常用的事物,在全体Winform开发框架中,把它当作一个独门的模块,既方便维护管理,也留有接口很不难开展集成,这样可以在类型中再三进行利用。

权力系统要求考虑的体系用户、协会部门、角色、权限定义及分红、菜单管理、用户登录日志等有关音讯。对于每新增一个系统,大家只必要在权力管理连串中增加一个种类类型定义,以及相关的效益、菜单数据即可,相当方便管理。

Oracle 7

3.2 字典管理模块

除此以外,除了权力的保管,字典管理也是正规工作模块的一个总要作用,由此字典管理模块在Winform开发框架中,也是一个独门的模块举行支付管制,在使用的时候举行合并即可。

字典的分类可以按多级进行分类管理,可以拖拉进入新的归类,分外便利。

Oracle 8

3.3 自动更新模块

貌似景观下,为了使得管理应用程序的公布及更新,大家要求软件匡助远程自动更新功用;在Winform开发框架中再引入一个电动升级更新的通用模块,那一个活动升级的通用模块除了具备一般的效应外,能够因而安顿程序标题、升级路线方法等方法,已毕通用化的擢升操作,其余急需升级的程序,拿过来就可以动用,经过项目标结合及优化,已经颇具较好的使用前景了。

本通用自动更新模块具有上面多少个特色:

1)程序标题可安顿,更新路径可布置,适用于各样须求更新的体系组成。

2)匡助文件复制可能对裁减包举行解压,适合愈来愈多琐碎程序集的一体化进步。

3)扶助文件更新后自行启动,可能带参数的起步格局。

Oracle 9

4、可重复使用的系统基础模块,Winform分页控件和.NET开发公用类库等

4.1 Winform分页控件

为了加强数据的获取及体现效用,一般意况下,大家都急需对数码开展分页获取和出示,在网络化环境,这种办法获取数据特别首要,在Winform里面,没有现成的分页控件可以应用,由此出于这些考虑,把数据浮现、数据导出、数据打印等很多效益集成一起,特别方便使用。分页控件完美帮衬列表数据的分页,可以调整突显列及顺序,是不是出示复选框,字段别名,奇偶列的颜料变化,列音信提醒和多少复制等等众多实用细致的出力的。

列表的数额绑定及浮现代码,通过代码生成工具,能够一键生成所需的界面代码,开发作用飞一般的升级换代。

Oracle 10

Oracle 11  

4.2 .NET公用类库

俗话说,一个无名壮士十个帮,兵多将广等都证雅培(Abbott)个道理,有更加多的资源,更丰富的累积,都以助你走向成功,走向极限的牵引力。就我们开发者而言,其中技术的聚积、资源的积攒,就是相仿一个个英雄、一根根好柴,是大家可以举办火速开发的保管和拉引力。

那些类库是自个儿从事多年软件开发,逐步提炼和意识的有些闪光点恐怕好一些,有些是吸收外人的不错的东西,有些是上下一心逐渐提炼的精髓,以前,在互联网上来看部分开源的品种,总会先看看其是还是不是有包装优秀、成效独立的支持类库,发现好的帮衬类库,总是美滋滋若狂好一阵子,学习中逐渐积累,探讨中国和日本渐提炼,多年过后,略有小成,终为后天所介绍的救助类库集合。这么些帮扶类库平时也并不是享有的都会用得上,不过有些常用的,大概各种档次就会用到,类库涉及面相当广,可以为我们付出节省比比皆是年华,并且大家也得以依照本人的内需展开扩张完善,形成和谐的类库集合。

博客公用类库在线支持文档列表:

 蓄势待发,丰裕的公用类库积累,助你急速开展系统开发(1)—-开篇计算
 蓄势待发,充分的公用类库积累,助你疾速开展系统开发(2)—-常用操作
 蓄势待发,丰硕的公用类库积累,助你快捷开展系统开发(3)—-数据库相关操作
 蓄势待发,丰硕的公用类库积累,助你神速开展系统开发(4)—-CSV、Excel、INI文件、独立存储等公事有关
 蓄势待发,丰裕的公用类库积累,助你快捷开展系统开发(5)—-热键、多线程、窗体动画冻结等窗体操作
 蓄势待发,丰裕的公用类库积累,助你快捷开展系统开发(6)—-全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作等
 蓄势待发,丰硕的公用类库积累,助你迅速开展系统开发(7)—–声音播放、硬件信息、键盘模拟及钩子、鼠标模拟及钩子等设备相关
 厚积薄发,丰裕的公用类库积累,助你急速开展系统开发(8)—-非对称加密、BASE64加密、MD5等常用加密处理 
 蓄势待发,丰裕的公用类库积累,助你连忙开展系统开发(9)—-各样常用协理类
 蓄势待发,丰盛的公用类库积累,助你迅速开展系统开发(10)—种种线程同步的集合类
 蓄势待发,充足的公用类库积累,助你飞速开展系统开发(11)—各类线程相关操作类
 厚积薄发,丰硕的公用类库积累,助你快速开展系统开发(12)—
互连网有关操作协理类

5、代码生成工具Database2夏普的三结合

任何框架通过与代码生成工具Database2Sharp进行合营,可以一键变更全体性框架代码,Winform系统界面代码,开发更便捷。

Oracle 12

在整整Winform开发框架中,Database2Sharp生成出来的代码浮现了尤其完美的整合性,可以无缝接入开发的框架体系中,无论是常规的事情逻辑和数码访问层代码,以及一些列表、编辑界面的Winform界面代码,都能很快转移,稍作调整即可满意工作模块的内需。

Database2夏普是一个粗略点击五次鼠标就能一气呵成七日代码量的代码生成工具,作用惊人、友好敬爱,真正的支出好伴侣。提供了对SqlServer
2000、SqlServer
2005、Oracle、Mysql、Access、SQLite的支撑;可以扭转各个架构代码、Winform界面代码,并且和Winform开发框架周到组合,突显出更高的费用效用。

Oracle 13

6、通用的Excel数据导入导出,能急速导入自定义模块的Excel数据,疾速导出列表数据

是因为一般的事务系统,常常性的多少导入时很正常的事体须求,因为毕竟使用Excel来操作数据也很便利,大概是因为系统之间的数据互换要求,我们须求提供一个进口给客户导入所要求的数目。不过导入数据的时候,差其他业务数据对应差距的Excel文件,很难做到统一,但如即使各个业务模型,都制造一个见仁见智的导入界面来操作Excel数据,又会认为说不定某种程度上重复劳动,伸张支出及维护资金。

那就是说有无一种介于两者之间的点子,来兑现作用的最优化,并且可以合并运用好一个导入的界面呢,在付出世界,只要能体悟的,一般也能形成,由于工作的要求,在自作者的Winform开发框架中引入了一个通用的数据导入模块,来促成这一个既是联合,又是生成的工作需求。Winform框架提供的个通用的Excel数据导入导出机制,通过代码生成工具Database2Sharp自动生成的代码,就隐含了什么行使这几个通用导入模块的连锁代码以及该模块的导出数据的代码,大家要做的就是在系统运行起来,导出一些数目作为某个模块的Excel模板即可。上面的机能按钮就是应用代码生成工具自动生成的界面包涵的按钮。

Oracle 14

通用数据导入功能,包蕴上边几个地点的内容。

Oracle 15

下边就是一个实际变化的功能模块,其导入界面的运行效果。

Oracle 16

在最底的状态栏里面,但大家保留数据的时候,会调用后台线程举办多枢密使存,并显示数据导入的进度景况,由于是运用后台线程处理,不会阻塞当前的界面,在多文档的Winform开发框架界面中,可以切换来任何事情界面进行其余处理,不影响总体界面操作。

7、自定义Excel自定义模板报表的变更,生成各类繁复的Excel报表

有的是状态下,我们须求变更相比较规范的Excel模块,由此自定义模板报表就是一种很好的方案,Winform开发框架提供了七种自定义Excel报表的转变。

Oracle 17

应用普通的二维表,就算能知足半数以上的情事,不过在一般的事务中,自定义模板的表格依据贴近实际,符合客户的渴求,尽管自定义模板的表格,比常见的二维报表复杂一些,不过使用Apose.Cell控件,并在预设模板中预设变量,可以生成很复杂的表格。

现实的自定义模板报表可以参见下自个儿统计的两篇小说。

使用Aspose.Cell控件完成Excel高难度报表的扭转(一)

选用Aspose.Cell控件完毕Excel高难度报表的变型(二)

比如生成一个正经的出库单,那么些表单有表头新闻,列表数据音信,并非一个日常的二维表,而且那种格式比较固定,因而很合乎自定义模块报表的变更操作。

Oracle 18  

 其余布置模板如下所示:

 

Oracle 19 

其实变化的报表如下所示:

Oracle 20

8、强大通用的总括图表模块,数据统计更有利

计算图表在诸多种类都或然用到,集成到框架中,更便民我们对有些图形项目的筹划精通以及功用的拔取。在形似的古板的框架中,可以行使ZedGraph开源控件大概微软自带的MSChart进行图片设计,DevExpress控件套件有自个儿的图纸控件,那里最主要介绍基于DevExpress控件的图形控件进行图片设计。

8.1 普通计算图表

那边指的家常总计图表,只是对表某一品类开展单一的计算,可以从饼状图、柱状图的图形中显示那些品种分级所占的比重和数值,在Winform框架中的普通总括图表模块中,包含了饼状图、柱状图和数目表格,那样更便于对数据开展周全的分析和查阅。整个模块是足以接纳的,指定字段属性就可以相比较合理的展现出差距分类项目标计算功用了,具体职能图如下所示。

Oracle 21

上面的总结图表中,还含有了上边五个功用模块,如下所示。

Oracle 22

Oracle 23

8.2 动态项目统计图表

偶然,对于表里面的数据,或然要对两样档次的故事情节展开动态的计算,以确定他们各自的比重情形,那么那几个动态项目的计算图表就相比较适度了,例如,对于患儿资料的管住,或者须要计算各样病种所占的比重或然各样工作门类的犯病率,那一个不太确定的计算项目,就需求一个可见接济动态项目标总计图表举行支撑,对于本Winform框架,为了较好表现这一个类型报表的含义,我选拔了对备件类型所占的比重举行一个总括分析,获得上面的总计图表,如下所示。

Oracle 24

地点的图样总结,除了可以根据部分规范举办限制查询范围外,还是可以对一部分预设的统计字段举办动态选取,然后依据字段里面的各类内容(总结项目)进行计算,那样就足以比较实惠的计算出各体系型的数值和比重了。

8.3 多重坐标相比较总括图表模块

在Winform框架之中,可以对某一年各月份的出入库数量举办一个分析,拿到上边的总结图。

Oracle 25

上述数量不多,呈现只怕不太赏心悦目,上面笔者付出作者另一个软件系统的界面,其中对伤者的出入院记录举行一个计算比较分析,总括报表如下所示。

Oracle 26

9、基于多数据库的数码查询模块和通用高级查询模块,查询数据更便利

在自我的Winform开发框架中,使用了一个查询协助类SearchCondition来促成查询条件的拿走和中转,那个援助类内置了对两种数据库条件的辨析处理,由此可以很好转变所须要的多寡查询条件,正确高效获取所需的数据开展显示。

        /// <summary>
        /// 根据查询条件构造查询语句
        /// </summary> 
        private string GetConditionSql()
        {
            //如果存在高级查询对象信息,则使用高级查询条件,否则使用主表条件查询
            SearchCondition condition = advanceCondition;
            if (condition == null)
            {
                condition = new SearchCondition();
                condition.AddCondition("ItemName", this.txtName.Text, SqlOperator.Like)
                    .AddCondition("ItemBigType", this.txtBigType.Text, SqlOperator.Like)
                    .AddCondition("ItemType", this.txtItemType.Text, SqlOperator.Like)
                    .AddCondition("Specification", this.cmbSpecNumber.Text, SqlOperator.Like)
                    .AddCondition("MapNo", this.txtMapNo.Text, SqlOperator.Like)
                    .AddCondition("Material", this.txtMaterial.Text, SqlOperator.Like)
                    .AddCondition("Source", this.txtSource.Text, SqlOperator.Like)
                    .AddCondition("Note", this.txtNote.Text, SqlOperator.Like)
                    .AddCondition("Manufacture", this.txtManufacture.Text, SqlOperator.Like)
                    .AddCondition("ItemNo", this.txtItemNo.Text, SqlOperator.LikeStartAt)
                    .AddCondition("WareHouse", this.txtWareHouse.Text, SqlOperator.Like)
                    .AddCondition("Dept", this.txtDept.Text, SqlOperator.Like)
                    .AddCondition("UsagePos", this.txtUsagePos.Text, SqlOperator.Like)
                    .AddCondition("StoragePos", this.txtStoragePos.Text, SqlOperator.Like);
            }
            string where = condition.BuildConditionSql().Replace("Where", "");
            return where;
        }

    /// <summary>
    /// Sql的查询符号
    /// </summary>
    public enum SqlOperator
    {
        [Description("Like 模糊查询")]
        Like,

        [Description("Not LiKE 模糊查询")]
        NotLike,

        [Description("Like 开始匹配模糊查询,如Like 'ABC%'")]
        LikeStartAt,

        [Description("= 等于号")]
        Equal,

        [Description("<> (≠) 不等于号")]
        NotEqual,

        /// <summary>
        /// > 大于号
        /// </summary>
        [Description("> 大于号")]
        MoreThan,

        [Description("<小于号")]
        LessThan,

        [Description("≥大于或等于号 ")]
        MoreThanOrEqual,

        [Description("≤ 小于或等于号")]
        LessThanOrEqual,

        [Description("在某个字符串值中")]
        In
    }

其它,一个好的数据查询
,一般有一个强大的高级查询模块,那几个模块在很多程序中都很宽泛,也是给客户增添查询的一个很好的补充,由于自个儿直接愿意本人的Winform开发框架可以改革,所以做了这一个通用高级查询模块,希望对之后作者本身所有的品类以及框架本人,都能很快的利用。

Oracle 27

 在介绍输入条件的时候,我们注意到,查询输入,基本上可以分成几类:其一是正规的公文类型,使用文本框替代即可;其二是下拉列表类型,用户从列表上边接纳内容;其三是日期类型,要求用户指定开头日期和截至日期;其四是数字类型,要求用户指定起首和终止的数值。

1)常规的公文类型标准输入界面:

Oracle 28

2) 下拉列表类型条件输入界面:

Oracle 29

3) 日期类型标准输入界面:

Oracle 30

4) 数字类型标准输入界面:

Oracle 31

10、框架提供依照七种数据库(Sqlserver/Oracle/Mysql/Sqlite/Access)的结缘

纵然如此大家在骨子里项目中,一般接纳一种数据库进行处理,不过不一致的类型,接纳的数据库类型恐怕差异,本Winform开发框架为了有利于演示和增添的内需,内置支持了Sqlserver/Oracle/Mysql/Sqlite/Access,越来越多的数据库,也可以经过增加数据库访问基类的艺术开展愈多数据库的援救。

Winform开发框架之中的具备模块,如用到了数码存储的,如权限管理管理模块、通用数据字典管理模块,均放置协助那三种数据库的结合扶助。整个Winform开发框架的数据库访问,可以手动配置数据库类型,对于同一种数据库,也足以把数量存储分开储存,如工作数据存储在一个数据库,权限管理控制存储在此外一个数据库这种方式。

Oracle 32

Winform开发框架提供三种数据库帮衬,数据访问基类照旧很简单,因为大家运用的数据库访问模块是EnterpriseLibrary,把数据库抽象化,并且作者把具有数据库通用操作放在了一个最佳基类上,具体的数据库基类只须求贯彻转移的一对即可。业务访问类则动用泛型进行打包处理。

之所以,Winform开发框架提供了莫大封装的多少访问基类,开发代码更少更便捷。

11、框架界面基类也进展合并封装,使用更便于,效果更统一

为了更好开发常用界面模块,Winform开发框架把部分公用的界面模块,统一放置在了一个BaseUI的体系中,把其中的通用高级查询、通用数据导入模块、常见处理界面基类,插件接口等模块放在一起,依据易于管理和运用。这样开发的模块,重用很多正常的界面,开发功用更快,使用更有利,效果更统一了。

Oracle 33

12、框架提供基础性的帮助,包含合并登陆、闪屏、托盘效率,以及为插件模块提供登陆用户音信和系统消息

整套Winform开发框架,是有一个框架启动模块进行集中处理的,系统启动后,用户登录处理后,通过动态加载菜单和插件模块,并在主旨框架界面中开展显示,提供权限决定和登录用户音讯等地点的框架襄助。此外框架协助闪屏图片的动态配置,系统激活热键和托盘裁减灯效率。

Oracle 34

由于系统登录后,框架自身蕴藏了用户登录和权力音信,框架动态加载某个模块后,会把用户音讯和权限决定新闻,注入到模块的界面基类中,因而插件的界面模块只如若继承了BaseUI的界面基类,就可以收获到用户音信和权杖控制消息了。

性情总括

Winform框架,本身就是为着可以飞快支付一个飞跃、稳定、赏心悦目大方、伸张性强的运用软件系统。由此小编在温馨十年左右的共享软件开发生涯以及集团项目费用中,不断揣摩,精雕细琢,对许多第一的特色都开展了汇总和进步,吸收项目中好的闪光点,借鉴一些好的软件开发思路,力求把软件做的更好;在开发成效方面,除了支付一些正常通用的模块、在模块内部又充足考虑继承、重用的平整,还对大幅度升高功用的代码生成工具,依照Winform开发框架的已毕思路和特征,举办了包括万象优化,使得无论在作业代码生成,如故在界面代码生成方面,均能把开发作用发挥到极致,希望任何Winform开发框架可以不断发挥它的魔力和魅力,为越来越多的人带来希望,体验开发的童趣。

相关文章