2020年微軟開發(fā)工具和技術(shù)的探索
Microsoft平臺開發(fā)人員在2020年應(yīng)該關(guān)注什么?
.NET 5, winui3.0, AKS, WSL 2,以及AzureSphere
在2019年底,當(dāng)你把你的應(yīng)用程序開發(fā)計(jì)劃和你的技術(shù)路線圖放在一起時(shí),它值得你向前看。過去幾年,微軟在很多平臺上都有了很大的改變,而且這種改變的速度并沒有放慢。
2020年你應(yīng)該關(guān)注什么?為什么?以下是針對Windows、Azure以及其他平臺的5個(gè)選項(xiàng)。它們并不是惟一的,但是它們應(yīng)該讓您走上一條通向更現(xiàn)代的開發(fā)平臺和工具集的道路。
開始過渡到.NET 5
構(gòu)建.NET代碼所面臨的最大挑戰(zhàn)可能是隨著.NET 5在2020年底的發(fā)布,從老舊的.NET Framework向.NET Core的轉(zhuǎn)變。將.NET的兩部分結(jié)合在一起是有意義的,即使它確實(shí)需要丟失一些舊的api。微軟在.NET GitHub資源庫上發(fā)布了一個(gè)列表,列出了哪些內(nèi)容可以遷移,哪些不可以遷移。一些缺失的api將轉(zhuǎn)移到社區(qū)實(shí)現(xiàn),而其他api將獲得更多現(xiàn)代替代方案。
如果您支持和開發(fā).NETFramework代碼,2020年將為您提供一個(gè)很好的機(jī)會來探索將來如何交付代碼。當(dāng)前的.NET Core 3.1版本是一個(gè)長期支持版本,并且與.NET Standard庫一起支持.NET 5中將提供的許多API。將代碼移植到.NET Core 3.1中可為您提供探索的機(jī)會不僅需要對代碼進(jìn)行哪些更改,還需要構(gòu)建新的工具鏈。
.NET Core的未來是跨平臺的,Blazor可以通過ASP.NET和Razor在WebAssembly上和服務(wù)器端使用。Windows,macOS和Linux上的.NET Core;并在移動(dòng)設(shè)備上使用Xamarin。將代碼遷移到.NET 5不僅是支持將來的Windows版本,而且是將其交付給更多平臺和用戶的機(jī)會。
開始探索WinUI 3.0
Windows平臺將在2020年發(fā)生變化。微軟最終將Windows SDK分為兩部分:將UI組件分離為WinUI,并保留操作系統(tǒng)級別的功能。在即將發(fā)布的WinUI 3.0中,UI組件將能夠以與操作系統(tǒng)不同的節(jié)奏進(jìn)行發(fā)布,并在發(fā)布時(shí)添加新控件。它們將在Windows 10中受支持,可在Win32和WinForms應(yīng)用程序以及通用Windows平臺(UWP)應(yīng)用程序中使用。
通過與UnoPlatform的合作關(guān)系,WinUI也將在現(xiàn)代瀏覽器(例如基于Chromium的新型Edge)等現(xiàn)代瀏覽器中得到支持,該平臺將控件移植到WebAssembly,從而使WinUI可以覆蓋更多的受眾?,F(xiàn)有的UWP應(yīng)用程序?qū)⒛軌蚴褂肳inUI 3.0,而只需進(jìn)行很少的更改,C ++代碼將能夠使用新控件添加對Microsoft Fluent設(shè)計(jì)語言的支持。
將AKS用于云原生應(yīng)用程序
構(gòu)建現(xiàn)代的云應(yīng)用程序意味著構(gòu)建基于分布式微服務(wù)的應(yīng)用程序,在需要的時(shí)間和地點(diǎn)部署容器化的代碼,以及管理資源以響應(yīng)需求。所有這些加在一起需要協(xié)調(diào)器來管理擴(kuò)展和部署。您可以自己實(shí)現(xiàn)Kubernetes,進(jìn)入kubectl和YAML配置文件的本質(zhì)。但是,Azure上有一個(gè)替代方案:Azure Kubernetes Service的托管選項(xiàng),適用于Linux和Windows容器。
通過使用熟悉的Azure門戶,可以訪問Azure自己的網(wǎng)絡(luò)功能以及使用HashiCorp的Terraform等工具的能力,從而簡化了部署容器化應(yīng)用程序和服務(wù)的過程。其他選項(xiàng)包括基于角色的訪問控制,以鎖定對資源的訪問,從而減少安全隱患。
AKS會自動(dòng)上下擴(kuò)展您的Kubernetes集群,并且它與Azure的監(jiān)視工具集成在一起,因此您可以密切關(guān)注服務(wù)運(yùn)營。結(jié)果是可以使用Kubernetes工具進(jìn)行細(xì)粒度控制的純Kubernetes平臺和熟悉的Azure門戶(可對其他Azure服務(wù)進(jìn)行托管訪問)進(jìn)行混合管理。該服務(wù)集成可以簡化Kubernetes的操作,例如,直接訪問Azure存儲以獲取持久性數(shù)據(jù)并支持Azure自己的容器注冊表。
如果要在Azure上構(gòu)建Kubernetes應(yīng)用程序,則別無選擇,尤其是考慮使用Azure Dev Spaces之類的服務(wù)時(shí)。 Dev Spaces建立在AKS之上,為您提供了一個(gè)安全的私有環(huán)境來構(gòu)建,測試和調(diào)試您的云原生代碼,而不會影響生產(chǎn)服務(wù)。
使用WSL 2和Docker在筆記本電腦上進(jìn)行云開發(fā)
不久之前,您在任何開發(fā)者活動(dòng)中都只會看到一行發(fā)光的Apple徽標(biāo)?,F(xiàn)在,它的陣容更加復(fù)雜了,因?yàn)槲④浺恢敝铝τ谑归_發(fā)人員重回Windows,可以快速訪問流行的語言,例如Python,Visual Studio Code中易于定制的程序員編輯器,新的Windows Terminal,以及大多數(shù)重要的是Windows Linux子系統(tǒng)(WSL)。
WSL最初模擬Linux內(nèi)核,不久將升級為與Windows一起運(yùn)行的自己的Linux內(nèi)核。 WSL 2旨在簡化在PC上構(gòu)建和測試云應(yīng)用程序的工作,還將包括可從Windows訪問的Linux文件系統(tǒng),并支持使用Visual Studio Code進(jìn)行遠(yuǎn)程編輯。 Docker已開始測試適用于WSL 2的Docker桌面版本。這將Windows的本機(jī)Linux容器支持添加到Windows,使用熟悉的dockerfiles構(gòu)建和部署本地容器實(shí)例,并使用Code直接處理其內(nèi)容。
Windows,Linux和Docker的結(jié)合為構(gòu)建強(qiáng)大的端到端開發(fā)工具集提供了靈活的基礎(chǔ),該工具集充分利用了每個(gè)平臺,并為您提供了靈活的工作方式,同時(shí)仍可將代碼交付到通用存儲庫。
使用Azure Sphere保護(hù)物聯(lián)網(wǎng)
自從我上次查看Microsoft安全物聯(lián)網(wǎng)平臺AzureSphere以來已經(jīng)有一段時(shí)間了。將基于硬件的安全性與自定義Linux內(nèi)核和云托管的管理平臺相結(jié)合是一種確保操作系統(tǒng)和在硬件上運(yùn)行的應(yīng)用程序未被篡改,并且無法更改或插入代碼的方式由惡意的第三方。
使用微軟的安全ARM微控制器的開發(fā)板已經(jīng)面世了一段時(shí)間,最近又有便宜的替代品加入其中。很顯然,Azure Sphere現(xiàn)在可以在您的產(chǎn)品中使用,并且可以使用生產(chǎn)就緒的模塊和SOC,因此您可以圍繞它構(gòu)建自己的硬件。您不需要新的開發(fā)工具;所有Azure Sphere開發(fā)都在熟悉的Visual Studio中進(jìn)行。
一組更有趣的發(fā)展是一組基于Sphere的保護(hù)單元,可以與現(xiàn)有的工業(yè)控制器一起使用,在將PLC和其他現(xiàn)有的工業(yè)系統(tǒng)與您的應(yīng)用程序集成時(shí)增加了一層保護(hù),從而使您可以連接可能已經(jīng)考慮過的設(shè)備過去風(fēng)險(xiǎn)太大,無法添加到物聯(lián)網(wǎng)平臺。