從.NET遷移到.NET Core的一個主要原因,在于后者具備在Linux上運行的能力。但是對于大型企業(yè)應用,不可能實現一步遷移到位。由此,Microsoft推薦采用一種逐步遷移做法:
-
第一步,遷移到ASP.NET Core(依然使用.NET Framework);
-
第二步,遷移到.NET Core(依然運行在Windows上);
-
第三步,遷移到Linux上;
-
第四步,遷移到(托管Linux主機的)Azure中。
這一做法理論上可行,但是在第二步中會有阻礙,因為缺乏關鍵API。的推出,意在解決這一問題。該兼容包是一個NuGet軟件包集合,其中包含了近兩萬個API,目的在于解決Web應用程序開發(fā)人員對于優(yōu)秀軟件庫的需求。
新引入的API大體上可分為兩類。一類是僅適用于Windows的API,另一類是跨平臺的軟件庫。其中,僅適用于Windows的API包括:
-
Active directory;
-
加密;
-
事件日志和性能計數器;
-
文件系統(tǒng)安全;
-
命名管道;
-
注冊表訪問(Registry Access);
-
Windows服務。
其中大部分API是與Windows操作系統(tǒng)緊密關聯(lián)的,而相應的Linux API通常在設計上迥異。
跨平臺的軟件庫包括:
-
緩存;
-
配置管理(ConfigurationManager),即處理遺留的app.config和web.config文件;
-
數據集擴展(DatasetExtensions),用于不使用ORM訪問數據庫;
-
ODBC數據庫訪問;
-
System.Configuration.ConfigurationManager(MEF v1);
-
System.Drawing;
-
System.IO.Packaging,用于與MS Office類型的壓縮文件交互;
-
System.ServiceModel,即WCF(Windows Communication Foundation)。
需指出的是,這些API是刻意獨立于.NET Core的完整發(fā)布的。對此,Microsoft的Immo Landwerth給出了如下解釋:
以獨立軟件包提供的原因在于:(一)不少API是僅出于兼容性的考慮而提供的。在新代碼中,不應依賴于這些API;(二)不少API僅用于Windows平臺。我們不希望將用戶引上一條更難以跨平臺遷移應用的道路。
為了易于區(qū)分僅適用于Windows的和跨平臺的API,現在有一種可用。該工具可以標記出那些在應用中不應繼續(xù)依賴的API。
你可以使用與棄用API相同的抑制選項,但是也可以選擇對特定平臺給出抑制警告。如果你僅規(guī)劃在一組特定的平臺上支持你的代碼,例如只支持Windows和Linux但不支持macOS,這一工具十分有用。為此,你只需編輯項目文件,添加一個PlatformCompatIgnore
屬性,并在該屬性中列出所有要忽略的平臺。
標簽:
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn