C# 獨立的部署模型
完整的.NETFramework最常被安裝到將運行開發(fā)人員創(chuàng)建的程序的計算機或服務(wù)器上。這么做的一個好處是,只需要安裝框架一次,所有應(yīng)用程序就可以根據(jù)需要引用和使用該框架,從而節(jié)省本地存儲空間。但是,有可能發(fā)生這樣一種不期望遇到的場景:所有的應(yīng)用程序引用相同的框架程序集,但是程序集被意外更新,破壞了一些代碼功能。
對于完整的.NETFrameworic,有兩種差別很大的升級類型:并行和就地升級。并行升級代表主版本的變化。例如,安裝.NETFramework2.0和.NETFramework4.0可支持基于2.0或4.0版本的程序。當CLR和框架組件發(fā)生重要修改或優(yōu)化時,可能出現(xiàn)這種情形。如果一個程序面向.NET Framework 2.0,但是安裝的是.NET Framework 4.0,那么產(chǎn)生影響的風險很小,因為這兩個版本是并行安裝的。與之相對,就地升級(例如從.NET Framework 4.5升級到.NET Framework 4.6.2),則可能包含對mscorlib.dll和其他.NET程序集的修改,而當程序 面向.NETFramework 4.x時,是需要運行這些文件的。
.NET Core通過實現(xiàn)獨立性(也稱為應(yīng)用程序本地框架)解決了這個問題。應(yīng)用程序本地框架的含義是,程序內(nèi)引用的程序集與模塊或可執(zhí)行文件包含在一起,當部署程序后,程序包含運行時需要的所有程序集(運行庫、編譯器和引用的框架組件)。程序不再依賴于在機器范圍內(nèi)安裝的任何.NET Framework,對機器范圍內(nèi)的.NET Frameworic版本所做的任何并行或就地修改,不會影響.NET Core程序。最后,因為程序集很小、很簡潔(如針對云優(yōu)化),所以占用的本地存儲空間有限。
這意味著對于開發(fā)人員和公司來說,當交付產(chǎn)品后,他們可以確信即使在計算機或服務(wù)器上升級框架,程序也仍將繼續(xù)工作。在過去,當發(fā)生破壞性升級后,開發(fā)人員和IT支持人員要參加問題升級會議,在危機狀態(tài)下解決程序無法繼續(xù)運行的問題。在企業(yè)中,這是非常復(fù)雜的情形,因為小組、團隊和流程要想修改生產(chǎn)環(huán)境,
需要獲得許多人的同意和批準。常見的做法是,當開發(fā)完成后,代碼所有權(quán)就轉(zhuǎn)交給支持團隊,而這就是問題變得復(fù)雜和需要獲得批準的根源所在。這些限制使得問題更具挑戰(zhàn)性。
而選擇.NET Core作為框架時,這種危機場景將不會發(fā)生。相反,升級只在應(yīng)用程序級別進行,在升級之前,可先進行大量的開發(fā)、集成和性能測試。如果升級到新的程序集版本時,在開發(fā)周期中發(fā)現(xiàn)了問題,開發(fā)人員和公司可決定采取什么行動。在開發(fā)環(huán)境中決定升級代碼來支持新版本,或者回滾到升級前能良好工作的版本,要比在生產(chǎn)危機情形下做決定更容易。
點擊加載更多評論>>