網友評分: 5分
.NET Core SDK2.2是一款高性能開源框架,該工具有著跨平臺特性,開源使用并且更開放,帶來更強勁的速度提升,用戶不僅能使用它來建立自己的應用,還能修改和完善平臺,來迎合自己和他人的需求。
【跨平臺】
可以在Windows,macOS,Linux上運行
【靈活的部署機制】
1、Portable applications(便攜式應用):這種部署機制和傳統的.NET Framework相似,只要目標平臺上存在.NET Core Runtime即可。
2、Self-contained application(自宿主應用):顧名思義,這種部署機制將應用和運行時共同打包,即便目標平臺上沒有安裝.NET Core Runtime也能正常使用
第二種方式和.NET Native也是不一樣的,仍然使用CoreCLR,而.NET Native使用CoreRT作為運行時,詳細信息請見dotnet/corert
【命令行工具】
.NET程序所有的運行腳本都可以用命令行工具執行(cmd,bash)這里有幾個常見的donnet命令
【兼容性】
通過.NET Standard Library與.NET Framework,Xamarin,Mono兼容
【開源】
.NET Core從屬于.NET基金會,由微軟進行官方支持。使用MIT和Apache 2開源協議,文檔協議遵循CC-BY
使用.NET Core 2.0需要先安裝.NET Core SDK 2.0,并且在Visual Studio 2017中創建APP。
.NET Core SDK 2.0.0 包括了 .NET Core 2.0.0 Runtime,如果下載了SDK就不需要單獨下載Runtime了。
更新亮點:分層編譯(Tiered Compilation)
分層編譯是一種使運行時能夠更自適應地使用實時(JIT)編譯器,以在啟動時獲得更好的性能并最大化吞吐量的功能。該功能在 .NET Core 2.1 中是可選的,然后在 .NET Core 2.2 Preview 2 中默認啟用。不過開發團隊認為還沒有準備好在正式的 .NET Core 2.2 版本中默認啟用它,所以已將其切換回可選功能。
分層編譯有望在 .NET Core 3.0 中默認啟用。
運行時事件(Runtime Events)
我們通常需要監視運行時服務(如當前進程的 GC,JIT 和 ThreadPool ),以了解這些服務在運行應用程序時的行為方式。在 Windows 系統上,這通常使用 ETW 監視當前進程的 ETW 事件來完成。雖然這種方法仍然有效,但使用 ETW 并不總是很容易。在一些低權限環境中,或是在 Linux、macOS 上,都可能無法使用 ETW 。
從 .NET Core 2.2 開始,可以使用 EventListener 類來使用 CoreCLR 事件。這些事件描述了 GC,JIT,ThreadPool 和 interop 的行為。它們在 Windows 上作為 CoreCLR ETW 提供程序的一部分公開的相同事件。這允許應用使用這些事件或使用傳輸機制將它們發送到遙測聚合服務。
訂閱事件示例代碼:
internal sealed class SimpleEventListener : EventListener { // Called whenever an EventSource is created. protected override void OnEventSourceCreated(EventSource eventSource) { // Watch for the .NET runtime EventSource and enable all of its events. if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")) { EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1)); } } // Called whenever an event is written. protected override void OnEventWritten(EventWrittenEventArgs eventData) { // Write the contents of the event to the console. Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}"); for (int i = 0; i < eventData.Payload.Count; i++) { string payloadString = eventData.Payload[i] != null ? eventData.Payload[i].ToString() : string.Empty; Console.WriteLine($"\tName = \"{eventData.PayloadNames[i]}\" Value = \"{payloadString}\""); } Console.WriteLine("\n"); } }
SqlConnection 支持 AccessToken
SQL Server 的 ADO.NET provider —— SqlClient,現在支持將 AccessToken 屬性設置為使用 Azure Active Directory 以對 SQL Server 連接進行身份驗證。要使用此功能,你可以使用 Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 包中包含的 Active Directory Authentication Library for .NET 獲取 access token value 。
使用 Azure Active directory 驗證 SQL Server 連接示例:
// get access token using ADAL.NETvar authContext = new AuthenticationContext(authority);var authResult = await authContext.AcquireTokenAsync(appUri, clientCredential);// setup connection to SQL Servervar sqlConnection = new SqlConnection(connectionString);sqlConnection.AccessToken = authResult.AccessToken;await sqlConnection.OpenAsync();
此外,該版本還包含 Injecting code prior to Main,提供 Windows ARM32 支持等特性。