.NET Core 2.2 dirilis. Apa yang baru? (1 dari 3)

Pada 4 Desember, .NET Core 2.2 dirilis. "Siapa yang bisa terkejut dengan berita itu seminggu yang lalu?" - Anda bertanya dan Anda akan benar ... dan omong-omong, apakah Anda sudah diperbarui? )


Sekarang ke kasing. Rilis baru termasuk peningkatan diagnostik dalam runtime, dukungan untuk ARM32 untuk Windows, dan dukungan untuk Azure Active Directory untuk SQL Client. Perbaikan terbesar untuk rilis ini adalah ASP.NET Core.



ASP.NET Core 2.2 dan Entity Framework Core 2.2 dirilis pada hari yang sama.


.NET Core 2.2 untuk Windows, macOS dan Linux sudah menunggu Anda di tautan:



Dukungan untuk .NET Core 2.2 hadir dalam Visual Studio 15.9 , Visual Studio untuk Mac dan Visual Studio Code.


Wadah Docker tersedia di microsoft / dotnet untuk .NET Core dan ASP.NET Core.


Informasi paling lengkap tentang rilis ini dapat ditemukan di catatan rilis .NET Core 2.2 . Ada instruksi tambahan, masalah yang diketahui dan cara untuk mengatasinya. Beri tahu kami jika ada kekurangan yang ditemukan dalam dokumen ini di komentar di dotnet / core # 2098 .


Kompilasi berjenjang


Kompilasi multilevel adalah fitur yang memungkinkan runtime untuk menggunakan kompiler JIT lebih cerdas untuk mencapai kinerja yang lebih baik baik pada tahap peluncuran aplikasi dan pada tahap memaksimalkan kinerja selama operasinya. Kemampuan untuk melakukan ini ditambahkan sebagai fitur opsional di .NET Core 2.1 dan kemudian dinyalakan secara default di .NET Core 2.2 Pratinjau 2. Kami berpikir dan memutuskan bahwa kami masih tidak yakin tentang kebermaknaan inklusi dalam rilis final .NET Core 2.2, jadi sekali lagi menjadikannya opsional, sama seperti di .NET Core 2.1. Namun, dalam .NET Core 3.0 kita akan beralih sepenuhnya.


Peristiwa runtime


Biasanya masuk akal untuk memantau layanan runtime, misalnya, GC, JIT atau ThreadPool dari proses saat ini, untuk memahami bagaimana layanan ini berperilaku selama masa aplikasi. Pada sistem Windows, ini biasanya dilakukan menggunakan ETW dan memantau peristiwa ETW untuk proses saat ini. Metode ini masih berfungsi dengan baik, tetapi menggunakan ETW tidak selalu memungkinkan, dan jika mungkin itu bisa sulit. Misalnya, Anda menjalankan dalam lingkungan dengan hak istimewa yang tidak memadai atau di Linux / macOS.


Dimulai dengan .NET Core 2.2, acara CoreCLR dapat ditangani oleh kelas EventListener . Peristiwa ini menggambarkan perilaku GC, JIT, ThreadPool, dan interope. Ini adalah acara yang sama yang sekarang tersedia sebagai bagian dari penyedia CoreCLR ETW untuk Windows. Pendekatan ini memungkinkan aplikasi untuk memproses acara atau menggunakan mekanisme transportasi untuk mengirim acara ke layanan agregasi telemetri.


Inilah cara Anda dapat berlangganan ke acara:


 internal sealed class SimpleEventListener : EventListener { //     EventSource. protected override void OnEventSourceCreated(EventSource eventSource) { //   EventSource  .NET runtime     . if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")) { EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1)); } } //     . protected override void OnEventWritten(EventWrittenEventArgs eventData) { //     . 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"); } } 

Dukungan AccessToken di SqlConnection


Penyedia ADO.NET untuk SQL Server, SqlClient, sekarang mendukung pengaturan properti AccessToken, yang memungkinkan otentikasi koneksi ke SQL Server menggunakan Azure Active Directory. Untuk mulai menggunakan fitur ini, Anda perlu mendapatkan token akses menggunakan Active Directory Authentication Library untuk .NET, yang dilengkapi dengan paket NuGet dari Microsoft.IdentityModel.Clients.ActiveDirectory.


Berikut cara mengautentikasi koneksi ke SQL Server menggunakan Azure AD:


 //   ,  ADAL.NET var authContext = new AuthenticationContext(authority); var authResult = await authContext.AcquireTokenAsync(appUri, clientCredential); //   SQL Server var sqlConnection = new SqlConnection(connectionString); sqlConnection.AccessToken = authResult.AccessToken; await sqlConnection.OpenAsync(); 

Untuk informasi lebih lanjut, lihat ADAL.NET dan dokumentasi Direktori Aktif Azure .


Menjalankan kode sebelum Utama


.NET Core sekarang memungkinkan Anda untuk menyematkan kode sebelum memulai metode utama, dan ini dilakukan dengan menggunakan Startup Hook. Pengait ini memungkinkan host untuk menyesuaikan perilaku aplikasi setelah dikerahkan, tanpa harus membangun kembali atau memodifikasi kode.


Di sini, kami bermaksud bahwa penyedia hosting akan membuat konfigurasi dan kebijakan mereka sendiri, termasuk pengaturan yang berpotensi mempengaruhi perilaku memuat titik masuk utama ke aplikasi, misalnya, AssemblyLoadContext. Hook dapat digunakan untuk mengatur pelacakan atau penerapan telemetri, menghubungkan panggilan balik, atau pengaturan perilaku lainnya yang spesifik untuk lingkungan runtime tertentu. Kait adalah entitas yang sepenuhnya terpisah sehubungan dengan titik masuk dan oleh karena itu tidak memerlukan perubahan kode aplikasi.


Penjelasan lebih rinci ada di dokumentasi .


Windows ARM32


Kami menambahkan dukungan untuk Windows ARM32, mirip dengan yang sudah ada untuk Linux ARM32, dimulai dengan .NET Core 2.1. Windows telah mendukung WIN32 selama beberapa waktu, terima kasih kepada Windows IoT Core . Sebagai bagian dari rilis Windows Server 2019, dukungan ARM32 telah ditambahkan ke Nanoserver. .NET Core sekarang dapat digunakan pada Nanoserver dan IoT Core.


Wadah docker Nanoserver untuk ARM32, seperti biasa, akan muncul di microsoft / dotnet pada Docker Hub.


Kami ingin menerbitkan rakitan .NET Core untuk Windows ARM32 hari ini, tetapi menemukan bug yang terlambat yang membuat penerbitannya tidak ada gunanya. Kami berharap majelis akan muncul untuk .NET Core 2.2.1 sekitar Januari 2019.


Platform yang didukung


.NET Core 2.2 didukung pada sistem operasi berikut:


  • Klien Windows: 7, 8.1, 10 (1607+)
  • Windows Server: 2008 R2 SP1 +
  • macOS: 10.12+
  • RHEL: 6+
  • Fedora: 26+
  • Ubuntu: 16.04+
  • Debian: 9+
  • SLES: 12+
  • openSUSE: 42.3+
  • Alpine: 3,7+

Platform perangkat keras yang didukung:


  • x64 - Windows, macOS, dan Linux
  • x86 - Windows
  • ARM32 - Linux (Ubuntu 16.04+, Debian 9+)
  • ARM32 - Windows (1809+; tersedia pada bulan Januari)

Kesimpulan


.NET Core 2.2 adalah rilis yang menampilkan peningkatan platform utama. Kami sangat menyarankan Anda mencobanya dan memberi tahu kami pendapat Anda tentangnya. Selain itu, masuk akal untuk memahami peningkatan dalam ASP.NET Core 2.2 dan Entity Framework 2.2.


Jangan lupa bahwa tiket untuk DotNext mulai 1 Januari akan naik harga. Pribadi - untuk seribu, dan Standar - untuk dua ribu. Rincian tentang Early Bird ada di situs .

Source: https://habr.com/ru/post/id433144/


All Articles