從2000年微軟啟動 .NET 戰略時,我還是一位大學生,當年著名的黑客 Miguel de Icaza, Miguel 為了尋找 GNOME 專案開發框架經過充分的調研啟動了一個志存高遠的專案:Mono,一個 Microsoft .NET Framework 的自由 GNU/Linux 實現,我在國外的 Linux 論壇上 循著 Miguel 的指引踏上了 .net 開發之路, 我開始接觸 .NET Framework 的時候還是 beta 階段,2002年2月13日微軟釋出了 .NET 1.0,我也畢業工作半年時間,開始使用 ASP .NET 1.0開發專案, 今天我已經伴隨 .NET 發展20年,在此 .NET 20年之際有感而發寫下這些感想。
在這20年間發生了巨大的變化,微軟一直能夠與時俱進,2000年的市值第二,2022年照樣排名第二,這期間微軟也是經歷了起起伏伏,作為微軟最重要的一個開發者平臺產品一樣經歷了起伏,就像微軟的股票一樣。
從2000年到2014年微軟讓 .NET Framework 作為 Windows 的一部分,微軟也站在開源的對立面,最經典的就是 Steve Ballmer,他當初曾將“開源”稱作微軟智慧財產權毒瘤。2014年之後微軟換了 CEO,全面擁抱Linux,.NET Core 開源,收購 Xamarin,構建起了全新的生態,微軟的重心轉移到了雲,微軟算是抓住了雲端計算時代,2017年微軟市值已經增長到了5000億美金,2022年已經是2.3萬億美金。從2014年開始的演變,支援多平臺,並提供給各種作業系統,如 Linux,Mac,iOS 和 Android 等。它涵蓋廣泛的應用程式,從桌面、Web 應用程式、雲、移動、遊戲、IoT 到 AI。
Windows 這個作業系統, 主要是以桌面為中心的用途, 從某種意義上說, 是為了提高特定環境下的開發效率而開始的,在 .NET 第 20 年終於達到了"所有應用的統一平臺"的高度。 雖然 MAUI(不是 GA )存在一些滯後,今年第二季度也會 GA,隨著 .NET 6 的釋出,One .NET 願景已經實現。
其實在 NET Framework 釋出之前,微軟從 COM 時代起就一直夢想著多平臺。微軟可以算是一家堅韌不拔的公司, 經過20年的不懈努力,反覆試驗和試錯,這其中也有不少是錯誤的,甚至現在可以感受到社會上的很多的軟黑曾經是軟粉,也許包容不下微軟的堅韌不拔。經過各種反思和20年的時光, 現在最重要的是開發者, 以開放為目標, 經過深思熟慮,迴歸服務好開發者。
.NET Framework、. NET Core 和 Xamarin 的統一,.NET 6 完成了統一 .NET 願景,統一了 SDK 、類庫和工具鏈,這些工具鏈以前是不同的,支援跨平臺本機和 Web UI 。願景還包括雲原生,Microsoft 計劃為所有現代工作負載提供最佳解決方案。.NET 為所有開發人員提供了更多的選擇。開發者使用 .NET 上的工具和平臺,無論他們選擇什麼,都很容易實現他們想要的。.NET 6 統一了類庫和 SDK。除了釋出新的 C# 10 和 F#6 外,它還支援 Apple M1 處理器。此外, 與 NET 5 不同,它還提供長期支援 (LTS),提供三年支援。
NET 在每次升級時,效能都會成為焦點。比如 NET 6 的 ASP.NET Core 網路應用程式比 Node.js 快10倍, gRpc 的 .NET 實現是效能最好的,超過了 C++ 的實現。在 .NET 6 中,還專注於加快 Web 應用程式效能,降低資源的佔用,換句話說就是對雲原生的投資。
現在 .NET 也是 OSS ,並且更新像任何其他 OSS 一樣頻繁釋出。然而,在實際操作中,瞭解版本升級週期更容易使用,因此時間表變得清晰, 作為一家企業公司,如果 .NET 的未來計劃被披露,那麼就可以放心地投資 .NET 技術。從使用長期支援版本的同一版本的想法出發,很容易轉向敏捷流程和思維方式,這些流程和思維將盡可能短的週期更新到新版本,而從安全應用程式開發的角度來看,現在最需要考慮的就是解決漏洞。
開源社群也有很多缺陷是因為工程運作上的問題,微軟具有商業公司血統的管理科學更多融合到 .NET 開源專案中去, 將來 開源、商業、學術將結合得更加完美。
.NET 程式設計師的現狀是:"在被迫開發各種應用的情況下,我們必須選擇針對性工具和框架,當前系統正在向雲轉移,基礎設施和服務也在發生變化,開發現場變得越來越複雜。. NET 開發人員 可以使用稱為宇宙第一的 Visual Studio 整合開發環境,可在各種目標上部署您喜愛的應用,從而保持高工作效率。
NET 6 還改進了對 "ASP.NET Core Blazor" 的支援,以方便 C# 開發人員進行 Web 前端開發。Web 應用程式開發在伺服器端和前端使用不同的語言和框架。前端 Web UI 基於基本的 JavaScript,通常使用框架(如 Angular、React 和 Vue)進行開發。ASP.NET Core Blazor 的職責是使能夠以 C# 等語言開發前端,而無需瞭解 JavaScript 框架 。
ASP.NET Core Blazor 以大多數現代網路瀏覽器支援的 WebAssembly 為技術基礎。因此,在 C# 中編寫的程式碼以本機效能作為 WebAssembly 執行。根據建立方法,您可以使其離線執行,也可以將其作為 PWA(主動 Web 應用)安裝在計算機上,並像本機應用程式一樣執行。這非常像以前的 Silverlight 或 Flash 那樣在外掛上執行,不一樣的地方是 Blazor Wasm 使用 Web 標準 WebAssembly。
ASP.NET Core Blazor 可以將 DLL 下載到 Web 瀏覽器,並在 WebAssembly 上執行。由於它完全在客戶端執行,因此無需伺服器元件即可離線執行,但下載大小較大。相反,它提供了一種在 Blazor 伺服器上執行程式並使用稱為 SignalR 的技術進行渲染的方法。這需要持久連線,UI 延遲高,但啟動速度快,並且具有在較舊的 Web 瀏覽器和瘦客戶端上可用的優點。