從.NET遷移到.NET Core的一個主要緣由,在於後者具有在Linux上運行的能力。可是對於大型企業應用,不可能實現一步遷移到位。由此,Microsoft推薦採用一種逐步遷移作法:
第一步,遷移到ASP.NET Core(依然使用.NET Framework);
第二步,遷移到.NET Core(依然運行在Windows上);
第三步,遷移到Linux上;
第四步,遷移到(託管Linux主機的)Azure中。
這一作法理論上可行,可是在第二步中會有阻礙,由於缺少關鍵API。用於.NET Core的Windows兼容包的推出,意在解決這一問題。該兼容包是一個NuGet軟件包集合,其中包含了近兩萬個API,目的在於解決Web應用程序開發人員對於優秀軟件庫的需求。web
新引入的API大致上可分爲兩類。一類是僅適用於Windows的API,另外一類是跨平臺的軟件庫。其中,僅適用於Windows的API包括:數據庫
其中大部分API是與Windows操做系統緊密關聯的,而相應的Linux API一般在設計上迥異。
跨平臺的軟件庫包括:緩存
需指出的是,這些API是刻意獨立於.NET Core的完整發布的。對此,Microsoft的Immo Landwerth給出了以下解釋:
以獨立軟件包提供的緣由在於:(一)很多API是僅出於兼容性的考慮而提供的。在新代碼中,不該依賴於這些API;(二)很多API僅用於Windows平臺。咱們不但願將用戶引上一條更難以跨平臺遷移應用的道路。
爲了易於區分僅適用於Windows的和跨平臺的API,如今有一種API兼容性分析工具可用。該工具能夠標記出那些在應用中不該繼續依賴的API。
你可使用與棄用API相同的抑制選項,可是也能夠選擇對特定平臺給出抑制警告。若是你僅規劃在一組特定的平臺上支持你的代碼,例如只支持Windows和Linux但不支持macOS,這一工具十分有用。爲此,你只需編輯項目文件,添加一個PlatformCompatIgnore屬性,並在該屬性中列出全部要忽略的平臺。安全