轉(zhuǎn)帖|使用教程|編輯:龔雪|2021-07-16 10:14:09.323|閱讀 376 次
概述:本文主要介紹Winform開發(fā)的應(yīng)用環(huán)境和相關(guān)技術(shù)介紹,希望能幫助大家更深入的了解winform開發(fā)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
隨著時(shí)間的推移,Winform也算是能夠堅(jiān)持下來最久的技術(shù)之一了,它的昔日輝煌和現(xiàn)今的依舊活躍,導(dǎo)致了它依舊擁有者很龐大的用戶群體,雖然目前很多技術(shù)日新月異的,曾經(jīng)的ASP、ASP.NET WebForm、Asp.NET MVC、WPF等技術(shù)基本上淡出了視野,而迎來了.NET Core、UWP等技術(shù)應(yīng)用,.NET Core也給.NET迎來了一次重要的涅槃重生的契機(jī),可以更高效的運(yùn)行在各種平臺上,從而激發(fā)了.NET的又一春。Winform的技術(shù)雖然基本上已經(jīng)壓縮在一定的范圍內(nèi),不過由于的用途廣泛,微軟也無法完全舍棄,據(jù)說在即將到來的.NET core 3.0里面,會支持Winform,那真是非常不錯(cuò)的一次轉(zhuǎn)變。
我自己也是一個(gè)Winform開發(fā)的擁躉,基本上十幾年來一直用著Winform開發(fā)各種各樣的應(yīng)用(雖然我也做很多相關(guān)的Web開發(fā)),從最早的一些小工具,小共享軟件什么的,到后面給客戶開發(fā)一些數(shù)據(jù)管理系統(tǒng)、業(yè)務(wù)管理系統(tǒng)等等,因此在這方面使用還算有一定的背景,可以對WInform這個(gè)技術(shù)應(yīng)用做一個(gè)個(gè)人的概括。
在Winform應(yīng)用里面,和其他Web系統(tǒng)比起來,它的用戶體驗(yàn)是最好的,而且界面響應(yīng)速度也比Web界面來的快捷一些,由于很多情況下,用戶考慮使用方便性,如一些報(bào)表的展示、打印、導(dǎo)入導(dǎo)出文件的處理等常規(guī)的操作,都還是習(xí)慣使用Winform這種定制型非常好的界面來處理,畢竟大多數(shù)情況下,單位都有一套業(yè)務(wù)和數(shù)據(jù)的管理系統(tǒng)來處理這些業(yè)務(wù)。
另外很多情況下,如一些事業(yè)單位、機(jī)構(gòu)什么,他們的數(shù)據(jù)是比較敏感的,不希望對外公開,網(wǎng)絡(luò)的引入會提供數(shù)據(jù)外泄的可能,另外它們也是經(jīng)常處于內(nèi)網(wǎng)的環(huán)境下,因此一個(gè)單機(jī)版的程序就可以搞定他們的日常業(yè)務(wù)處理了,這種特別的業(yè)務(wù)環(huán)境,注定了使用Winform來處理會更勝一籌。
Winform開發(fā)的程序,發(fā)布共享比較容易,直接安裝就可以使用,可以不需要部署在云端(雖然我的混合框架方式可以訪問Web API、WCF等服務(wù)獲取數(shù)據(jù),透明的數(shù)據(jù)處理);而且Winform的界面開發(fā)起來非常方便,結(jié)合界面套件,可以做出非常棒的界面效果。另外從開發(fā)角度上講,Web前端的技術(shù)淘汰非???,Winform的技術(shù)積累反而是在逐步加固的過程,因此對于一些開發(fā)人員來說,迭代Winform開發(fā)的應(yīng)用會更加方便,也更加熟練,因此只要客戶在用,系統(tǒng)兼容,這種Winform的程序會一直保留下去。
Winform開發(fā)對比其他有不少優(yōu)點(diǎn),主要的特點(diǎn)還是開發(fā)方便,基于一定的框架,可以快速開發(fā)特定的業(yè)務(wù)管理系統(tǒng)。如下是我客戶關(guān)系管理系統(tǒng)的界面效果。主界面是采用了DevExpress套件,可以讓界面看起來非常統(tǒng)一漂亮,另外對于界面的開發(fā),我們可以基于數(shù)據(jù)庫信息的基礎(chǔ)上,通過工具快速生成常規(guī)的列表展示界面,以及編輯界面,從而進(jìn)行一定的調(diào)整即可。
對于列表界面,常規(guī)的就是包含數(shù)據(jù)的分頁展示、查詢、高級查詢、導(dǎo)入、導(dǎo)出、打印等這些常規(guī)的功能,這些都可以通過定義好的界面模板進(jìn)行統(tǒng)一生成,生成后進(jìn)行一定的調(diào)整(如加入左側(cè)樹形列列表)即可。
如這個(gè)編輯界面,也是基于數(shù)據(jù)庫信息的生成后進(jìn)行一定的調(diào)整即可。我們可以快速的修改控件的類型,如修改為下來列表類型,備注類型等,而在代碼中進(jìn)行字典類型綁定就可以顯示字典數(shù)據(jù)了。
對于一個(gè)新建的業(yè)務(wù)表,我們需要開發(fā)的需要底層的實(shí)現(xiàn)和界面層的展示,這些工作量也是非常巨大的,如果基于控件細(xì)粒度的處理,也是非常繁瑣的工作,因此基于這些開發(fā)過程的考慮,我們引入了提高效率開發(fā)的代碼生成工具Database2Sharp,專門為我們基于開發(fā)框架基礎(chǔ)上的框架實(shí)現(xiàn)代碼開發(fā),和業(yè)務(wù)界面展示的快速開發(fā)。
代碼生成工具,不僅能夠讓它生成我們常規(guī)開發(fā)的界面層以下的實(shí)現(xiàn)代碼(包括BLL、DAL、Entity、IDAL等層,以及混合框架的WCF、Web API的實(shí)現(xiàn)層和調(diào)用封裝層),以及界面層的調(diào)用代碼。
有了這些的處理,我們可極大減輕工作量。
生成的項(xiàng)目中,我們已經(jīng)有了對應(yīng)框架支持的實(shí)現(xiàn)層了。
普通Winform框架的分層架構(gòu)圖。
在實(shí)際需求中,你往往不能決定客戶需要用什么數(shù)據(jù)庫,那么需要根據(jù)實(shí)際需求或者環(huán)境進(jìn)行數(shù)據(jù)庫類型的選型,如果是單機(jī)版為了方便可以使用SQLite,如果是已有業(yè)務(wù)系統(tǒng)或者需要響應(yīng)速度快一些的,那么考慮使用SQLServer或者M(jìn)ysql、有些歷史原因的可能會用PostgreSQL或者Oracle等等。那么框架的彈性就需要支持多種數(shù)據(jù)庫的了,這種支持不能導(dǎo)致太大的工作量最好,否則會弄得焦頭爛額的。
框架底層數(shù)據(jù)庫訪問采用了微軟企業(yè)庫實(shí)現(xiàn),因此在處理多種數(shù)據(jù)庫訪問的時(shí)候,能夠提供統(tǒng)一的訪問處理操作,同時(shí)對不同的數(shù)據(jù)庫支持操作也是非常不錯(cuò)的。下圖是框架底層數(shù)據(jù)庫的支持情況。
采用了微軟企業(yè)庫Enterprise Library作為我們底層的數(shù)據(jù)庫訪問模塊后,對于多種數(shù)據(jù)庫的訪問操作,就會統(tǒng)一采用這個(gè)企業(yè)庫的數(shù)據(jù)庫訪問對象,操作起來非常一致,為了對不同數(shù)據(jù)庫的常規(guī)增刪改查等一些操作進(jìn)行進(jìn)一步的封裝,以達(dá)到簡化代碼的目的,因此我們可以為每個(gè)不同的數(shù)據(jù)庫定義一個(gè)數(shù)據(jù)訪問操作基類,以便實(shí)現(xiàn)一些不同數(shù)據(jù)庫差異性的處理,但是它們還是有一個(gè)共同的數(shù)據(jù)訪問基類。
采用不同的數(shù)據(jù)庫,我們需要為不同數(shù)據(jù)庫的訪問層進(jìn)行生成處理,如為SQLServer數(shù)據(jù)的表生成相關(guān)的數(shù)據(jù)訪問層DALSQL,里面放置各個(gè)表對象的內(nèi)容,不過由于采用了相關(guān)的繼承類處理和基于數(shù)據(jù)庫的代碼生成,需要調(diào)整的代碼很少。
在很多業(yè)務(wù)系統(tǒng)中,有很多需求是希望部署在云端服務(wù)器中,這種方式可以實(shí)現(xiàn)數(shù)據(jù)的幾種管理,也有利于安全。因此我們整合了WCF和Web API兩種服務(wù)訪問方式,而在開發(fā)界面基礎(chǔ)上,不需要太大的變化即可接入,這就是我們的混合開發(fā)框架。
混合框架的多種方式支持
而對于WCF或者Web API的封裝,我們是通過接口適配的方式,調(diào)用層需要對業(yè)務(wù)接口進(jìn)行封裝,從而產(chǎn)生封裝的代碼量。因此可以利用代碼生成工具生成對應(yīng)業(yè)務(wù)模塊的接口適配代碼,可以極大減輕對這部分的開發(fā)效率損耗。
混合框架的架構(gòu)如下所示。
代碼生成工具Database2Sharp,生成整體性的混合型框架項(xiàng)目如下所示,只是沒有下圖的界面部分,這部分在實(shí)際開發(fā)過程中,結(jié)合我的混合型框架案例進(jìn)行整合即可,另外也可以界使用Database2Sharp進(jìn)行Winform界面的開發(fā),這樣整體性就非常方便操作了:
Winform調(diào)用Web API的過程,這個(gè)過程可以通過下面這個(gè)圖示進(jìn)行講解。
在開發(fā)Winform應(yīng)用的時(shí)候,我們除了希望簡化代碼外,其實(shí)很多常規(guī)的業(yè)務(wù),我們希望不希望都要重新開發(fā),如權(quán)限管理系統(tǒng)、字典管理、附件管理等,這些是很多業(yè)務(wù)都涉及到的模塊,我們應(yīng)該在一定粒度上實(shí)現(xiàn)整合現(xiàn)有模塊即可,這樣可以降低我們開發(fā)的難度和減少開發(fā)時(shí)間,我們就可以把重要的時(shí)間花在具體的業(yè)務(wù)領(lǐng)域里面,快速響應(yīng)客戶的需求開發(fā)。
混合型框架可以看成是Winform框架高級版本,除了它本身是一個(gè)完整的業(yè)務(wù)系統(tǒng)外,它外圍的所有輔助性模塊均(如通用權(quán)限、通用字典、通用附件管理、通用人員管理。。。。)都實(shí)現(xiàn)了這種混合型的框架,因此使用非常方便,整個(gè)框架如果簡化來看,就是在原有的Winform界面層,用接口調(diào)用方式,避免和業(yè)務(wù)邏輯類的緊耦合關(guān)系。
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
本文轉(zhuǎn)載自:
DevExpress技術(shù)交流群4:715863792 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)