.Net Core及.Net Standard主要概念回顾
在.Net Core之前,選擇編譯目標是一個相對簡單的操作。現在,開發人員面臨多種可能,選擇一個目標不再那么顯而易見了。要想對.Net Core有一個全面的了解,就要了解兩個主要的概念:“目標框架別名(Target Framework Moniker)”和.Net Standard。
目標框架別名(TFM)
目標框架別名是.NET Core中應用程序所針對的框架類型+版本號的ID。我們可以把別名分成兩個不同的類型:跨平臺的目標.Net Standard和平臺實現,如.Net 4.6、.Net Core 1.0和Xamarin。
.Net Standard
.Net Standard庫是.Net Core可移植性的核心。其目的是定義標準的API集。這些API,如集合、線程、反射,是由.Net Core、.Net 4.5、Xamarin和Mono等平臺實現的。它們是開發人員用來構建自己的庫和應用程序的基本構建塊。
從1.0到2.0,.Net Standard的每個版本都定義了一組特定的庫。下面的代碼直觀地展示了標準庫和平臺之間的關系:
interface INetStandard10 {void Primitives();void Reflection();void Tasks();void Collections();void Linq(); }interface INetStandard11 : INetStandard10 {void ConcurrentCollections();void InteropServices(); }interface INetFramework45 : INetStandard11 {//特定于平臺的APIvoid AppDomain();void Xml();void Drawing();void SystemWeb();void WPF();void WindowsForms();void WCF(); }CoreFx GitHub庫提供了所有API的列表及其相關的netstandard版本。
框架/運行時別名
除netstandard之外的別名是可以讓應用程序在其中運行的、實際的運行時環境。對于新應用程序,常用的別名如下:
- .NET Core - netcoreapp 
- .NET Framework - net 
- Universal Windows Platform - uap 
- Xamarin IOs - xamarinios 
- Mono Android - monoandroid 
下面是一個簡單的平臺選擇指南:
應用開發人員:編碼應以netcoreapp1.0、uap10.0、net452、xamarinios等TFM為目標平臺;
包/庫作者:盡量以netstandard的最低版本為目標,那樣可以在所有支持那個netstandard版本以及更高版本的平臺上運行。
.Net Core和netcoreapp1.0比較
雖然表面上看起來相似,但.Net Core和netcoreapp1.0的意思完全不同。.Net Core這個叫法中沒有版本號,通常用于描述實現.Net模塊化、解決多個平臺之間二進制兼容性問題的總體方案。但是,netcoreapp1.0有更具體的意義。它是可以在Windows、Mac OS和Linux上運行的跨平臺運行時的別名。簡而言之,.Net Core既可以指跨平臺的方案,也可以指跨平臺的運行時,這要視情況而定。
關于這一點,一個具體的應用場景是從Asp.Net遷移到Asp.Net Core時依賴項不支持.Net Core的問題。如果只是想以.Net Framework為目標平臺,則這種遷移是可能的。例如,這讓你可以使用Asp.Net Core,但仍然以.Net 4.6為目標平臺。
原文地址:http://www.infoq.com/cn/news/2016/10/dotnet-core-standard-monikers
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.Net Core及.Net Standard主要概念回顾的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: .NET CoreCLR开发人员指南(上
- 下一篇: 应用工具 .NET Portabilit
