Winform開發框架之混合型框架的剖析

2021-09-22 13:53:31 字數 4071 閱讀 5692

我在隨筆《winform開發框架之框架演化》和《winform開發框架之混合型框架的實現》都對winform框架的變種,混合型框架進行了比較詳細的介紹,本文繼續上篇對混合型框架進行進一步的說明。

混合型框架為了支援wcf方式和傳統訪問資料庫方式兩種對資料操作的方式,有兩個地方有扇出操作,乙個是在介面上呼叫介面物件獲取資料的時候有扇出操作,為了實現wcf方式和傳統訪問資料庫方式的處理,如下所示。當然,如果必要,也可以擴充套件成支援更多的型別,如可能存在舊系統的webservice呼叫方式等。

另外,整個框架支援oracle、sqlserver、mysql、sqlite、access等資料庫的訪問操作,因此在業務層呼叫具體資料訪問類的時候,根據配置的不同,具體構造的資料庫訪問物件也不同,因此,這裡也有乙個扇出操作,而且扇出數量和支援的資料庫一致,如下所示。

混合型框架可以看成是winform框架高階版本,除了它本身是乙個完整的業務系統外,它外圍的所有輔助性模組均(如通用許可權、通用字典、通用附件管理、通用人員管理。。。。)都實現了這種混合型的框架,因此使用非常方便,整個框架如果簡化來看,就是在原有的winform介面層,用介面呼叫方式,避免和業務邏輯類的緊耦合關係。由於他是通過介面方式的呼叫方式,它本身又可以通過配置指定指向wcf的實現,因此也囊括了wcf框架的一切特點。

說到wcf的訪問方式,混合型框架把業務系統的wcf服務和輔助性公用模組的wcf服務分開,首先是服務分開,然後是客戶端配置檔案分開。

="深田之星倉庫管理系統"

/>

<

add

key="manufacturer"

value

=""/>

<

add

key="componentdbtype"

value

="sqlserver"

/>

<

add

key="attachmentlicense"

value

="397cv0hdllnly3vybxr5fos8jewnjuibqnzlua-lt57nilhlkk-o_6rmiodmnk-mninpmzdlhbzlj7h8rmfsc2uv"

/>

<

add

key="callertype"

value

="wcf"

/>

<

add

key="basewcfconfig"

value

="basewcfconfig.config"

/>

<

add

key="wcfconfig"

value

="wcfconfig.config"

/>

>

這樣我們通過修改callertype的內容(wcf或者win),就可以實現兩種不同方式的訪問了。

整個專案工程的布局,除了剛才介紹的wcf服務模組,其實還有很多其他模組的,如下面圖所示,包括業務邏輯模組,服務介面呼叫模組,winform介面模組、wcf服務邏輯模組,整個系統的模組就包含這些,當然外圍的輔助性模組,如字典、許可權、人員等等,他們各自按照這個方式進行組織處理,系統呼叫的時候,不會具體關心它們的呼叫邏輯,因為它們的呼叫方式已經通過約定的callertype的內容進行了指定。

對於混合型框架,不管它的資料呼叫邏輯是按照傳統的winform方式,還是分布式的wcf服務呼叫方式,實現**都是一樣的,因為它是基於介面層呼叫,如下所示是在框架系統中呼叫資料字典模組獲取資料的**實現。

///

///根據字典型別獲取對應的clistitem集合

/// ///

///public

static clistitem getdictbydicttype(string

dicttypename)

return

itemlist.toarray();

}

系統框架呼叫自己的介面獲取資料,模式也和上面一樣,與傳統的winform框架呼叫**相比,並沒有增加任何工作流,只是呼叫物件有點變化而已。

private

void wingridviewpager1_ondeleteselected(object

sender, eventargs e)

int rowselected = this

.wingridviewpager1.gridview1.getselectedrows();

foreach (int irow in

rowselected)

binddata();

}

如果是傳統的winform框架,它的刪除操作的核心呼叫**是如下所示,是不是很相似的呢?

bllfactory.instance.delete(id);
當然,雖然混合型框架比傳統的winform框架和wcf開發框架更為通用,不過由於它引入了多一層,而且為了實現更多模組的分離,增加了一些設計上的複雜性,整個專案工程看起來顯得複雜了一點,如下面就是乙個以字典模組為例的混合型框架的內部結構。

為了實現更簡單化的開發,更快更高效的完成混合型框架的開發工作,我擴充套件了我的**生成工具database2sharp,使其支援這種混合型框架的**生成工作,這樣開發混合型框架就和開發其他兩種winform開發框架、wcf開發框架一樣,非常方便了。

生成混合型框架專案的步驟就是在【enterpriselibrary**生成】的最後一步進行勾選設定即可。

**生成工具,生成整體性的混合型框架專案如下所示,只是沒有下圖的介面部分,這部分在實際開發過程中,結合我的混合型框架案例進行整合即可,另外也可以界使用database2sharp進行winform介面的開發,這樣整體性就非常方便操作了:

雖然整體性的混合型框架比其他兩種框架模組,總體增加了一些難度及複雜性,不過,為了使得整個混合型框架開發和使用更加方便,我已經在設計上做了很多相關的工作,力求更好、更高效的使用好這種混合型框架,下面是我對整體性的框架做了的優化改進工作。

1)把所有通用的模組開發好,方便更好的整合使用,更加高效利用通用模組,重複利用度更高;

2)把wcf服務發布和服務邏輯分開,更好管理和發布wcf服務,服務發布只需要svc檔案,不含任何後台**;

3)統一的業務呼叫規則和命名規則,所有模組的介面呼叫統一為calle***ctory方式,通用模組和框架的命名規則和機制完全一樣。

5)最後一條,也是最重要的一條,就是**生成工具database2sharp的同步支援。通過**生成工具,更好、更快的生成整個混合性框架的**和專案工程,一鍵解決所有的煩惱。winform介面,利用**生成工具database2sharp進行生成,然後在專案中整合即可。

Winform開發框架之混合型框架的剖析

我在隨筆 winform開發框架之框架演化 和 winform開發框架之混合型框架的實現 都對winform框架的變種,混合型框架進行了比較詳細的介紹,本文繼續上篇對混合型框架進行進一步的說明。混合型框架為了支援wcf方式和傳統訪問資料庫方式兩種對資料操作的方式,有兩個地方有扇出操作,乙個是在介面上...

CMMI混合型表達方式

cmmi模型最有爭議的要算是它的兩種表現方式了 階段型表現方式和連續型表現方式。階段型以自己獨特的方式展現了自己的魅力。它的最主要的特點是轉換組織的 思維方式 階段型表現方式在每提高乙個成熟度級別時,組織都要經歷一次文化的轉變。連續型表達方式,換一種說法,感覺在強制進行重新定義。在不同特徵的領域和需...

Winform開發框架之介紹

框架已經正式改名為 yeswin開發框架,最新資料請前往 yeswinform 簡介 yes快速開發平台框架 yesdotnet.com winform開發框架,儘量減少程式設計師在介面中的 量和工作量,model自動生成,介面以及控制項自動生成,簡單的邏輯自動生成。自動生成的介面已經實現簡單邏輯增...