Winform開發中的困境及解決方案


在我們開發各種應用的時候,都會碰到很多不同的問題,這些問題涉及架構、模塊組合、界面處理、共同部分抽象等方面,我們這里以Winform開發為例,從系統模塊化、界面組件選擇、業務模塊場景划分、界面基類和輔助類處理、代碼生成工具輔助開發等方面介紹在實際項目開發過程中碰到的困境和相關的解決方案,以便分析其中是如何逐步提高效率和整體用戶體驗的。

1、系統模塊化

軟件和建築工程很類似,都是需要構建一個龐大而功能完整的一個系統,而工程化也意味着需要多人協作,那么就需要把一個龐大的系統橫向或者縱向划分為各個可以獨立施工完成的模塊,雖然各個模塊之間有所銜接或者交互,但是基本上可以以模塊化的方式來構建,這個也是工程化開發的精髓所在。

以一個軟件管理系統為例,我們盡可能把精力焦點放在客戶的業務需求上,而對於常規的如權限控制、字典管理等一些常用的內容,由於它們的處理邏輯在特定領域上基本上比較固定一些,可以盡可能獨立並重復使用,

而有時候,以某個特定的業務來說,同時很多處理規則也是不變的,因此也可以以業務模塊的方式來划分,從而類似通用模塊的方式重復使用。

模塊化類似小孩子搭積木的方式構建一個所要的形狀,雖然軟件和建築在這方面肯定更加復雜化,但是模塊化系統是大勢所趨,也是簡化開發、易於維護、提高系統健壯性的重要舉措。

 

2、界面組件選擇

在Winform內置的傳統樣式里面,雖然提供了很多很好的界面組件,不過整體效果還是比較古板。為了增強界面的處理效果,我們一般使用一些第三方的界面套件作為Winform開發的基礎,這個除了可以提高整體界面的效果外,還在很多控件層面提供豐富的處理和響應。

以前嘗試過各種類型的界面套件,最終還是對DevExpress情有獨鍾,不僅僅是因為它是大軟件公司開發的界面套件,也是因為它在界面層次提供了很多豐富的界面組件和強大的屬性設置,能夠極大滿足各種界面復雜的要求。

使用DevExpress界面套件,可以使得我們開發的界面更加漂亮,用戶體驗也更好。

 

或者類似效果

 

3、業務模塊的場景划分

前面說過,一個系統為了簡化開發、易於維護、提高系統健壯性的可以把它按功能方式划分為各個獨立模塊進行開發或者重用,而對於業務模塊來說,我們也還可以進一步細分。

一般系統界面中,大多數標准方式是展示業務數據的查詢列表,然后在根據需要對特定記錄進行編輯、查看、刪除等操作。

我們把常規的列表界面,新增、編輯、查看、導入等界面放在一起,除了列表頁面,其他內容以彈出層對話框的方式進行處理,如下界面示意所示。

如對於列表內容的展示,一般展示效果如下所示,主要展示數據庫里面的二維表信息。

除了列表界面,另外一個就是對數據的明細展示界面了,這個界面內容可以更加多元化,如在里面承載各種控件,如文本、日期、圖片、下拉列表、樹形列表,以及我們自定義的一些控件,如對於附件的通過管理展示控件。

 

 有了這些標准的展示效果,我們就可以參照這些,使用代碼生成工具輔助頁面內容的生成的了,生成規則以數據庫元數據為參考即可。

 

4、界面基類和輔助類的處理

我們以常規業務模塊界面來分析,主要有明細查看或編輯界面、列表界面,那么這些界面為了方便使用,我們可以抽象一部分界面處理邏輯或者共有部分內容,放在界面基類BaseEdit或者BaseDock等基類里面,如下界面所示。

盡可能把一些涉及到業務數據的處理通用規則放到基類,而變化部分則在子類進行處理即可。這樣可以簡化生成界面的代碼,以及提高可重用率,減少維護的難度和代碼臃腫。 

對於一般的業務系統,可能都會涉及到不同數據庫的使用,如SQLServer、Oracle、Mysql、PostgreSQL等數據庫,那么這部分,可以通過使用微軟企業庫或者其他ORM方式進行處理,以實現系統對多種數據庫的良好支持。

 

5、代碼生成工具輔助開發

通過上面的介紹,通用部分作為模塊獨立使用,業務模塊的界面主要划分列表和編輯查看界面兩部分,而各自又進行了一定的基類抽象處理,那么相對來說已經簡化很多了,不過對於業務數據來說,我們還是需要做很多重復性的工作,如界面顯示、界面賦值及調用接口處理等操作,這些對業務對象固定的話,其實也是規則類似的,那么這部分我們結合代碼生成工具進行批量生成即可,生成后進行一定的微調,可以極大降低出錯的幾率,減少代碼的編寫量。

 在我們開發軟件的時候,解決方案項目基於一定的分層組織,每個項目分層中,各個類的關系也是確定的,借助輔助工具(結合模板引擎)可以快速生成我們所需要的代碼,並極大提高我們軟件的開發效率,Database2Sharp代碼生成工具就是一款專門針對我們自己框架結構配套的開發工具。

Database2Sharp代碼生成工具,主要是基於數據庫提取的元數據信息,根據表的信息和關系,字段信息等內容,生成我們框架所需要分層的類代碼。

對於Winform開發,可以根據Winform框架或者混合框架的窗體界面類,生成標准的界面代碼,列表界面默認具有分頁查詢、導入導出、高級查詢、編輯、刪除事件綁定,編輯界面則具有獲取數據並顯示在控件,保存后執行更新或者寫入的操作。

 

 

 

7、其他

除了前面介紹的部分外,一般大的方面,我們還可以以業務方式做一些獨立的組件模塊,以方便重復使用,這個是大的方面。

模塊化,一般需要構建好對應的框架架構,每個獨立的模塊,都是遵循統一的框架架構方式處理,可以極大提高代碼的開發效率和降低維護的難度。

Winform開發架構如下所示。

 而對於混合方式的Winform開發,那么還設計Web API模塊的部署,以及客戶端對Web API調用的封裝,如下所示。

 小的方面,還可以進一步划分一些常用的界面處理元素,如自定義控件的方式進行特殊組件的開發工作。如隨筆《在Winform界面使用自定義用戶控件及TabelPanel和StackPanel布局控件》、《在Winform系統界面中對進展階段的動態展示和處理》。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM