Winform開發的應用環境和相關技術介紹

隨著時間的推移,Winform也算是能夠堅持下來最久的技術之一了,它的昔日輝煌和現今的依舊活躍,導致了它依舊擁有者很龐大的用戶群體,雖然目前很多技術日新月異的,曾經的ASP、ASP.NET WebForm、Asp.NET MVC、WPF等技術基本上淡出了視野,而迎來了.NET Core、UWP等技術應用,.NET Core也給.NET迎來了一次重要的涅槃重生的契機,可以更高效的運行在各種平臺上,從而激發了.NET的又一春。Winform的技術雖然基本上已經壓縮在一定的范圍內,不過由于的用途廣泛,微軟也無法完全舍棄,據說在即將到來的.NET core 3.0里面,會支持Winform,那真是非常不錯的一次轉變。

image

1、Winform的應用場景

我自己也是一個Winform開發的擁躉,基本上十幾年來一直用著Winform開發各種各樣的應用(雖然我也做很多相關的Web開發),從最早的一些小工具,小共享軟件什么的,到后面給客戶開發一些數據管理系統、業務管理系統等等,因此在這方面使用還算有一定的背景,可以對WInform這個技術應用做一個個人的概括。

1)用戶體驗

在Winform應用里面,和其他Web系統比起來,它的用戶體驗是最好的,而且界面響應速度也比Web界面來的快捷一些,由于很多情況下,用戶考慮使用方便性,如一些報表的展示、打印、導入導出文件的處理等常規的操作,都還是習慣使用Winform這種定制型非常好的界面來處理,畢竟大多數情況下,單位都有一套業務和數據的管理系統來處理這些業務。

2)數據敏感

另外很多情況下,如一些事業單位、機構什么,他們的數據是比較敏感的,不希望對外公開,網絡的引入會提供數據外泄的可能,另外它們也是經常處于內網的環境下,因此一個單機版的程序就可以搞定他們的日常業務處理了,這種特別的業務環境,注定了使用Winform來處理會更勝一籌。

3)開發便利

Winform開發的程序,發布共享比較容易,直接安裝就可以使用,可以不需要部署在云端(雖然我的混合框架方式可以訪問Web API、WCF等服務獲取數據,透明的數據處理);而且Winform的界面開發起來非常方便,結合界面套件,可以做出非常棒的界面效果。另外從開發角度上講,Web前端的技術淘汰非常快,Winform的技術積累反而是在逐步加固的過程,因此對于一些開發人員來說,迭代Winform開發的應用會更加方便,也更加熟練,因此只要客戶在用,系統兼容,這種Winform的程序會一直保留下去。

2、Winform開發的過程

1)界面開發

Winform開發對比其他有不少優點,主要的特點還是開發方便,基于一定的框架,可以快速開發特定的業務管理系統。如下是我客戶關系管理系統的界面效果。主界面是采用了DevExpress套件,可以讓界面看起來非常統一漂亮,另外對于界面的開發,我們可以基于數據庫信息的基礎上,通過工具快速生成常規的列表展示界面,以及編輯界面,從而進行一定的調整即可。

對于列表界面,常規的就是包含數據的分頁展示、查詢、高級查詢、導入、導出、打印等這些常規的功能,這些都可以通過定義好的界面模板進行統一生成,生成后進行一定的調整(如加入左側樹形列列表)即可。

image

如這個編輯界面,也是基于數據庫信息的生成后進行一定的調整即可。我們可以快速的修改控件的類型,如修改為下來列表類型,備注類型等,而在代碼中進行字典類型綁定就可以顯示字典數據了。

image

2)后臺代碼開發

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

image

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

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

image

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

image

普通Winform框架的分層架構圖。

image

3)底層數據庫支持

在實際需求中,你往往不能決定客戶需要用什么數據庫,那么需要根據實際需求或者環境進行數據庫類型的選型,如果是單機版為了方便可以使用SQLite,如果是已有業務系統或者需要響應速度快一些的,那么考慮使用SQLServer或者Mysql、有些歷史原因的可能會用PostgreSQL或者Oracle等等。那么框架的彈性就需要支持多種數據庫的了,這種支持不能導致太大的工作量最好,否則會弄得焦頭爛額的。

框架底層數據庫訪問采用了微軟企業庫實現,因此在處理多種數據庫訪問的時候,能夠提供統一的訪問處理操作,同時對不同的數據庫支持操作也是非常不錯的。下圖是框架底層數據庫的支持情況。

image

采用了微軟企業庫Enterprise Library作為我們底層的數據庫訪問模塊后,對于多種數據庫的訪問操作,就會統一采用這個企業庫的數據庫訪問對象,操作起來非常一致,為了對不同數據庫的常規增刪改查等一些操作進行進一步的封裝,以達到簡化代碼的目的,因此我們可以為每個不同的數據庫定義一個數據訪問操作基類,以便實現一些不同數據庫差異性的處理,但是它們還是有一個共同的數據訪問基類。

采用不同的數據庫,我們需要為不同數據庫的訪問層進行生成處理,如為SQLServer數據的表生成相關的數據訪問層DALSQL,里面放置各個表對象的內容,不過由于采用了相關的繼承類處理和基于數據庫的代碼生成,需要調整的代碼很少。

image

4)數據集中的云端模式

在很多業務系統中,有很多需求是希望部署在云端服務器中,這種方式可以實現數據的幾種管理,也有利于安全。因此我們整合了WCF和Web API兩種服務訪問方式,而在開發界面基礎上,不需要太大的變化即可接入,這就是我們的混合開發框架。

混合框架的多種方式支持

image
image

而對于WCF或者Web API的封裝,我們是通過接口適配的方式,調用層需要對業務接口進行封裝,從而產生封裝的代碼量。因此可以利用代碼生成工具生成對應業務模塊的接口適配代碼,可以極大減輕對這部分的開發效率損耗。

混合框架的架構如下所示。

image

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

image

Winform調用Web API的過程,這個過程可以通過下面這個圖示進行講解。

image

5)模塊化的框架結構

在開發Winform應用的時候,我們除了希望簡化代碼外,其實很多常規的業務,我們希望不希望都要重新開發,如權限管理系統、字典管理、附件管理等,這些是很多業務都涉及到的模塊,我們應該在一定粒度上實現整合現有模塊即可,這樣可以降低我們開發的難度和減少開發時間,我們就可以把重要的時間花在具體的業務領域里面,快速響應客戶的需求開發。

混合型框架可以看成是Winform框架高級版本,除了它本身是一個完整的業務系統外,它外圍的所有輔助性模塊均(如通用權限、通用字典、通用附件管理、通用人員管理。。。。)都實現了這種混合型的框架,因此使用非常方便,整個框架如果簡化來看,就是在原有的Winform界面層,用接口調用方式,避免和業務邏輯類的緊耦合關系。

image
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容