轉(zhuǎn)帖|使用教程|編輯:龔雪|2020-08-17 10:48:03.943|閱讀 595 次
概述:本文將為大家介紹Winform開發(fā)中的困境及解決方案,DevExpress Winforms Controls 內(nèi)置140多個UI控件和庫,歡迎下載體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress Winforms Controls 內(nèi)置140多個UI控件和庫,完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序。DevExpress WinForm v20.1全新發(fā)布,想要體驗?點擊下載>>
在我們開發(fā)各種應(yīng)用的時候,都會碰到很多不同的問題,這些問題涉及架構(gòu)、模塊組合、界面處理、共同部分抽象等方面,我們這里以Winform開發(fā)為例,從系統(tǒng)模塊化、界面組件選擇、業(yè)務(wù)模塊場景劃分、界面基類和輔助類處理、代碼生成工具輔助開發(fā)等方面介紹在實際項目開發(fā)過程中碰到的困境和相關(guān)的解決方案,以便分析其中是如何逐步提高效率和整體用戶體驗的。
軟件和建筑工程很類似,都是需要構(gòu)建一個龐大而功能完整的一個系統(tǒng),而工程化也意味著需要多人協(xié)作,那么就需要把一個龐大的系統(tǒng)橫向或者縱向劃分為各個可以獨立施工完成的模塊,雖然各個模塊之間有所銜接或者交互,但是基本上可以以模塊化的方式來構(gòu)建,這個也是工程化開發(fā)的精髓所在。
以一個軟件管理系統(tǒng)為例,我們盡可能把精力焦點放在客戶的業(yè)務(wù)需求上,而對于常規(guī)的如權(quán)限控制、字典管理等一些常用的內(nèi)容,由于它們的處理邏輯在特定領(lǐng)域上基本上比較固定一些,可以盡可能獨立并重復(fù)使用,而有時候,以某個特定的業(yè)務(wù)來說,同時很多處理規(guī)則也是不變的,因此也可以以業(yè)務(wù)模塊的方式來劃分,從而類似通用模塊的方式重復(fù)使用。
模塊化類似小孩子搭積木的方式構(gòu)建一個所要的形狀,雖然軟件和建筑在這方面肯定更加復(fù)雜化,但是模塊化系統(tǒng)是大勢所趨,也是簡化開發(fā)、易于維護(hù)、提高系統(tǒng)健壯性的重要舉措。
在Winform內(nèi)置的傳統(tǒng)樣式里面,雖然提供了很多很好的界面組件,不過整體效果還是比較古板。為了增強界面的處理效果,我們一般使用一些第三方的界面套件作為Winform開發(fā)的基礎(chǔ),這個除了可以提高整體界面的效果外,還在很多控件層面提供豐富的處理和響應(yīng)。
以前嘗試過各種類型的界面套件,最終還是對DevExpress情有獨鐘,不僅僅是因為它是大軟件公司開發(fā)的界面套件,也是因為它在界面層次提供了很多豐富的界面組件和強大的屬性設(shè)置,能夠極大滿足各種界面復(fù)雜的要求。
使用DevExpress界面套件,可以使得我們開發(fā)的界面更加漂亮,用戶體驗也更好。
或者類似效果
前面說過,一個系統(tǒng)為了簡化開發(fā)、易于維護(hù)、提高系統(tǒng)健壯性的可以把它按功能方式劃分為各個獨立模塊進(jìn)行開發(fā)或者重用,而對于業(yè)務(wù)模塊來說,我們也還可以進(jìn)一步細(xì)分。一般系統(tǒng)界面中,大多數(shù)標(biāo)準(zhǔn)方式是展示業(yè)務(wù)數(shù)據(jù)的查詢列表,然后在根據(jù)需要對特定記錄進(jìn)行編輯、查看、刪除等操作。我們把常規(guī)的列表界面,新增、編輯、查看、導(dǎo)入等界面放在一起,除了列表頁面,其他內(nèi)容以彈出層對話框的方式進(jìn)行處理,如下界面示意所示。
如對于列表內(nèi)容的展示,一般展示效果如下所示,主要展示數(shù)據(jù)庫里面的二維表信息。
除了列表界面,另外一個就是對數(shù)據(jù)的明細(xì)展示界面了,這個界面內(nèi)容可以更加多元化,如在里面承載各種控件,如文本、日期、圖片、下拉列表、樹形列表,以及我們自定義的一些控件,如對于附件的通過管理展示控件。
有了這些標(biāo)準(zhǔn)的展示效果,我們就可以參照這些,使用代碼生成工具輔助頁面內(nèi)容的生成的了,生成規(guī)則以數(shù)據(jù)庫元數(shù)據(jù)為參考即可。
我們以常規(guī)業(yè)務(wù)模塊界面來分析,主要有明細(xì)查看或編輯界面、列表界面,那么這些界面為了方便使用,我們可以抽象一部分界面處理邏輯或者共有部分內(nèi)容,放在界面基類BaseEdit或者BaseDock等基類里面,如下界面所示。
盡可能把一些涉及到業(yè)務(wù)數(shù)據(jù)的處理通用規(guī)則放到基類,而變化部分則在子類進(jìn)行處理即可。這樣可以簡化生成界面的代碼,以及提高可重用率,減少維護(hù)的難度和代碼臃腫。 對于一般的業(yè)務(wù)系統(tǒng),可能都會涉及到不同數(shù)據(jù)庫的使用,如SQLServer、Oracle、Mysql、PostgreSQL等數(shù)據(jù)庫,那么這部分,可以通過使用微軟企業(yè)庫或者其他ORM方式進(jìn)行處理,以實現(xiàn)系統(tǒng)對多種數(shù)據(jù)庫的良好支持。
通過上面的介紹,通用部分作為模塊獨立使用,業(yè)務(wù)模塊的界面主要劃分列表和編輯查看界面兩部分,而各自又進(jìn)行了一定的基類抽象處理,那么相對來說已經(jīng)簡化很多了,不過對于業(yè)務(wù)數(shù)據(jù)來說,我們還是需要做很多重復(fù)性的工作,如界面顯示、界面賦值及調(diào)用接口處理等操作,這些對業(yè)務(wù)對象固定的話,其實也是規(guī)則類似的,那么這部分我們結(jié)合代碼生成工具進(jìn)行批量生成即可,生成后進(jìn)行一定的微調(diào),可以極大降低出錯的幾率,減少代碼的編寫量。
在我們開發(fā)軟件的時候,解決方案項目基于一定的分層組織,每個項目分層中,各個類的關(guān)系也是確定的,借助輔助工具(結(jié)合模板引擎)可以快速生成我們所需要的代碼,并極大提高我們軟件的開發(fā)效率,Database2Sharp代碼生成工具就是一款專門針對我們自己框架結(jié)構(gòu)配套的開發(fā)工具。
Database2Sharp代碼生成工具,主要是基于數(shù)據(jù)庫提取的元數(shù)據(jù)信息,根據(jù)表的信息和關(guān)系,字段信息等內(nèi)容,生成我們框架所需要分層的類代碼。
對于Winform開發(fā),可以根據(jù)Winform框架或者混合框架的窗體界面類,生成標(biāo)準(zhǔn)的界面代碼,列表界面默認(rèn)具有分頁查詢、導(dǎo)入導(dǎo)出、高級查詢、編輯、刪除事件綁定,編輯界面則具有獲取數(shù)據(jù)并顯示在控件,保存后執(zhí)行更新或者寫入的操作。
除了前面介紹的部分外,一般大的方面,我們還可以以業(yè)務(wù)方式做一些獨立的組件模塊,以方便重復(fù)使用,這個是大的方面。模塊化,一般需要構(gòu)建好對應(yīng)的框架架構(gòu),每個獨立的模塊,都是遵循統(tǒng)一的框架架構(gòu)方式處理,可以極大提高代碼的開發(fā)效率和降低維護(hù)的難度。Winform開發(fā)架構(gòu)如下所示。
而對于混合方式的Winform開發(fā),那么還設(shè)計Web API模塊的部署,以及客戶端對Web API調(diào)用的封裝,如下所示。
本文轉(zhuǎn)載自
DevExpress技術(shù)交流群2:775869749 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: