日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Winform開發(fā)框架之混合型框架的剖析

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

成都創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元貞豐做網(wǎng)站,已為上家服務(wù),為貞豐各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

1、框架的扇出介紹

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

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

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

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

3、混合型框架的項目及配置分離

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

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

 
 
 
 
  1.   
  2.   
  3.   
  4.   
  5.   
  6.   
  7.   
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   

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

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

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

對于混合型框架,不管它的數(shù)據(jù)調(diào)用邏輯是按照傳統(tǒng)的Winform方式,還是分布式的WCF服務(wù)調(diào)用方式,實現(xiàn)代碼都是一樣的,因為它是基于接口層調(diào)用,如下所示是在框架系統(tǒng)中調(diào)用數(shù)據(jù)字典模塊獲取數(shù)據(jù)的代碼實現(xiàn)。

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

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

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

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

 
 
 
 
  1. BLLFactory.Instance.Delete(ID);

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

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

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

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

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

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

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

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

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

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

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

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


新聞標(biāo)題:Winform開發(fā)框架之混合型框架的剖析
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/dhdscgj.html