精华内容
下载资源
问答
  • Winform开发框架

    2014-04-07 11:55:13
    简单的Winform开发框架 初学者的好例子
  • winform开发框架

    热门讨论 2012-07-11 19:26:11
    一个高手写的winform开发框架
  • 我在随笔《Winform开发框架之框架演化》和《Winform开发框架之混合型框架的实现》都对Winform框架的变种,混合型框架进行了比较详细的介绍,本文继续上篇对混合型框架进行进一步的说明。混合型框架为了支持WCF方式和...
  • Winform开发框架方面的文章我介绍很多了,有宏观介绍,也有部分技术细节的交流,每次我希望能从不同角度,不同方面来介绍我的WInform开发框架,这些其实都是来源于客户的需求,真实的项目场景。本文主要介绍Winform...

    Winform开发框架方面的文章我介绍很多了,有宏观介绍,也有部分技术细节的交流,每次我希望能从不同角度,不同方面来介绍我的WInform开发框架,这些其实都是来源于客户的需求,真实的项目场景。本文主要介绍Winform开发框架的各种演化,适合在各种系统应用场景下的使用过程。Winform开发框架,从技术方向上讲,可以分为传统的Winform开发框架,WCF开发框架。对于这两种分类,根据数据存放的位置不同,也可以演化成多种应用模式。下面分别对这些演化的Winform框架进行介绍。

    1、传统Winform开发框架

    我这里指的传统Winform开发框架,就是利用数据库中间件,直接访问数据库的一种应用框架,根据数据库管理系统部署的位置的不同,可能分为单机版(如Access数据库、Sqlite数据库等),局域网网络版(如SqlServer、Oracle等数据库),局域网网络版,一般需要的是把数据库部署在局域网另外一个电脑上,这样应用和数据库分开,也有利于性能的提高和数据的分享。

    这种开发模式,在dotnet里面,就是利用基于ado.net的操作,实现数据的直接访问,是一种比较常规的开发模式,不过问题,就是,不能通过互联网进行数据的访问,只能在单机或者局域网的环境下进行业务管理系统的部署和使用,相对目前很多分布式的应用来讲,有一定的局限性。

    不过这种方式也是很常见的模式,常用在一些内部业务管理系统或者一些工作流系统的维护上,由于Winform的体验性比较好,数据也能有效管理控制,开发部署成本也相对较低,系统开发效率以及应用性能也比较高,因此是一种比较常见的框架表现模式。

    如下面我的Winform开发框架界面,就是一个比较标准,传统式的界面,这种界面一般大家都比较常见。

    这种Winform开发框架 是通过数据访问层访问各种指定的数据库,如SqlServer或者Oracle等,一般底层封装好一点的框架,基本上都会支持多种数据库,方便在不同的业务中使用。我的传统Winform开发框架的架构设计图,如下所示。

     

     

    2、传统WCF开发框架

     除了以上的传统的WInform开发框架,基于WInform的技术和WCF的分布式技术,形成了另外一种Winform开发框架,即为WCF开发框架,我这个WCF开发框架的介绍也比较多,绝大多数都是来源于真实的项目应用。其实WCF技术,即可用于Winform上,也可以用于Web上,WCF技术可以用在很多领域,如Web开发、类似Socket通讯的即时通讯应用等,这里介绍的WCF开发框架,是基于Winform的基础上使用的WCF开发框架。

    这里定义的传统WCF开发框架,是指利用WInform框架的模式,来承载B/S的方式获取数据进行展示,本地不存储数据。就是直接获取数据并在列表控件或者其他基础控件上显示数据。

    由于WCF框架应用了很多新的技术,以及是基于分布式网络环境的应用,因此,需要考虑服务的部署,数据访问的安全性(用户名密码访问、X509证书加密、其他授权访问),数据响应以及错误处理等方方面面,如果是第一次接触,没有很好的指导及案例学习,可能消化相关的概念并理解,就需要一个不短的过程。

    传统的WCF开发框架,由于是本地不缓存数据,实时通过WCF服务代理,向WCF服务请求数据,获取数据后进行显示的过程,开发思路相对比较简单,因此这种方式在很多WCF应用上,是比较常见的一种。

    传统的基于Winform的WCF开发框架,界面可以和上面的Winform开发框架界面一样,不过它的获取数据的机制不同,它不是通过数据访问类访问本地的数据库,而是通过服务器公布WCF服务来获取不同数据对象,然后再Winform中进行展现,如下面是它的一个访问机制的示意图。

    对于这个传统的WCF开发框架的架构,它其实是通过Winform的客户端WCF代理类,实现和远端服务器的WCF服务进行通讯,一般是基于Soap协议的XML格式,当然可以很好的配置加密机制,如X509证书加密,这样传输数据就比较安全,同时对于WCF服务,还可以采用基于自定义的用户名、密码的验证方式来有效提高WCF服务接口的安全性。以下是WCF开发框架的架构设计图,我们从中可以看出,它的应用程序的界面表现层是和WCF服务客户端代理层有关联,而代理层和WCF服务层有关联,这种隔绝了应用程序直接访问数据库的弊端,提高数据安全性,同时也使得应用程序实现了分布式的开发应用。

     

     

    3、离线式WCF开发框架

    相对于上面介绍的传统式WCF开发框架,这种离线式的WCF开发框架 ,就是结合了传统Winform开发框架的数据访问方式,又利用了WCF分布式数据获取的特点,使得数据可以离线使用,在一种业务要求集中化,又要求不影响正常业务操作的应用系统场景下比较适合,如我的送水管理软件网络版,就是利用这种模式,分店可以独立维护数据,没有网络也一样可以正常进行业务操作,但是在网络畅通的时候,可以向总店发送分店的数据,或者获取总店的公共数据。

    这种离线模式的WCF开发框架,是一种对网络环境要求不高,既可以独立使用,又可以和总部发生业务数据往来的一种模式。这种场景下,如果不考虑数据同步及上传的情况下,他就是一个传统的Winform开发框架模式。

    考虑数据同步,就会使得整个离线式的系统可能更加复杂,要求可能需要自身记录可能的数据变更(添加、修改、删除),还需要经常性的同步系统公用数据,如果要求同步的间隔比较短,那么我们就要多考虑一些因素。

    离线式的WCF开发框架,数据存储我们一般选择单机版、方便部署复制的Sqlite数据库,或者Access数据库,在一些特别的情况下,才会选择比较大的SQLServer数据库或者Mysql数据库,由于WCF开发框架的应用客户端和服务器版本的数据库不同,如果没有比较弹性化、支持多数据库的WCF开发框架,这种开发模式,就会比较吃力繁琐。

    离线式的WCF开发框架,一个特点就是基本上显示,以及保存等操作数据库的数据,都是本地的数据库,不是远端的服务器数据库,这样,就需要记录所有发生变更的数据库操作,包括写入,删除、修改等,以便在网络畅通的情况下,可以上传数据到服务器上面。

    和上面第二点介绍的传统式WCF开发框架,这个就是多了一个本地数据库,这样可以提高数据的网络依赖性,其他日常操作的响应,在一些网络环境不经常连接的地方,可以很好的发挥作用,而且,通过实现把需要更新的数据导出到文件中,还可以实现数据的离线式同步,基本上可以完全独立于网络了。

    这个模式的WCF框架架构图,是综合了Winform开发框架架构设计图和WCF框架架构设计图的特点,既有访问本地数据库的模块,也有访问操作WCF服务的模块,在不同的地方发挥不同的作用。 

     

    4、混合式WCF开发框架

     除了以上几种,还有一种是可以在传统winform开发框架和WCF开发框架之间自由切换,这种其实用传统式WCF开发框架或者离线式WCF开发框架就可以解决,不过有些人觉得在局域网里面访问WCF服务,有点小题大做,而且性能也有一定的损失,那么就可以在界面调用具体操作数据类的时候,封装多一层,通过配置来指向WCF代理类还是Winform框架中的业务访问类,这种确实也可以实现的。

    还有一种情况,就是把系统划分为很多万能模块(既适应WInform集成,也适应WCF集成),在不同的场合进行不同的开光切换,而且只是一个条件语句的跳转,就可以实现具体的切换,这样非常有利于模块的集成封装。

     

    综上所述,我自己在各种项目的框架应用选择上,都是以最适合客户场景来进行选型,如一般的小型的业务管理系统,用Winform开发框架能快速给客户做好系统开发;而对于要求分布式的业务管理系统,工作的时候网络不成问题的这种,我一般就选择传统的WCF开发框架;而对于复杂的,网络不能保证的,要求分布式应用,数据集中管理的,一般采用离线式的WCF开发框架。如果为了更好开发集成模块,适应各种场景的集成,那么就可能要求模块具有混合式WCF开发框架的特点。

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发 专注于Winform开发框架Web开发框架、WCF开发框架、微信门户开发框架的研究及应用。   转载请注明出处: 撰写人:伍华聪  http://www.iqidi.com 

    转载于:https://www.cnblogs.com/qq260250932/p/5346977.html

    展开全文
  • c#winform开发框架

    热门讨论 2012-05-05 00:47:39
    一款还不错的C#winform开发框架,对于想学习C#框架的初学者来说,是很值得借鉴的
  • Winform开发框架源码 devexpress 管理系统源码 C# .NET 多主题 net开发框架,通用权限管理系统,仓库管理系统源码。 开发模式:C/S C/S采用的是dev14.1插件,界面美观大方,多种主题切换,是目前最流行的UI插件。 ...
  • Winform开发框架之终极应用

    千次阅读 2018-08-02 12:03:27
    在前面两篇随笔,都围绕着我的Winform开发框架介绍一些重要的组件,如字典模块封装《Winform开发框架之字典数据管理》和权限管理系统模块封装《Winform开发框架之权限管理系统》。本框架主要的
    原文地址为:Winform开发框架之终极应用

    在前面两篇随笔,都围绕着我的Winform开发框架介绍一些重要的组件,如字典模块封装《Winform开发框架之字典数据管理》和权限管理系统模块封装《Winform开发框架之权限管理系统》。本框架主要的功能如下面的图示所介绍的内容:包括紧密结合Database2Sharp强大的一键解决方案代码生成工具、高度抽象继承及使用泛型支持多数据库的开发框架、集成权限管理系统模块、集成字典数据管理模块、集成强大的分页控件、集成OutLookBar界面控件、集成多文档界面Weifengluo布局控件、集成美观实用的登陆界面、闪屏展示界面、托盘缩小提示功能、全局运行一次实例限制模块代码、集成多年积累公共组件简化常用功能操作、集成Apose.Cell基于模板自定义报表快速生成复杂报表模块、众多美观使用的界面控件整合等等。

     

     

    该框架是集多年Winform开发经验及总结之大成,及众多博客随笔精华于一身,不断完善,不断改进,当然,框架不能形而上学而存在,因此通过本人最近一次完善的仓库项目并经过多次锤炼的成果进行展示。

    本框架目标是确保开发者能够拿过来就用,拿过来只需要添加自己额外的业务界面功能即可,不需要重复开发基础功能模块和相关界面处理,尽可能的节省开发时间,并迅速给阁下的客户展示美观、完善、强大的界面及功能,快速完成一个复杂的项目为目标。

     



     

     
     
     


    软件框架界面采用了众多功能的集成,因此对于有意学习Winform开发的人来说,虽然不是一本Winform开发百科全书,但也是一部不可多得的代码宝库,在众多地方都可以找到相应的解决方法,对于想快速、高效开发规范、稳定的项目的人来说,在这个不错的框架上搭建业务应用,更是事半功倍。

    该开发框架项目演示程序可以随意下载研究,但源码有偿提供不免费赠送,需要者可以和我联系,或者可以一起沟通讨论相关的内容。

    演示程序下载地址如下:http://files.cnblogs.com/wuhuacong/DeviceMis.rar


    转载请注明本文地址:Winform开发框架之终极应用
    展开全文
  • winform开发框架介绍

    万次阅读 多人点赞 2017-11-05 19:51:50
    winform开发框架,尽量减少程序员在界面中的代码量和工作量,Model自动生成,界面以及控件自动生成,简单的逻辑自动生成。自动生成的界面已经实现简单逻辑增删改查功能。 其他开发框架都已经或多火烧实现了这些功能...

    winform开发框架,尽量减少程序员在界面中的代码量和工作量,Model自动生成,界面以及控件自动生成,简单的逻辑自动生成。自动生成的界面已经实现简单逻辑增删改查功能。

    其他开发框架都已经或多火烧实现了这些功能,如果代码生成工具是VS插件呢,省去了复制粘贴加载项目步骤,是不是有点小惊喜?来感受下吧:

    项目插件

    项插件:

     

     

    框架总概括图:

    .net开发框架

    框架下载地址:链接:http://pan.baidu.com/s/1kT3t8Gn 密码:xnzo

    share Demo源码地址:https://github.com/GarsonZhang/GZFramework.ShareDemo

     

    框架全部源码概图:

    image

    数据库支持多种数据库,如果需要外部DLL的数据库,除了引用相关dll外,比如Sqlite,Oracle需要配置Appconfig

    image

    image

     

    注意type值一定要和引用的DLL对应,获取方法:

    Assembly.LoadFile(AssemblyFileName).ToString()

     

    主界面演示:

     

    代码生成器插件简单演示:

     

     

    框架下载地址:链接:http://pan.baidu.com/s/1kT3t8Gn 密码:xnzo

    share Demo源码地址:https://github.com/GarsonZhang/GZFramework.ShareDemo

    展开全文
  • 最近一直致力于Winform开发框架的重构工作,因为发现要维护传统Winform开发框架、WCF开发框架、混合式开发框架,以及相关的模块,包括权限管理、字典管理模块、附件管理、人员管理等一些辅助模块,很多代码都会有...

    最近一直致力于Winform开发框架的重构工作,因为发现要维护传统Winform开发框架、WCF开发框架、混合式开发框架,以及相关的模块,包括权限管理、字典管理模块、附件管理、人员管理等一些辅助模块,很多代码都会有重复的部分,优化的框架是想提高效率,减少冗余重复代码,本文总结Winform开发框架重构工作中的一些经验总结,以飨读者,希望能够对大家有一定的参考作用。

    1、公用类库的分离处理

    我的公用类库是自己开发这么多年的总结、收集和整理,对大多数的类库均进行优化整理过,公用类库的本意是对.NET内置的类库进行包装使用,提高使用效率和减少复杂性,随着开发项目的增多和不断的总结,有时候一些常用的第三方类库包装类也很常见,使用很频繁,经常在各个模块中使用,因此把框架中常用到的类库分为两类,一个是".NET内置类公用类库“,一个是第三方类库的包装类,如我经常用到的Aspose.Cell、Apose.Word、NPOI、Myxls等Office相关类库的包装类,还有Log4Net日志类、Zip压缩类库等等,如下界面是一个截图。

    这样虽然在管理上增加多了一个公用类库的程序集,但是这样区分有利于我们对类库的扩展和维护。

    2、Winform框架基类的封装和独立

    在这次的重构工作中,很大程度上是提取所有框架和模块中用到的各种基类到一个第三方类库包装类里面,然后在框架里面统一使用这个类库,如原来数据访问里面常用到的BaseBLL、BaseDAL、IBaseDAL、AbstractBaseDAL,其中BaseDAL虽然继承了AbstractBaseDAL绝大多数的方法,但是不同的数据库还是有一些小差异的,因此把BaseDAL分为了几个不同数据库版本的BaseDAL,包括Access、MySql、Oracle、SqlServer、Sqlite等数据库的基类。

    这样把它们独立出来,不用再每个数据访问的模块都复制一份,而且可以方便统一维护和升级,因为基类和接口一旦增加,所有的业务类都会同时具有增加的功能,非常利于维护扩展。除了数据访问相关的基类,还对WCF服务等相关的基类也进行了抽取,这样在WCF框架或者混合型框架中,就可以直接使用了。

    3、在框架中使用封装独立的基类

    1)传统Winform框架的对象

    把这些框架中常用到的类库独立抽取出来后,整个框架文件就比较简洁很多了,也不用再多个模块经常使用BeyondCompare比较来比较去的,框架业务层和数据访问层的项目截图如下所示,业务层除了有一个BLLFactory类外,其他的类都是常规的业务处理对象,BLLFactory没有提取到公用类库,是因为需要当前执行类的一些信息来构造业务对象和数据访问对象;SqlServer数据访问层则没有任何多余的辅助类库。

           

    其中SqlServer数据访问层的类,类定义的部分代码如下所示。

    using WHC.Pager.Entity;
    using WHC.WareHouseMis.Entity;
    using WHC.WareHouseMis.IDAL;
    
    using WHC.Framework.Commons;
    using WHC.Framework.ControlUtil;
    using Microsoft.Practices.EnterpriseLibrary.Data;
    
    namespace WHC.WareHouseMis.DALSQL
    {
        /// <summary>
        /// 备件信息数据访问类
        /// </summary>
        public class ItemDetail : BaseDALSQL<ItemDetailInfo>, IItemDetail
        {
                   ......................

    2)混合型框架的对象

    在混合型框架对于WCF或者传统Winfrom数据访问中,我在其中定义了一个通用的接口层---Facade层,然后分两种实现方式,其中Facade层的接口项目文件如下所示,其中可以看到,除了CallerFactory类外,其他部分均为接口定义,基类接口已经抽取到独立的类库里面去了。

    混合型框架的调用示例代码如下所示,其中和传统的Winform调用BLLFactory一样,这里只需要调用CallerFactory构造类即可,而传入给CallerFactory的是Facade层的接口,工厂会根据配置参数进行相应的对象构造,从而实现基于传统本地的数据库访问或者分布式的WCF数据访问方式的综合处理。

                bool exist = CallerFactory<IItemDetailService>.Instance.CheckExist(this.txtItemNo.Text, ID);
                if (exist)
                {
                    MessageDxUtil.ShowTips("指定的备件编号已经存在,不能重复添加,请修改");
                    return false;
                }
    
                ItemDetailInfo info = CallerFactory<IItemDetailService>.Instance.FindByID(ID);
                if (info != null)
                {
    
                     .....................................

    其中Facade层的CallerFactory对象,会根据配置信息,寻找并构建相应的实现类,有可能是传统的数据访问类,也可能是WCF的数据访问类,这两种实现类的定义如下所示。

    using WHC.WareHouseMis.Entity;
    using WHC.WareHouseMis.BLL;
    using WHC.WareHouseMis.Facade;
    
    using WHC.Framework.ControlUtil;
    using WHC.Framework.ControlUtil.Facade;
    
    namespace WHC.WareHouseMis.WinformCaller
    {
        public class ItemDetailCaller : BaseLocalService<ItemDetailInfo>, IItemDetailService
        {
            private ItemDetail bll = null;
    
            public ItemDetailCaller() : base(BLLFactory<ItemDetail>.Instance)
            {
                bll = baseBLL as ItemDetail;
            }
    
            #region IItemDetailService 成员
    
            public List<ItemDetailInfo> FindByBigType(string bigType)
            {
                return bll.FindByBigType(bigType);
            }
    ........................

    而对于WCF方式的实现类方式如下所示

    using WHC.WareHouseMis.Entity;
    using WHC.WareHouseMis.Facade;
    using WHC.Framework.Commons;
    using WHC.Framework.ControlUtil.Facade;
    
    namespace WHC.WareHouseMis.ServiceCaller
    {
        public class ItemDetailCaller : BaseWCFService<ItemDetailInfo>, IItemDetailService
        {
            public ItemDetailCaller()  : base()
            {
                this.configurationPath = EndPointConfig.WcfConfig;
                this.endpointConfigurationName = EndPointConfig.ItemDetailService;
            }public List<ItemDetailInfo> FindByBigType(string bigType)
            {
                List<ItemDetailInfo> result = new List<ItemDetailInfo>();
    
                IItemDetailService service = CreateSubClient();
                ICommunicationObject comm = service as ICommunicationObject;
                comm.Using(client =>
                {
                    result = service.FindByBigType(bigType);
                });
    
                return result;
            }
    ..............

    4 、使用引用文件方式代替复制文件方式

    在一个框架里面,为了减少程序集的数量和多个引用,可能会有多处需要使用同一个文件,这样就可以使用文件引用的方式,在VS里面添加现有文件的时候,选择

    如由于我的某一个框架里面,为了减少程序集的数量,我把很多相关的类库集成在一起,形成一个单一的程序集就具有很多功能,但这样的代码虽然有很多个影子,但是肉身只有一个,方便维护。

    这样对于某个文件的多处使用,但是统一维护很方便。

    5、代码生成工具Database2Sharp的支持

    以上的一些对象继承关系和框架的整体代码,项目工程之间程序集的引用,这些手工操作的话,肯定效率大打折扣,因此代码生成工具的支持是非常必要的工作,本框架系列的最新继承关系,全部能够使用Database2Sharp的完美支持,从而使得我们在日常开发过程中,享受快速、高效、统一的代码生成带来的乐趣。

     

     以上就是我在框架重构中的一些总结,希望能给大家有所启发,有所帮助。最后附上Winform开发框架的一个功能总结图形,Winform开发框架的主要功能概览如下图所示。

     本文转自博客园伍华聪的博客,原文链接:Winform开发框架重构总结,如需转载请自行联系原博主。



    展开全文
  • Winform开发框架之Office Ribbon界面

    千次阅读 2018-07-26 16:10:36
    在前面几篇文章介绍我的Winform框架随笔文章,包括有《Winform开发框架之字典数据管理》、《Winform开发框架之权限管理系统》、《Winform开发框架之终极应用》,其中Winform开发
  • 我在之前一篇文章《Winform开发框架之框架演化》中,介绍了传统Winform开发框架、传统WCF开发框架、离线式WCF开发框架、混合式WCF开发框架,其中前面两种就是大家比较熟悉的框架了,后面的离线式WCF开发框架,我在...
  • Winform开发框架源码 devexpress 管理系统源码 C# .NET 多主题 net开发框架,通用权限管理系统,仓库管理系统源码。 开发模式:C/S C/S采用的是dev14.1插件,界面美观大方,多种主题切换,是目前最流行的UI插件。 ...
  • Winform开发框架之插件化应用框架实现
  • Winform开发框架之统计图表的实现 在前面的一些随笔中,介绍了不少我的Winform框架的特性,上篇随笔《Winform开发框架之通用高级查询模块》对其中的通用高级模块进了一个整理说明,本篇继续介绍Winform开发框架重要...
  • 主要给大家介绍了关于在Winform开发框架中如何使用DevExpress的内置图标资源的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起来看看吧
  • Winform开发框架源码 devexpress 管理系统源码 C# .NET 多主题 net开发框架,通用权限管理系统,仓库管理系统源码。 开发模式:C/S C/S采用的是dev14.1插件,界面美观大方,多种主题切换,是目前最流行的UI插件。 ...
  • Winform开发框架之权限管理系统

    千次阅读 2018-08-02 14:56:51
    在前一篇随笔《Winform开发框架之字典数据管理》中介绍过我Winform开发框架的总体情况,其中最重要的思路就是把常用的模块封装成控件进行重复使用,一则可以避免重复开发,提高开发效率;二则可以使用
  • 我在随笔《Winform开发框架之通用短信邮件通知模块》和《Winform开发框架之通用附件管理模块》等多篇文章中都有介绍我总体的一个Winform开发框架的规划,其实就是开发一个集成度高的Winform开发框架,然后尽可能开发...
  • 从事Winform开发框架的研究和推广,也做了有几个年头了,从最初的项目雏形到目前各种重要特性的加入完善,是经过了很多项目的总结归纳和升华,有些则是根据客户需要或者应用前景的需要进行的完善,整个Winform开发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,853
精华内容 741
关键字:

winform开发框架