Halo semuanya! Hari ini kita melihat berbagai chip dan perubahan yang telah muncul di platform .NET Core dan membandingkannya dengan Framework. Saya memecah artikel menjadi modul untuk pemahaman yang lebih baik. Artikel ini akan menarik bagi mereka yang akan beralih ke .NET Core atau sudah menggunakannya.
Teknologi tumpukan
Saat ini kami memiliki tiga platform: .NET Framework, Mono, dan .NET Core. Setiap platform mencakup teknologi berikut:
NET Framework - WPF, WinForms, ASP.NET (implementasi DNX), WCF
NET Core - UWP, ASP.NET Core, WA, Xamarin (.NET Standard), Avalonia dan lainnya
Mono - Xamarin (PCL, proyek Bagikan), Unity, ASP.NET, WinForms (lintas platform)
NET Core (3.0) - Semuanya sama dengan .NET Core di atas + WPF dan WinForms, ML.NET
Standar NET
Ada juga .NET Standard. Ini adalah sekumpulan kelas, metode, dan antarmuka yang memungkinkan Anda menulis dan menggunakan kode umum untuk semua platform yang tercantum di atas. Anda juga dapat menulis aplikasi konsol di atasnya. Singkatnya, ini adalah PCL yang sama, tetapi berfungsi pada semua platform yang tercantum di atas.
Lintas platform
Saya tidak akan memusatkan perhatian Anda pada ini, saya hanya akan mencantumkan dukungan OS untuk proyek-proyek Core NET:
• Windows
• Linux
• MacOS
Selain itu mendukung peluncuran di bawah prosesor ARM di Linux dan Windows.
Ketergantungan
Sebagai bagian dari kompatibilitas silang, platform pengembangan aplikasi mencakup infrastruktur modular. Ini dikeluarkan melalui NuGet, dan Anda dapat mengakses fungsi batch, daripada satu perakitan besar. Sebagai pengembang, Anda dapat membuat aplikasi ringan yang hanya berisi paket NuGet yang diperlukan, yang akan membuat program Anda lebih aman dan lebih produktif.
Infrastruktur modular juga memungkinkan pembaruan lebih cepat ke platform .NET Core, karena modul yang terpengaruh dapat diperbarui dan dirilis secara terpisah.
Csproj
Sekarang mari kita masuk lebih dalam dan melihat lebih detail apa yang kita miliki di bawah tenda dalam proyek. Saat membuat proyek baru, Anda masing-masing menemukan file MyProject1.csproj (namanya mungkin berbeda). File ini bertanggung jawab untuk pengaturan kompilasi untuk proyek ini, dependensi proyek lain atau pustaka (pustaka), dan banyak lagi.
Saya punya untuk Anda contoh bagaimana saya memutuskan untuk menulis ulang satu proyek ke .NET Standard. Mari kita lihat bagaimana sebelumnya (Kerangka):

Sayangnya, file ini tidak muat di PC saya sepenuhnya (masih ada referensi). Dan sekarang mari kita lihat bagaimana jadinya setelah transfer:

Dalam NET Core dan .NET Standard, csproj telah sangat disederhanakan. Khususnya yang "balistik" mungkin memperhatikan bahwa beberapa telah berubah. Saya menghapus yang tidak perlu dan diganti dengan alat yang lebih nyaman. Setelah menulis ulang csproj, saya perhatikan bahwa bekerja dengan paket-paket NuGet mulai memakan waktu lebih sedikit, dan seperti yang Anda mengerti, mengedit versi csproj baru jauh lebih nyaman, karena tidak berantakan dengan garis-garis tambahan.
Performa & Peningkatan
• Diubah Acak
• HttpClient yang Dimodifikasi
• Siklus yang dioptimalkan
• Daftar Dioptimalkan, Array
• Aliran yang Dioptimalkan, MemoryStream
• Dan masih banyak lagi
Pada artikel ini saya tidak akan mempertimbangkan semua perubahan. Ini akan menjadi artikel terpisah. Tapi mari kita lihat contoh kecil pada koleksi List:
var list = new List<int>(); for (int i = 0; i < 100000000; i++) { list.Add(i); list.RemoveAt(0); }
Saya menjalankannya melalui
benchmarkdotnet.org di kedua platform. Setelah tes, saya mendapat hasil sebagai berikut:
Inti 2.2.4 x64 RyuJITMetode : BenchmarkList
Berarti : 370,1 ms
Kesalahan : 0,3761 ms
StdDev : 0,3518 ms
Kerangka 4.7.2 x64 RyuJITMetode : BenchmarkList
Berarti : 481.9 ms
Kesalahan : 1.210 ms
StdDev : 1,011 ms
Seperti yang Anda lihat, kecepatan operasi sangat berbeda (kadang-kadang) dalam mendukung Core.
Microsoft berusaha tidak hanya memberi pengembang alat pengembangan yang nyaman, tetapi juga meningkatkan hal-hal dasar yang mengarah pada peningkatan dan optimalisasi proyek Anda.
Kompilasi tingkat
Ini adalah fitur yang membuat runtime lebih adaptif untuk menggunakan kompiler JIT untuk meningkatkan kinerja startup dan memaksimalkan throughput.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <LangVersion>7.3</LangVersion> <TieredCompilation>true</TieredCompilation> <Platforms>AnyCPU;x64</Platforms> </PropertyGroup> </Project>
Mengkompilasi proyek secepat mungkin.
Mengoptimalkan metode yang paling umum.
Fungsionalitas ini membuat pembangunan proyek Anda lebih cepat dan memberi Anda kinerja yang hampir sama. Kami menguji fungsi ini, dan ini adalah fitur cerdas untuk proyek Core NET, yang mengurangi waktu kompilasi. Kompilasi multilevel sedikit memperlambat pekerjaan aplikasi Anda, saya tidak merekomendasikan untuk memasukkannya ke server produksi, tetapi untuk debugging ada lebih dari fungsi sebenarnya yang menghemat waktu programmer.
Kesimpulan
Microsoft sedang berusaha meningkatkan kehidupan para pengembang platform .NET. Semua "barang" di atas yang telah muncul di perusahaan kami memungkinkan kami untuk membuat lingkungan lebih terbuka dan diperluas. Saya harap Anda menghargainya. Jangan takut untuk beralih ke tumpukan teknologi baru dan menggunakan berbagai fitur.
Terima kasih atas perhatian anda Saya harap Anda menikmatinya.