日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform开发框架重构总结

發(fā)布時間:2025/6/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform开发框架重构总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近一直致力于Winform開發(fā)框架的重構(gòu)工作,因為發(fā)現(xiàn)要維護傳統(tǒng)Winform開發(fā)框架、WCF開發(fā)框架、混合式開發(fā)框架,以及相關(guān)的模塊,包括權(quán)限管理、字典管理模塊、附件管理、人員管理等一些輔助模塊,很多代碼都會有重復(fù)的部分,優(yōu)化的框架是想提高效率,減少冗余重復(fù)代碼,本文總結(jié)Winform開發(fā)框架重構(gòu)工作中的一些經(jīng)驗總結(jié),以饗讀者,希望能夠?qū)Υ蠹矣幸欢ǖ膮⒖甲饔谩?/p>

1、公用類庫的分離處理

我的公用類庫是自己開發(fā)這么多年的總結(jié)、收集和整理,對大多數(shù)的類庫均進行優(yōu)化整理過,公用類庫的本意是對.NET內(nèi)置的類庫進行包裝使用,提高使用效率和減少復(fù)雜性,隨著開發(fā)項目的增多和不斷的總結(jié),有時候一些常用的第三方類庫包裝類也很常見,使用很頻繁,經(jīng)常在各個模塊中使用,因此把框架中常用到的類庫分為兩類,一個是".NET內(nèi)置類公用類庫“,一個是第三方類庫的包裝類,如我經(jīng)常用到的Aspose.Cell、Apose.Word、NPOI、Myxls等Office相關(guān)類庫的包裝類,還有Log4Net日志類、Zip壓縮類庫等等,如下界面是一個截圖。

這樣雖然在管理上增加多了一個公用類庫的程序集,但是這樣區(qū)分有利于我們對類庫的擴展和維護。

2、Winform框架基類的封裝和獨立

在這次的重構(gòu)工作中,很大程度上是提取所有框架和模塊中用到的各種基類到一個第三方類庫包裝類里面,然后在框架里面統(tǒng)一使用這個類庫,如原來數(shù)據(jù)訪問里面常用到的BaseBLL、BaseDAL、IBaseDAL、AbstractBaseDAL,其中BaseDAL雖然繼承了AbstractBaseDAL絕大多數(shù)的方法,但是不同的數(shù)據(jù)庫還是有一些小差異的,因此把BaseDAL分為了幾個不同數(shù)據(jù)庫版本的BaseDAL,包括Access、MySql、Oracle、SqlServer、Sqlite等數(shù)據(jù)庫的基類。

這樣把它們獨立出來,不用再每個數(shù)據(jù)訪問的模塊都復(fù)制一份,而且可以方便統(tǒng)一維護和升級,因為基類和接口一旦增加,所有的業(yè)務(wù)類都會同時具有增加的功能,非常利于維護擴展。除了數(shù)據(jù)訪問相關(guān)的基類,還對WCF服務(wù)等相關(guān)的基類也進行了抽取,這樣在WCF框架或者混合型框架中,就可以直接使用了。

3、在框架中使用封裝獨立的基類

1)傳統(tǒng)Winform框架的對象

把這些框架中常用到的類庫獨立抽取出來后,整個框架文件就比較簡潔很多了,也不用再多個模塊經(jīng)常使用BeyondCompare比較來比較去的,框架業(yè)務(wù)層和數(shù)據(jù)訪問層的項目截圖如下所示,業(yè)務(wù)層除了有一個BLLFactory類外,其他的類都是常規(guī)的業(yè)務(wù)處理對象,BLLFactory沒有提取到公用類庫,是因為需要當(dāng)前執(zhí)行類的一些信息來構(gòu)造業(yè)務(wù)對象和數(shù)據(jù)訪問對象;SqlServer數(shù)據(jù)訪問層則沒有任何多余的輔助類庫。

? ? ? ?

其中SqlServer數(shù)據(jù)訪問層的類,類定義的部分代碼如下所示。

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>/// 備件信息數(shù)據(jù)訪問類/// </summary>public class ItemDetail : BaseDALSQL<ItemDetailInfo>, IItemDetail{......................

2)混合型框架的對象

在混合型框架對于WCF或者傳統(tǒng)Winfrom數(shù)據(jù)訪問中,我在其中定義了一個通用的接口層---Facade層,然后分兩種實現(xiàn)方式,其中Facade層的接口項目文件如下所示,其中可以看到,除了CallerFactory類外,其他部分均為接口定義,基類接口已經(jīng)抽取到獨立的類庫里面去了。

混合型框架的調(diào)用示例代碼如下所示,其中和傳統(tǒng)的Winform調(diào)用BLLFactory一樣,這里只需要調(diào)用CallerFactory構(gòu)造類即可,而傳入給CallerFactory的是Facade層的接口,工廠會根據(jù)配置參數(shù)進行相應(yīng)的對象構(gòu)造,從而實現(xiàn)基于傳統(tǒng)本地的數(shù)據(jù)庫訪問或者分布式的WCF數(shù)據(jù)訪問方式的綜合處理。

bool exist = CallerFactory<IItemDetailService>.Instance.CheckExist(this.txtItemNo.Text, ID);if (exist){MessageDxUtil.ShowTips("指定的備件編號已經(jīng)存在,不能重復(fù)添加,請修改");return false;}ItemDetailInfo info = CallerFactory<IItemDetailService>.Instance.FindByID(ID);if (info != null){.....................................

其中Facade層的CallerFactory對象,會根據(jù)配置信息,尋找并構(gòu)建相應(yīng)的實現(xiàn)類,有可能是傳統(tǒng)的數(shù)據(jù)訪問類,也可能是WCF的數(shù)據(jù)訪問類,這兩種實現(xiàn)類的定義如下所示。

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方式的實現(xiàn)類方式如下所示

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 、使用引用文件方式代替復(fù)制文件方式

在一個框架里面,為了減少程序集的數(shù)量和多個引用,可能會有多處需要使用同一個文件,這樣就可以使用文件引用的方式,在VS里面添加現(xiàn)有文件的時候,選擇

如由于我的某一個框架里面,為了減少程序集的數(shù)量,我把很多相關(guān)的類庫集成在一起,形成一個單一的程序集就具有很多功能,但這樣的代碼雖然有很多個影子,但是肉身只有一個,方便維護。

這樣對于某個文件的多處使用,但是統(tǒng)一維護很方便。

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

以上的一些對象繼承關(guān)系和框架的整體代碼,項目工程之間程序集的引用,這些手工操作的話,肯定效率大打折扣,因此代碼生成工具的支持是非常必要的工作,本框架系列的最新繼承關(guān)系,全部能夠使用Database2Sharp的完美支持,從而使得我們在日常開發(fā)過程中,享受快速、高效、統(tǒng)一的代碼生成帶來的樂趣。

?

?以上就是我在框架重構(gòu)中的一些總結(jié),希望能給大家有所啟發(fā),有所幫助。最后附上Winform開發(fā)框架的一個功能總結(jié)圖形,Winform開發(fā)框架的主要功能概覽如下圖所示。

?本文轉(zhuǎn)自博客園伍華聰?shù)牟┛?#xff0c;原文鏈接:Winform開發(fā)框架重構(gòu)總結(jié),如需轉(zhuǎn)載請自行聯(lián)系原博主。



總結(jié)

以上是生活随笔為你收集整理的Winform开发框架重构总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品一二三区 | 伊人影院在线观看视频 | 国产一级二级三级在线 | 美女又爽又黄免费视频 | 国产成人精品999在线观看 | 色骚网| 一级黄色大片免费看 | xxav在线| 亚洲成人77777 | 白浆影院 | 51人人看 | 成人一级片在线观看 | 综合网av | 亚洲精品高清视频 | 91福利区| xxxxx18日本| 色亚洲成人 | 国产精品久免费的黄网站 | 国产成人主播 | 激情四射网| 色吧在线观看 | 色妞干网 | 国产做爰免费观看 | 日本不卡一区二区三区视频 | 久草视频在线免费播放 | 爆操av| 狠狠干2018 | 久久午夜片| 久久草av | 美女草逼视频 | 亚洲免费成人在线 | 国产大片中文字幕在线观看 | 永久免费看黄 | 亚洲一区久久久 | 久久久久区 | 久久久噜噜噜www成人网 | 久久久精 | 亚洲av成人无码一区二区三区在线观看 | jizz亚洲女人高潮大叫 | 亚洲欧美激情另类校园 | 香蕉视频二区 | 91亚洲综合 | 精品无码一区二区三区爱欲 | 中文字幕国产日韩 | 红桃视频成人 | 久久久久久久久久影院 | 精品国产av色一区二区深夜久久 | 一区二区三区在线免费视频 | 五月婷婷六月激情 | 欧美伦理一区 | 国产成人无码专区 | 一区二区三区免费高清视频 | 奇米影视首页 | 大桥未久视频在线观看 | 久久精品国产亚洲a | 日本91网站 | 免费超碰在线 | 三级亚洲欧美 | 国产91久久婷婷一区二区 | 国产电影一区二区三区 | 黑人乱码一区二区三区av | 国产精品91视频 | 日韩欧美黄色 | 二三区视频 | 亚洲欧美视频二区 | 日日日操操操 | www日日| 国产强伦人妻毛片 | 成人一区二区视频 | 日本天堂在线观看 | 九九热视频这里只有精品 | youjizz亚洲 | 黄色岛国片 | 香蕉在线看 | 性一交一乱一精一晶 | 一级片免费视频 | 久草视频福利在线 | 欧美三级在线看 | 中文字幕高清 | 久久久永久久久人妻精品麻豆 | 日韩精品综合 | 黄色中文字幕 | 老牛影视少妇在线观看 | 黄色网在线看 | 91尤物在线 | 国产色网址 | 亚洲第一精品网站 | 先锋影音av中文字幕 | 瑟瑟综合 | 青青视频免费 | 天天干天天操心 | 欧美日本中文 | 97精品视频在线观看 | 国产精品无套 | 黑人操亚洲女 | 狠狠操网站 | 偷拍视频一区 | 又大又粗弄得我出好多水 | 美国黄色av|