目錄 一、.NET 框架的背景.NET 框架最初是在 2002 年發(fā)布的。從編程框架的角度來(lái)說(shuō),它已經(jīng)很“成熟”了,幾乎包含了所有重要的、人們想要的、在主流編程語(yǔ)言中目前可用的功能。但是,認(rèn)為 .NET 已經(jīng)步入了“老年階段”是錯(cuò)誤的,“中年”可能是更恰當(dāng)?shù)拿枋觥.吘?,C 和 C++ 的存在時(shí)間遠(yuǎn)遠(yuǎn)超過(guò)了 C#。 雖然 .NET 框架仍然是開發(fā)它設(shè)計(jì)之初用來(lái)創(chuàng)建的應(yīng)用程序類型的絕佳選擇,但在過(guò)去的 15 年中,計(jì)算機(jī)領(lǐng)域已經(jīng)發(fā)生了很大的變化,我們將在下一節(jié)中進(jìn)行描述。 二、為什么選擇 .NET Core(和 Xamarin).NET 框架主要用于為運(yùn)行 Windows 操作系統(tǒng)的計(jì)算機(jī)(包括服務(wù)器和客戶端工作站)開發(fā)應(yīng)用程序。在 .NET 被引入時(shí),微軟在個(gè)人電腦操作系統(tǒng)中占據(jù)主導(dǎo)地位,智能手機(jī)還需要數(shù)年時(shí)間才會(huì)誕生。然而,隨著時(shí)間的推移,Unix 和 Apple 都成功地削減了微軟在計(jì)算機(jī)領(lǐng)域的市場(chǎng)份額。此外,一個(gè)更為重要的發(fā)展是向移動(dòng)設(shè)備的巨大轉(zhuǎn)移,而微軟在移動(dòng)領(lǐng)域的份額(無(wú)論是硬件還是軟件)甚至可以忽略不計(jì)。第三個(gè)主要趨勢(shì)是基于 Web 的應(yīng)用程序(而非基于桌面的應(yīng)用程序)的份額增加。 這三種趨勢(shì)降低了 Windws 桌面應(yīng)用程序的重要性,而有利于 Web 和移動(dòng)應(yīng)用程序以及在 Windows 以外的操作系統(tǒng)上運(yùn)行的桌面應(yīng)用程序的發(fā)展。這絕不意味著 Windows 桌面應(yīng)用程序很快就會(huì)消失,只是大多數(shù)人認(rèn)為未來(lái)最大的增長(zhǎng)將來(lái)自 Web 應(yīng)用和移動(dòng)應(yīng)用。 基于此,微軟得出結(jié)論,它可以用 .NET 框架的一個(gè)基于云的、跨平臺(tái)的、開源衍生產(chǎn)品,更好地解決 Web 開發(fā)以及 Linux 或 macOS 計(jì)算機(jī)的開發(fā)。它將這個(gè)新框架稱為 .NET Core。大約在同一時(shí)間,微軟收購(gòu)了 Xamarin 以解決 Android 和 IOS 等移動(dòng)平臺(tái)的開發(fā)問(wèn)題。 你需要知道的是,無(wú)論是開發(fā)完整的 .NET 框架應(yīng)用程序、.NET Core 應(yīng)用程序還是 Xamarin 應(yīng)用程序,你都可以使用 C# 語(yǔ)言。 三、.NET Core 的目標(biāo)以下列表總結(jié)了 .NET Core 的主要目標(biāo):
四、多平臺(tái)支持自計(jì)算機(jī)時(shí)代開始以來(lái),編程框架的圣杯一直是“次編寫,到處運(yùn)行”。盡管大多數(shù)新的努力似乎讓我們更接近這個(gè)目標(biāo),但是即便是現(xiàn)在,這個(gè)目標(biāo)仍然令人難以企及。.NET Core 允許開發(fā)人員創(chuàng)建在 Windows 上運(yùn)行的應(yīng)用程序,并且只需進(jìn)行少量的修改就可在 Linux 和 macOS 上運(yùn)行。在撰寫本文時(shí),有一些測(cè)試版的 .NET Core 能夠在 ARM 處理器(例如 Raspberry Pi)上運(yùn)行。 多平臺(tái)支持還包括在 Windows 以外的操作系統(tǒng)上進(jìn)行開發(fā)。Visual Studio Code 是微軟創(chuàng)建的一個(gè)新的集成開發(fā)環(huán)境,可以在 Linux、macOS 和 Windows 上運(yùn)行。 五、快速發(fā)展和升級(jí)過(guò)去,軟件通常每?jī)傻饺昃蜁?huì)升級(jí)一次主版本。例如,Windows 95 之后是 Windows 98,然后是 Windows 2000。同樣,Microsoft Office 2010 之后是 Microsoft Office 2013 和 Microsoft ffice 2016。在主版本之間,通常是一個(gè)或多個(gè)包含錯(cuò)誤修復(fù)和小改進(jìn)的服務(wù)包。 如今,用戶希望能夠加快改進(jìn)速度。例如,電動(dòng)汽車制造商特斯拉經(jīng)常并且頻繁地為其車輛中的軟件提供在線升級(jí)。 .NET 框架的初始版本大部分是通過(guò)光盤進(jìn)行分發(fā)的,再往前幾年,主要的軟件發(fā)布還需要使用大量的軟盤。當(dāng)互聯(lián)網(wǎng)首次進(jìn)人公眾視野時(shí),撥號(hào)速度通常為每秒 14.4 或 28.8 千比特。相比之下,今天,大多數(shù)軟件都是通過(guò)互聯(lián)網(wǎng)分發(fā)的,速度比之前快幾百甚至幾千倍。應(yīng)用程序加入了檢查服務(wù)器是否有可用更新的功能,并根據(jù)用戶的偏好自動(dòng)安裝或提示用戶選擇安裝時(shí)間。 應(yīng)用程序通常以模塊化方式設(shè)計(jì),以便可以獨(dú)立升級(jí)不同的組件,而無(wú)須更換整個(gè)應(yīng)用程序。在這方面,.NET Core 是高度模塊化的,可以通過(guò) NuGet 包自動(dòng)升級(jí),如下一節(jié)所述。 六、程序占用空間小、部署簡(jiǎn)單、版本問(wèn)題少.NET Core 基于 NuGet 包進(jìn)行分發(fā)。包是提供某些功能單元的代碼庫(kù)。包存儲(chǔ)在 NuGet Galley上,可以根據(jù)需要從中下載。開發(fā)人員可以決定他們創(chuàng)建的包的模塊化程度。 相比之下,.NET 框架現(xiàn)在包含 20000 多個(gè)類,在任何開發(fā)工作站和每個(gè)應(yīng)用程序用戶的計(jì)算機(jī)上都必須完整安裝。通過(guò)僅指定相關(guān)的包,.NET Core 應(yīng)用程序的總占用空間可以比完整的 .NET 框架應(yīng)用程序小得多。不可否認(rèn),每個(gè)客戶端工作站(每個(gè)版本)只需安裝一次 .NET 框架,但相比之下,該安裝過(guò)程是相當(dāng)漫長(zhǎng)的。 此外,要求運(yùn)行 .NET 框架應(yīng)用程序的所有目標(biāo)計(jì)算機(jī)必須與開發(fā)應(yīng)用程序的計(jì)算機(jī)具有相同的 .NET 版本,但是如果出于某種原因,無(wú)法在目標(biāo)計(jì)算機(jī)上升級(jí) .NET 框架,則可能會(huì)出現(xiàn)問(wèn)題。這可能是由權(quán)限、公司政策或其他因素造成的,就需要為特定用戶或者使用早期 .NET 版本的用戶重新編譯該應(yīng)用程序。 相比之下,.NET Core 應(yīng)用程序不會(huì)受到同樣的約束。.NET Core 框架可以與應(yīng)用程序代碼并行發(fā)布,因此永遠(yuǎn)不會(huì)發(fā)生版本沖突。在目標(biāo)計(jì)算機(jī)上已存在 .NET Core 框架(版本也合適)的情況下,應(yīng)用程序可以選擇使用現(xiàn)有代碼,從而進(jìn)一步減少應(yīng)用程序的安裝占用空間。 此外,由于每個(gè)應(yīng)用程序都可以擁有自己的 .NET Core 庫(kù)副本,因此可以在同一臺(tái)計(jì)算機(jī)上使用不同版本的 .NET Core 來(lái)并行運(yùn)行多個(gè) .NET Core 應(yīng)用程序。這將允許在不同時(shí)間升級(jí)不同的應(yīng)用程序,而無(wú)須同時(shí)升級(jí)所有的應(yīng)用程序。 七、開源社區(qū)支持一般認(rèn)為開源軟件的好處是成本更低、靈活性更高(包括可定制化)、自由度更大、安全性更高和責(zé)任性更強(qiáng)。 私有軟件的源代碼通常是一個(gè)嚴(yán)格保守的秘密。如果該軟件包含錯(cuò)誤或極端情況下的異常行為,那么該軟件的用戶無(wú)法知道軟件內(nèi)部是如何工作的。相比之下,任何擁有適當(dāng)工具的人都可以看到開源軟件(的源代碼),以便了解可能導(dǎo)致錯(cuò)誤或異常行為的原因。有了這些知識(shí),開發(fā)人員可以修復(fù)錯(cuò)誤或修改自己的與這部分代碼交互的代碼,從而避免不良后果。 當(dāng)有數(shù)百甚至數(shù)千名開發(fā)人員可以在錯(cuò)誤發(fā)現(xiàn)的第一時(shí)間就進(jìn)行修復(fù)時(shí),這些修復(fù)就可能會(huì)比私有軟件更快。至少在理論上,這可以產(chǎn)生更安全和更穩(wěn)定的代碼。 開發(fā)人員也可以自由地修改或擴(kuò)展開源軟件。與私有軟件相比,這給用戶提供了更大的靈活性。此外,如果將這些修改或擴(kuò)展反過(guò)來(lái)提供給項(xiàng)目,則其他用戶也可以從中受益。 八、改進(jìn)的應(yīng)用程序性能通過(guò)基于現(xiàn)有 .NET 框架創(chuàng)建一個(gè)新的框架,但又不放棄完整的 .NET 框架,微軟能夠解耦過(guò)時(shí)和遺留的東西,同時(shí)實(shí)現(xiàn)一個(gè)更適合當(dāng)今環(huán)境的新框架結(jié)構(gòu)。 .NET Core 1.0 于 2016 年 6 月發(fā)布,隨后版本 1.1 于 2017 年 3 月發(fā)布,增加了對(duì)幾個(gè)新的操作系統(tǒng)發(fā)行版的支持,增加了一些新的 API,還修復(fù)了一些錯(cuò)誤。 版本 2.0 于 2017 年 8 月發(fā)布。此版本顯著增加了 API 的數(shù)量,性能也有很大的改進(jìn)。此版本還包括對(duì) Visual Basic .NET 的支持。如你所見(jiàn),.NET Core 的改進(jìn)速度比 .NET框架快得多。 十一、.NET 框架的未來(lái)雖然你剛剛閱讀了這些內(nèi)容,但沒(méi)有必要擔(dān)心 .NET 框架的命運(yùn)。微軟承諾 .NET 框架將繼續(xù)發(fā)展,并將繼續(xù)在 Windows 操作系統(tǒng)的當(dāng)前和未來(lái)版本中得到支持。因此,它將繼續(xù)在 Windows桌面應(yīng)用程序的開發(fā)中發(fā)揮關(guān)鍵作用,特別是在企業(yè)領(lǐng)域。如前所述,.NET Core 的優(yōu)勢(shì)使其成為 Web (ASP.NET Core)和通用 Windows 平臺(tái)應(yīng)用程序開發(fā)的首選平臺(tái)。同時(shí),.NET Core 通常也是開發(fā)旨在 Linux 或 macOS 上運(yùn)行的應(yīng)用程序的最佳選擇。 十二、Xamarin 的適用之處Xamarin 是一個(gè)允許使用 C# 和 .NET 庫(kù)開發(fā)原生 Android、IOS 和 Windows 應(yīng)用程序的平臺(tái)。在 PC 上,Xamarin 的開發(fā)是在 Visual Studio 上進(jìn)行的(在啟用附加功能之后)。在 Mac 上,開發(fā)是在 Xamarin Studio 的繼任者 Visual Studio for Mac 上進(jìn)行的。不管是什么 IDE,也不管目標(biāo)平臺(tái)是 Android、iOS 還是 Windows,開發(fā)語(yǔ)言都是 C#。因此,Xamarin 擴(kuò)展了可將 C# 用作開發(fā)語(yǔ)言的范圍。 2016 年,Xamarin 被微軟收購(gòu),隨后 Xamarin 和 Visual Studio 捆綁在了一起。 連 Visual Studio 的社區(qū)(免費(fèi))版也包括了 Xamarin。Xamarin SDK 現(xiàn)在已經(jīng)是開源的了。微軟將 Xamarin 稱為“.NET 跨平臺(tái)移動(dòng)開發(fā)”。雖然從技術(shù)上講,Xamarin 的功能遠(yuǎn)不止如此,但這超出了本文的范圍。 原文鏈接:簡(jiǎn)單介紹 C# 和 .NET Core 的關(guān)系 (完) |
|