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

来源:https://www.cnblogs.com/wuhuacong/archive/2019/03/19/10557446.html
-Advertisement-
Play Games

隨著時間的推移,Winform也算是能夠堅持下來最久的技術之一了,它的昔日輝煌和現今的依舊活躍,導致了它依舊擁有者很龐大的用戶群體,雖然目前很多技術日新月異的,曾經的ASP、ASP.NET WebForm、Asp.NET MVC、WPF等技術基本上淡出了視野,而迎來了.NET Core、UWP等技術... ...


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

 

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套件,可以讓界面看起來非常統一漂亮,另外對於界面的開發,我們可以基於資料庫信息的基礎上,通過工具快速生成常規的列表展示界面,以及編輯界面,從而進行一定的調整即可。

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

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

 

2)後臺代碼開發

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

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

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

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

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

 

3)底層資料庫支持

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

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

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

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

 

4)數據集中的雲端模式

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

混合框架的多種方式支持

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

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

 

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

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

 

5)模塊化的框架結構

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

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

 


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

-Advertisement-
Play Games
更多相關文章
  • 問題描述: 項目在本地運行不報錯,上傳到 GitHub 之後,再 clone 到本地,執行: npm install 安裝完成之後再執行: npm run dev 這時報錯 Error: No PostCSS Config found in... 本以為是 GitHub 上傳的問題,後開又試了兩回, ...
  • 很多企業和個人的網站上線後,一直不被百度、搜狗、谷歌等搜索引擎收錄網頁,但仔細查看網站,網站已經有很多的文章內容了,即使再保持頻繁的更新,網站依舊未被這些搜索引擎收錄頁面,這對於企業網站或者個人網站來說是不好的,相當於別人無法通過搜索查找到你網站的信息。在這個環節可能是你的網站SEO方面以及網站運維 ...
  • 這周其實突然感覺焦慮有點蔓延。主要是隨便上招聘網站、培訓網站、開發類新聞網,.Net的身影已經越來越少了,並不一定說是要貶低.net,而是這些年他的職業前景確實不太光鮮。一線主流企業的核心場景都不用.net的,或者只是被當成備胎,要不是這兩年微軟的開源政策有所改觀,市場有點動靜,否則連備胎都當不成。 ...
  • 簡介:本文是一個簡單的demo用於展示利用StackExchange.Redis和Log4Net構建日誌隊列,為高併發日誌處理提供一些思路。 0、先下載安裝Redis服務,然後再服務列表裡啟動服務(Redis的預設埠是6379,貌似還有一個故事)(https://github.com/Micros ...
  • 老規矩:先把全部源碼上傳,見本文底部。 相對於Demo3的區別,就是能自動載入繼承了IJob的任務,任務主體程式分離。 在exe執行文件的同級下建一個MyJobs的文件夾,每次會自動掃描該文件夾下的Job,添加到系統中來。 舉例如下:現在有兩個在系統中的任務。 複製一個編譯好的Job dll文件放在 ...
  • 走入.NET Core 世界:為了真實環境,特意買了台伺服器,走了一遍,才與大伙分享過程〜〜〜〜 ...
  • 導師1614003187 大家好,今天為大家揭秘為什麼玩一分鐘大發快三總是輸,大發快三回血要怎麼回如果你是新手那麼你現在可以先停止投註,想回血我們要先找到技巧只要你學會了,就不需要再一直百度搜索大發快三求人帶回血了記住一點倍投,就是一條看不到終點的泥潭。如果你一直堅持倍投,那麼你總會與心跳離不開,如 ...
  • 今天朋友問到如何選購伺服器,並提到有哪些主流的雲伺服器廠商,仔細梳理了下,主流的雲伺服器廠商主要有阿裡雲、騰訊雲、百度雲、華為雲、京東雲、西部數據、網易雲、浪潮雲、金山雲、滴滴雲等幾個大廠商,此外除了上述幾個雲伺服器廠商,國內還有其他小廠商伺服器。國外的雲伺服器一般用的多就是亞馬遜雲伺服器、搬瓦工V ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...