成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Winform開(kāi)發(fā)框架之混合型框架的剖析

開(kāi)發(fā) 架構(gòu)
混合型框架為了支持WCF方式和傳統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)方式兩種對(duì)數(shù)據(jù)操作的方式,有兩個(gè)地方有扇出操作,一個(gè)是在界面上調(diào)用接口對(duì)象獲取數(shù)據(jù)的時(shí)候有扇出操作,為了實(shí)現(xiàn)WCF方式和傳統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)方式的處理,如下所示

我在隨筆《Winform開(kāi)發(fā)框架之框架演化》和《Winform開(kāi)發(fā)框架之混合型框架的實(shí)現(xiàn)》都對(duì)Winform框架的變種,混合型框架進(jìn)行了比較詳細(xì)的介紹,本文繼續(xù)上篇對(duì)混合型框架進(jìn)行進(jìn)一步的說(shuō)明。

1、框架的扇出介紹

混合型框架為了支持WCF方式和傳統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)方式兩種對(duì)數(shù)據(jù)操作的方式,有兩個(gè)地方有扇出操作,一個(gè)是在界面上調(diào)用接口對(duì)象獲取數(shù)據(jù)的時(shí)候有扇出操作,為了實(shí)現(xiàn)WCF方式和傳統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)方式的處理,如下所示。當(dāng)然,如果必要,也可以擴(kuò)展成支持更多的類型,如可能存在舊系統(tǒng)的WebService調(diào)用方式等。

另外,整個(gè)框架支持Oracle、SqlServer、MySql、Sqlite、Access等數(shù)據(jù)庫(kù)的訪問(wèn)操作,因此在業(yè)務(wù)層調(diào)用具體數(shù)據(jù)訪問(wèn)類的時(shí)候,根據(jù)配置的不同,具體構(gòu)造的數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象也不同,因此,這里也有一個(gè)扇出操作,而且扇出數(shù)量和支持的數(shù)據(jù)庫(kù)一致,如下所示。

2、混合型框架的輔助性模塊集成

混合型框架可以看成是Winform框架高級(jí)版本,除了它本身是一個(gè)完整的業(yè)務(wù)系統(tǒng)外,它外圍的所有輔助性模塊均(如通用權(quán)限、通用字典、通用附件管理、通用人員管理。。。。)都實(shí)現(xiàn)了這種混合型的框架,因此使用非常方便,整個(gè)框架如果簡(jiǎn)化來(lái)看,就是在原有的Winform界面層,用接口調(diào)用方式,避免和業(yè)務(wù)邏輯類的緊耦合關(guān)系。由于他是通過(guò)接口方式的調(diào)用方式,它本身又可以通過(guò)配置指定指向WCF的實(shí)現(xiàn),因此也囊括了WCF框架的一切特點(diǎn)。

3、混合型框架的項(xiàng)目及配置分離

說(shuō)到WCF的訪問(wèn)方式,混合型框架把業(yè)務(wù)系統(tǒng)的WCF服務(wù)和輔助性公用模塊的WCF服務(wù)分開(kāi),首先是服務(wù)分開(kāi),然后是客戶端配置文件分開(kāi)。

客戶端配置文件分開(kāi),是通過(guò)把他們的服務(wù)配置信息分別用不同的文件表示,如輔助性模塊的WCF配置文件為BaseWcfConfig.config,業(yè)務(wù)系統(tǒng)的WCF配置文件為WcfConfig.config,通過(guò)這樣的分離設(shè)置,我們?cè)谥髋渲梦募pp.Config文件里面,就清爽很多了,如下所示。

  1. <appSettings>  
  2.   <!--軟件名稱-->  
  3.   <add key="ApplicationName" value="深田之星倉(cāng)庫(kù)管理系統(tǒng)"/>  
  4.   <!--開(kāi)發(fā)商名稱-->  
  5.   <add key="Manufacturer" value=""/>  
  6.   <!--組件的數(shù)據(jù)庫(kù)類型:access、sqlserver、sqlite、oracle等,默認(rèn)為sqlserver可不寫(xiě)-->  
  7.   <add key="ComponentDbType" value="sqlserver"/>  
  8.   <add key="AttachmentLicense" value="397cV0hDLlNlY3VybXR5fOS8jeWNjuiBqnzlua-lt57niLHlkK-o_6rmioDmnK-mnInpmZDlhbzlj7h8RmFsc2Uv" />  
  9.     
  10.   <!--組件模塊調(diào)用方式,采用WCF方式Value為wcf,采用Winform方式Value為win-->  
  11.   <add key="CallerType" value="wcf"/>  
  12.   <!--WCF服務(wù)的配置文件地址-->  
  13.   <add key="BaseWcfConfig" value="BaseWcfConfig.config"/>  
  14.   <add key="WcfConfig" value="WcfConfig.config"/>  
  15. </appSettings> 

這樣我們通過(guò)修改CallerType的內(nèi)容(WCF或者WIN),就可以實(shí)現(xiàn)兩種不同方式的訪問(wèn)了。

整個(gè)項(xiàng)目工程的布局,除了剛才介紹的WCF服務(wù)模塊,其實(shí)還有很多其他模塊的,如下面圖所示,包括業(yè)務(wù)邏輯模塊,服務(wù)接口調(diào)用模塊,Winform界面模塊、WCF服務(wù)邏輯模塊,整個(gè)系統(tǒng)的模塊就包含這些,當(dāng)然外圍的輔助性模塊,如字典、權(quán)限、人員等等,他們各自按照這個(gè)方式進(jìn)行組織處理,系統(tǒng)調(diào)用的時(shí)候,不會(huì)具體關(guān)心它們的調(diào)用邏輯,因?yàn)樗鼈兊恼{(diào)用方式已經(jīng)通過(guò)約定的CallerType的內(nèi)容進(jìn)行了指定。

4、混合型框架的調(diào)用介紹

對(duì)于混合型框架,不管它的數(shù)據(jù)調(diào)用邏輯是按照傳統(tǒng)的Winform方式,還是分布式的WCF服務(wù)調(diào)用方式,實(shí)現(xiàn)代碼都是一樣的,因?yàn)樗腔诮涌趯诱{(diào)用,如下所示是在框架系統(tǒng)中調(diào)用數(shù)據(jù)字典模塊獲取數(shù)據(jù)的代碼實(shí)現(xiàn)。

  1. /// <summary>  
  2. /// 根據(jù)字典類型獲取對(duì)應(yīng)的CListItem集合  
  3. /// </summary>  
  4. /// <param name="dictTypeName"></param>  
  5. /// <returns></returns>  
  6. public static CListItem[] GetDictByDictType(string dictTypeName)  
  7. {  
  8.     List<CListItem> itemList = new List<CListItem>();  
  9.     Dictionary<string, string> dict = WHC.Dictionary.UI.CallerFactory<WHC.Dictionary.Facade.IDictDataService>.Instance.GetDictByDictType(dictTypeName);  
  10.     foreach (string key in dict.Keys)  
  11.     {  
  12.         itemList.Add(new CListItem(key, dict[key]));  
  13.     }  
  14.     return itemList.ToArray();  

系統(tǒng)框架調(diào)用自己的接口獲取數(shù)據(jù),模式也和上面一樣,與傳統(tǒng)的Winform框架調(diào)用代碼相比,并沒(méi)有增加任何工作流,只是調(diào)用對(duì)象有點(diǎn)變化而已。

  1. private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e)  
  2. {  
  3.     if (MessageDxUtil.ShowYesNoAndTips("您確定刪除選定的記錄么?") == DialogResult.No)  
  4.     {  
  5.         return;  
  6.     }  
  7.  
  8.     int[] rowSelected = this.winGridViewPager1.GridView1.GetSelectedRows();  
  9.     foreach (int iRow in rowSelected)  
  10.     {  
  11.         string ID = this.winGridViewPager1.GridView1.GetRowCellDisplayText(iRow, "ID");  
  12.         CallerFactory<IItemDetailService>.Instance.Delete(ID);  
  13.     }  
  14.     BindData();  

如果是傳統(tǒng)的Winform框架,它的刪除操作的核心調(diào)用代碼是如下所示,是不是很相似的呢?

  1. BLLFactory<ItemDetail>.Instance.Delete(ID); 

5、混合式框架的代碼生成工具支持

當(dāng)然,雖然混合型框架比傳統(tǒng)的Winform框架和WCF開(kāi)發(fā)框架更為通用,不過(guò)由于它引入了多一層,而且為了實(shí)現(xiàn)更多模塊的分離,增加了一些設(shè)計(jì)上的復(fù)雜性,整個(gè)項(xiàng)目工程看起來(lái)顯得復(fù)雜了一點(diǎn),如下面就是一個(gè)以字典模塊為例的混合型框架的內(nèi)部結(jié)構(gòu)。

為了實(shí)現(xiàn)更簡(jiǎn)單化的開(kāi)發(fā),更快更高效的完成混合型框架的開(kāi)發(fā)工作,我擴(kuò)展了我的代碼生成工具Database2Sharp,使其支持這種混合型框架的代碼生成工作,這樣開(kāi)發(fā)混合型框架就和開(kāi)發(fā)其他兩種Winform開(kāi)發(fā)框架、WCF開(kāi)發(fā)框架一樣,非常方便了。

生成混合型框架項(xiàng)目的步驟就是在【EnterpriseLibrary代碼生成】的***一步進(jìn)行勾選設(shè)置即可。

代碼生成工具,生成整體性的混合型框架項(xiàng)目如下所示,只是沒(méi)有下圖的界面部分,這部分在實(shí)際開(kāi)發(fā)過(guò)程中,結(jié)合我的混合型框架案例進(jìn)行整合即可,另外也可以界使用Database2Sharp進(jìn)行Winform界面的開(kāi)發(fā),這樣整體性就非常方便操作了:

6、混合型框架的優(yōu)化總結(jié)

雖然整體性的混合型框架比其他兩種框架模塊,總體增加了一些難度及復(fù)雜性,不過(guò),為了使得整個(gè)混合型框架開(kāi)發(fā)和使用更加方便,我已經(jīng)在設(shè)計(jì)上做了很多相關(guān)的工作,力求更好、更高效的使用好這種混合型框架,下面是我對(duì)整體性的框架做了的優(yōu)化改進(jìn)工作。

1)把所有通用的模塊開(kāi)發(fā)好,方便更好的集成使用,更加高效利用通用模塊,重復(fù)利用度更高;

2)把WCF服務(wù)發(fā)布和服務(wù)邏輯分開(kāi),更好管理和發(fā)布WCF服務(wù),服務(wù)發(fā)布只需要svc文件,不含任何后臺(tái)代碼;

3)統(tǒng)一的業(yè)務(wù)調(diào)用規(guī)則和命名規(guī)則,所有模塊的接口調(diào)用統(tǒng)一為CallerFactory<I***Service>方式,通用模塊和框架的命名規(guī)則和機(jī)制完全一樣。

4)WCF服務(wù)配置文件分離,通用性的輔助模塊的配置文件為BaseWcfConfig.config,業(yè)務(wù)系統(tǒng)的WCF配置文件為WcfConfig.config,配置文件分離更方便管理和維護(hù),減少主配置文件app.Config的復(fù)雜性。

5)***一條,也是最重要的一條,就是代碼生成工具Database2Sharp的同步支持。通過(guò)代碼生成工具,更好、更快的生成整個(gè)混合性框架的代碼和項(xiàng)目工程,一鍵解決所有的煩惱。Winform界面,利用代碼生成工具Database2Sharp進(jìn)行生成,然后在項(xiàng)目中整合即可。

原文鏈接:http://www.cnblogs.com/wuhuacong/archive/2013/04/22/3035736.html

責(zé)任編輯:張偉 來(lái)源: 博客園
相關(guān)推薦

2012-08-21 11:26:17

Winform

2023-09-07 08:00:00

2012-01-09 15:01:30

TV

2012-12-11 10:15:02

Winform開(kāi)發(fā)框架

2012-11-20 10:04:46

Winform開(kāi)發(fā)

2011-11-23 09:47:36

Winform

2010-06-22 11:00:26

虛擬化工作環(huán)境

2016-05-04 10:00:04

混合開(kāi)發(fā)移動(dòng)博客

2022-09-22 12:04:22

.NET開(kāi)發(fā)框架

2011-11-14 10:41:15

Winform數(shù)據(jù)管理模塊Items

2016-05-13 15:39:34

混合開(kāi)發(fā)移動(dòng)

2015-04-20 09:41:35

AWS混合型IT云供應(yīng)商

2017-10-13 15:24:42

英特爾CPUFPGA

2010-01-07 15:22:46

2016-03-23 11:05:58

Socket開(kāi)發(fā)框架分析

2010-01-27 10:08:10

2009-10-13 11:32:19

Winform假框架

2009-09-29 10:00:40

Spring AOP框

2011-01-18 12:57:36

2019-10-18 16:05:32

框架開(kāi)發(fā)Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久亚洲欧美日韩精品专区 | 理论片免费在线观看 | 波多野结衣电影一区 | 日本黄色免费大片 | 亚洲欧美日韩在线 | 欧美精品一区二区三区在线播放 | 成人在线精品视频 | 91在线资源 | 欧美精品在欧美一区二区 | 久久综合婷婷 | 成人在线| 韩日在线观看视频 | 国内av在线 | 国产95在线 | 中文字幕日韩欧美一区二区三区 | 伊人看片 | 成人午夜免费在线视频 | 91综合在线视频 | 中文字幕二区 | 天天综合国产 | 免费观看的av毛片的网站 | 久久久久成人精品亚洲国产 | 国产精品久久久久久久久久 | 日本欧美国产 | 91在线免费视频 | 视频一区二区中文字幕 | 日韩手机在线视频 | 狠狠涩| 欧美不卡一区二区三区 | 国产一区二区三区四区五区加勒比 | 欧美综合国产精品久久丁香 | 99视频免费看 | 成人3d动漫一区二区三区91 | 成人在线中文字幕 | 久久国内精品 | 国产不卡一区 | 538在线精品 | 色综合天天综合网国产成人网 | 浮生影院免费观看中文版 | 久久久91| 国产精品视频久久 |