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公用类库

俗话说,一个烈士十个帮扶,众人拾柴火焰高等还印证一个理,有还多的资源,更增长的聚积,都是扶助你走向成功,走向极端的推动力。就咱们开发者而言,其中技术的积聚、资源的聚积,就是近乎一个个好汉、一完完全全根好柴,是我们能够进行高效开发的保险和推动力。

这些类库是自己从多年软件开发,逐渐提炼和意识的部分闪光点或者好一些,有些是收到别人的上佳的事物,有些是自己逐渐提炼的精粹,以前,在网络直达来看有的开源之路,总会先行瞧该是否发包装好、功能独立的扶助类库,发现好的协助类库,总是喜欢若狂好一阵子,学习着逐年积累,研究被日益提炼,多年了后,略发小成,终也今日所介绍的增援类库集合。这些帮扶类库平时也并无是兼备的还见面因此得上,不过有的常用的,几乎各个档次就见面就此到,类库涉及面非常大,能够为咱开发节省成千上万时光,并且我们为得以依据自己的要展开扩展到,形成协调之类库集合。

博客公用类库在线帮助文档列表:

 厚积薄发,丰富的公用类库积累,助你飞开展系统出(1)—-开篇总结
 厚积薄发,丰富的公用类库积累,助你快速开展系统出(2)—-常用操作
 厚积薄发,丰富的公用类库积累,助你快速开展系统开发(3)—-数据库相关操作
 厚积薄发,丰富的公用类库积累,助你速开展系统出(4)—-CSV、Excel、INI文件、独立存储等公事有关
 厚积薄发,丰富的公用类库积累,助你快速开展系统开发(5)—-热键、多线程、窗体动画冻结等窗体操作
 厚积薄发,丰富的公用类库积累,助你速开展系统开发(6)—-全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作等
 厚积薄发,丰富的公用类库积累,助你速开展系统出(7)—–声音播放、硬件信息、键盘模拟与钩子、鼠标模拟和钩子等设施相关
 厚积薄发,丰富的公用类库积累,助你速开展系统出(8)—-非对如加密、BASE64加密、MD5等常用加密处理 
 厚积薄发,丰富的公用类库积累,助你快速开展系统开发(9)—-各种常用辅助类
 厚积薄发,丰富的公用类库积累,助你快开展系统出(10)—各种线程同步的集合类
 厚积薄发,丰富的公用类库积累,助你速开展系统开发(11)—各种线程相关操作类
 厚积薄发,丰富的公用类库积累,助你飞开展系统出(12)—
网络有关操作辅助类

5、代码生成工具Database2Sharp的重组

整套框架通过和代码生成工具Database2Sharp进行配合,能够一键变整体性框架代码,Winform系统界面代码,开发还速。

Oracle 12

当所有Winform开发框架中,Database2Sharp生成出来的代码体现了老大健全的整合性,能够无缝过渡抱开发之框架体系受到,无论是常规的事情逻辑与多少访问层代码,以及一些列表、编辑界面的Winform界面代码,都能够很快变化,稍作调整即可满足工作模块的待。

Database2Sharp是一个简单易行点击几坏鼠标就能够完成同样周到代码量的代码生成工具,效率惊人、友好体贴,真正的开好伙伴。提供了对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开发框架能够持续发挥它的魅力以及吸引力,为更多的口带希望,体验出的童趣。

相关文章