在22日,我在公眾號上發布了一條短文字,內容如下:
其實在.NET開發大軍中,還有一股力量,那就是桌面程序的開發者們。他們很少發聲,可能技術成熟,可能太企業化了,也可能我沒關注到。最近也在思考,是不是應該也分享一下這方面的技術。不知道大家是否關注?或你有什么好的建議,可以留言給我,謝謝🙏
到現在(24日早)收到了30多個公眾號朋友的留言,內容雖然形形色色,但從語義和字數上來看,這是大家真實心理寫照,大家對桌面技術熱愛,希望社區對桌面技術的分享還是很強烈的。
還有一部分人希望在上位機方面分享技術,但由于本人沒有從事過相關工作,所以很遺憾,不能給大家帶來實踐分享,雖然業務場景不熟,如果有什么技術問題,可以交流,如果有代表性,可以形成一篇技術文章,一起記錄下來,聯名發布在公眾號上,為他人的類似問題提供一點幫助。
我自己做過10多年的CS開發,雖然現在一直從事web開發和架構工作,但對桌面開發仍情有獨鐘。近期也一直在思考,桌面開發方面的事情,主要有以下幾個方面:
技術層面:.NET的桌面開發一直是以WinForm,WPF為主,雖然之后推出UWP以及最近推出的MAUI,但與WPF的基調雷同。在傳統行業,桌面開發應該還是WinForm占有量比較多一些,也有相當的傳統應用在向WPF遷移(這只是個人從身邊的信息感覺,沒有真實的調查)。不管WinForm還是WPF,推出也有相當長的時間了,技術都相對成熟,近期最大的變化就是從.NET Framework轉到.NET(core),這不意味著他們可以跨平臺到Linux下了,只是為了統一.NET的基礎框架庫而已。MAUI反倒可以在跨平臺上更得心應手一些。與日新月異的web技術不同,.NET桌面的這兩個框架沒有發生大的改變,但這不代表CS架構沒有改變,WinForm和WPF更多的是UI層,展示層,CS架構的程序不只有UI,后面有與數據打交道的ORM,與三方API交流的http通信,與資源打交通的IO等,隨著.NET的進化而在進化著。舉簡單的例子,比如訪問數據,IO和Http的異步化(雖然不是近幾天的升級),就是一個重要的改變;還有HttpClient的不斷優化,也證明了.NET類庫的演進和提升。所以說,我們廣義說的WinForm和WPF是老技術,是說在UI層次上沒有更多的新東西,比較控制,UI渲染機制,以及UI性能提升等方面沒有太多的變化。
人力層面:.NET本身在高等院校教育中的課程占比比較低,從大學里面出來的真正愛好和使用者就寥寥無幾了,那分到.NET桌面開發上的人,就鳳毛麟角了,所以期待從大學生這個穩定的人力資源市場招到合適的人是難上加難。通常情況企業都是讓一些有開發經驗的程序員轉或兼做桌面開發,畢竟WinForm和WPF"拖拖拽拽"就開發完了。
基于這兩個層面,想把WinForm和WPF這兩個老瓶,裝上新酒,和大家小酌一杯。一是把傳統的面面UI和日新月異的Web技術的結合,讓它們互相借鑒,相互搭配,來提升桌面系統的性能和降低開發成本。二是希望與您聯合署名推出一些系列性的文章(比如上位機),來為新人提供一些力所能及的幫助,讓.NET桌面后繼有更優秀的人。
我也知道,我的能力和時間也很有限,畢竟也要養家糊口,不可能把全部精力投入到社區,但本著“不積跬步無以至千里”的精神,還是希望記錄下來,讓需要之人取所需。
對CS架構,或相關領域有想法的您,可以加我微信,線下交流。
千里之行,始于足下,近期會寫一些基礎的,并且有自己拙笨見解的WinForm文章,以開始對CS框架的探討。