如何基於Winform開發框架或混合框架基礎上進行項目的快速開發

来源:https://www.cnblogs.com/wuhuacong/archive/2018/11/28/10030660.html
-Advertisement-
Play Games

在開發項目的時候,我們為了提高速度和質量,往往不是白手起家,需要基於一定的基礎上進行項目的快速開發,這樣可以利用整個框架的生態基礎模塊,以及成熟統一的開發方式,可以極大提高我們開發的效率。本篇隨筆就是介紹基於Winform開發框架或混合框架基礎上進行項目的快速開發,這個主題在之前的一些隨筆有一定的介... ...


在開發項目的時候,我們為了提高速度和質量,往往不是白手起家,需要基於一定的基礎上進行項目的快速開發,這樣可以利用整個框架的生態基礎模塊,以及成熟統一的開發方式,可以極大提高我們開發的效率。本篇隨筆就是介紹基於Winform開發框架或混合框架基礎上進行項目的快速開發,這個主題在之前的一些隨筆有一定的介紹,但是覺得都不是很全面、完整,因此本篇隨筆通過一些簡單的例子以及一個具體的項目案例來進行全流程的開發出來,希望讀者對基於我們開發框架的開發模式有一個更深入的瞭解。

1、基於框架開發簡單界面的過程

由於我們框架提供了很多基礎的模塊來給我們新業務開發提供便利,如公用類庫、分頁控制項、字典管理、許可權管理系統、自動升級、附件管理、人員管理、工作流管理等可以反覆重用的模塊。

有了這些模塊的加持,我們開發項目很多基礎的處理就不用所有的東西都從頭來過。

對於一個新建的業務表,我們需要開發的需要底層的實現和界面層的展示,這些工作量也是非常巨大的,如果基於控制項細粒度的處理,也是非常繁瑣的工作,因此基於這些開發過程的考慮,我們引入了提高效率開發的代碼生成工具Database2Sharp,專門為我們基於開發框架基礎上的框架實現代碼開發,和業務界面展示的快速開發。

代碼生成工具,不僅能夠讓它生成我們常規開發的界面層以下的實現代碼(包括BLL、DAL、Entity、IDAL等層,以及混合框架的WCF、Web API的實現層和調用封裝層),以及界面層的調用代碼。

有了這些的處理,我們可極大減輕工作量。

我們開發新業務表的處理沒有發生變化,需要設計好自己的業務表,然後利用代碼生成工具生成對應代碼,最後合併到項目裡面並調整界面為合適的展示方式。

我在之前的隨筆《循序漸進開發WinForm項目(3)--Winform界面層的項目設計》裡面簡單的介紹了一般簡單界面的處理過程。

我們首先需要使用PowerDesigner或者同類工具進行表的建模,如下所示。

然後使用代碼生成工具生成框架代碼,如Winform框架生成下麵項目框架代碼。

這個分層,在Web項目或者WInform項目(包括WPF項目)這些分層都是可以重用的,這樣我們就不用重覆處理界面一下的邏輯,針對性的開發我們需要的界面層即可。

DAL層根據不同的需要,擴展支持不同的資料庫類型,每個資料庫類型,對應一個資料庫訪問實現層即可,它們實現IDAL層的介面,稱之為資料庫訪問介面實現層。

然後接著在代碼生成工具中單擊“Windows界面代碼生成”後,生成的窗體界面文件如下所示,分為了兩個部分,一個是列表界面,一個是數據編輯界面。

然後把相關的界面內容複製到剛纔創建的空項目工程上,最後界面層的項目截圖如下所示。

 生成的界面打開就具有了常規的列表和數據編輯展示的界面,如下所示。

列表界麵包括了查詢、新建、導入、導出,以及分頁控制項的整合處理,分頁控制項裡面整合支持了各種右鍵操作,包括增加、編輯、刪除,以及各種調整設置功能。

搞定列表界面,下麵我們再來看看數據的編輯界面部分,數據編輯界面生成的效果如下所示(由於版面的原因,我把它進行了一定的縮小)。

我們看到,裡面的欄位說明,控制項的名稱等內容,都已經合理安排好了,基本上設計資料庫的時候,指定的欄位備註就能正確生成出來了。

這裡演示的表欄位比較少,因此可能排版佈局方面沒有很好的演示效果,不過我們知道DevExpress本身的LayoutControl佈局很強大,我們可以隨意調整裡面控制項的位置。

對於控制項的類型,也可以進行不同類型的轉換,如可以吧文本類型,轉換為數值類型的輸入控制項等等。

 如果對於複雜的界面,我們需要進行一定的合併拖動處理,以實現我們所需要的界面效果,如下所示。

 對於界面層大量的處理操作,我們後臺的代碼基本上不需要調整,從而減少我們出錯和降低效率的問題。

以上就是我們在做一個簡單界面的過程中,一些開發思路過程。

2、實際的項目開發過程

以上介紹過程中,基本上設計到了核心的開發流程了,而我們實際的項目開發過程中,可能還需要涉及到更細節的一些過程。

1)基礎項目的生成

首先我們可能需要很多欄位在一個表裡面,需要設計到很多業務表,那麼也就是工作量的問題,和前面不會有本質的差異。

不管我們業務中涉及有多少個表,只要我們定義好表和它的備註信息,一切後面處理起來都會是那麼的愜意的了。

生成的項目中,我們已經有了對應框架支持的實現層了。

而界面層,我們可以考慮使用框架基於插件模式的動態載入配置菜單的啟動模塊項目,如下所示。

對於Winform的界面項目,我們一般建議將我們的業務獨立一個整體的項目,並包含所需要的引用文件,這個在利用代碼生成工具生成代碼的時候,就會有一個空白的UI項目可供使用的。

如對於普通的WInform項目,可以看到它的項目效果大概如下所示。

我們這裡實際的項目使用混合框架進行處理的,因此界面的內容比這個複雜一點,不過也是一個獨立的界面項目。

我們看到整個UI的界面部分是放在了Client目錄下麵,我在下麵進行了分門別類的放置一些目錄,區分不同的界面部分,方便尋找和處理的。

其他的Core層則是使用引用現有文件路徑的方式進行包含文件,目的是減少DLL的依賴。

對於混合框架部分,我們這裡需要多闡述一些項目,包括Web API的項目(或者WCF的項目),以及對Web API的調用封裝處理。

Web API項目我們可以從框架案例中把基礎的Web API項目拷貝過來使用,然後增加自己業務的Web API控制器就可以了。

對於新增業務表的Web API控制器代碼,也可以利用代碼生成工具進行生成。

生成後的控制器代碼,我們整合到主體的Web API項目中就可以使用了(對於WCF項目,一樣的方式,不在贅述)。

控制器裡面,基本上就是封裝對常規BLL層的調用,不過Web API的介面都需要token參數,或者一些特殊的介面需要簽名信息(如登陸的介面等)

關於Web API的封裝調用介紹,這裡不准備詳細進行介紹,有興趣可以瞭解下我的其他隨筆《Web API應用架構在Winform混合框架中的應用(3)--Winfrom界面調用WebAPI的過程分解》、《Web API應用架構在Winform混合框架中的應用(4)--利用代碼生成工具快速開發整套應用》、《Web API應用架構設計分析(1)》、《Web API應用架構設計分析(2)》、《Web API介面設計經驗總結》、《Winform混合式開發框架訪問Web API介面的處理》、《Web API項目中使用Area對業務進行分類管理》,還是蠻多的,呵呵。

原則上,我們有了啟動界面項目WHC.Framework.StarterDx2,有了基於插件模塊界面項目的WHC.HospitalDeptMis.ClientDx,以及一些框架的支持模塊,那麼我們就基本上可以跑起來了。

如果編譯沒問題,順利的話,我們登陸後可以看到界面如下所示。

我們沒有看到任何業務的菜單,那些在頂端的系統管理菜單是固定的菜單項,我們應該如何才能顯示我們需要的菜單項呢?

2)菜單配置

我們根據我們實際的需要,創建業務界面的菜單,我們在許可權管理系統的菜單管理界面裡面,新建我們的菜單信息。

上面的WInform窗體類型,就是用於定位我們的窗體對象類的,前面部分為類的全名,後者為DLL的文件名稱,中間用逗號分隔。

一般菜單最好分為三層,便於區分展示,如下界面所示

 

 定義好菜單後,我們需要為對應的角色分配對應的菜單資源,這樣用戶登錄系統後才能看到對應的菜單,如下是角色分配菜單的界面。

登錄系統界面,可以看到菜單信息的展示了。

 

 3)許可權的配置

前面介紹了菜單的創建和配置,其中角色包含菜單資源也可以看做是菜單許可權的配置,不過我們知道,系統還是有很多功能操作需要進行控制的,如新增、編輯、刪除,導出、導入等,這些是如何實現許可權的控制的呢?

這些依然是在許可權系統裡面進行控制管理的,首先我們需要定義需要控制的功能點,如下界面所示,可以批量錄入某個業務的相關處理操作。

最後我們可以看到展開的功能點

定義好這些功能點後,我們可以為對應的角色分配對應的功能點許可權,和前面的菜單許可權分配類似。

做完這些,剩下最後一步就是需要在界面中綁定許可權控制邏輯,我們來看看列表界面和詳細界面如何進行控制的。

列表界面的許可權控制處理如下:

 編輯詳細界面許可權控制處理如下所示。

 

有了界面模塊的許可權通用處理,以及許可權管理系統的信息配置,那麼整個系統跑起來就能夠實現我們對菜單的控制,以及對系列度的功能點進行控制處理的了。

這個是在實際開發過程中,我們需要註意的處理步驟。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因為工作需要,要把PDF的64字元串轉換為圖片的base64保存到資料庫,但是看了看國內外,一方面是做這個的比較少,還有就是做這個真的很煩. PDF轉圖片呢,大概的實現思路方式一般有兩種,一種就是重繪,類似於畫畫,把看到的畫到新的畫布上;第二種呢,就會識別裡面的內容複製到新的畫布上,我也不知道我比喻 ...
  • 找了好久,一直沒找到可用的熱力圖heatmap.js。 應該說,使用01中的語法一直都無法實現熱力圖。只能說我太菜了。。。 現在急於求成,我找了另一種語法來調用ECharts。此種語法的js文件集是從碼雲上下載下來的。GitHub也有一樣的 https://gitee.com/echarts/ech ...
  • GitHub設置使用SSH Key的好處就是可以使用SSH連接,並且提交代碼的時候可以不用輸入密碼,免密提交。SSH Key 我們使用PuTTYgen來生成公鑰(Public Key),私鑰(Private Key)和PuttyKey。在使用PuTTYgen之前,你需要先安裝TortoiseGit ...
  • 一 開發概述 對於具有一定規模的大多數企業來說,存在著這樣一種需求:存在某個或某些任務,需要系統定期,自動地執行,然而,對大多數企業來說,該技術的實現,卻是他們面臨的一大難點和挑戰。 對於大部分企業來說,實現如上功能,挑戰在哪裡? 挑戰一:如何做一個自動服務的系統? 是從0到1開發(費時費力花錢,還 ...
  • 這是我第一次發表博客。以前經常到博客園查找相關技術和代碼,今天在寫一段小程式時出現了問題, 但在網上沒能找到理想的解決方法。故註冊了博客園,想與新手分享(因為本人也不是什麼高手)。 vb.net和C#操作Oracle資料庫已經用了N多年了。由於是做工程自動化項目的,業主只對軟體的功能和 界面是否友好 ...
  • " 【.NET Core項目實戰 統一認證平臺】開篇及目錄索引 " 上篇文章我介紹瞭如何在網關上實現客戶端自定義限流功能,基本完成了關於網關的一些自定義擴展需求,後面幾篇將介紹基於 的認證相關知識,在具體介紹 實現我們統一認證的相關功能前,我們首先需要分析下 源碼,便於我們徹底掌握認證的原理以及後續 ...
  • 編輯文檔時,對一些需要修改的字元或段落可以通過查找替換的方式,快速地更改。在C# 在word中查找及替換文本一文中,主要介紹了在Word中以文本替換文本的方法,在本篇文章中,將介紹如何用一篇Word文檔、圖片或者表格來替換文檔中的指定文本字元串。示例要點如下: 1. 用文檔替換Word中的文本 2. ...
  • .NET、C#和ASP.NET三者之間的區別如下: 一、什麼是.NET?.NET是微軟公司下的一個開發平臺,.NET核心就是.NET Framwork(.NET框架)是.NET程式開發和運行的環境,在這個平臺下可以用不同的語言進行開發,因為.NET是跨語言的一個平臺。語言可以是C#,f#,j#,vb ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...