.NET Core 3 untuk Windows Desktop

Pada bulan September, kami merilis dukungan .NET Core untuk membangun aplikasi desktop Windows, termasuk WPF dan Windows Forms. Sejak itu, kami senang melihat banyak pengembang berbagi cerita tentang porting aplikasi desktop ke .NET Core. Kami terus mendengar cerita dari .NET developer aplikasi desktop Windows tentang bagaimana mereka mendukung bisnis mereka dengan WPF dan Windows Forms, terutama ketika desktop menang, termasuk:

  • Aplikasi FOD (form over data) dengan UI yang padat
  • Antarmuka pengguna responsif, latensi rendah
  • Aplikasi yang harus bekerja offline
  • Aplikasi dengan ketergantungan pada driver perangkat kustom

Mengintip untuk mempelajari lebih lanjut tentang manfaat .NET Core untuk membangun aplikasi Windows.



Mengapa desktop Windows pada .NET Core?


.NET Core (dan di masa depan .NET 5, dibangun berdasarkan .NET Core) akan menjadi masa depan .NET. Kami berusaha untuk mendukung .NET Framework selama mungkin, namun tidak akan menerima fitur baru, mereka hanya akan ditambahkan ke .NET Core (dan, akhirnya, .NET 5). Untuk meningkatkan tumpukan desktop Windows dan memungkinkan pengembang desktop .NET mendapatkan manfaat dari semua pembaruan di masa mendatang, kami memperkenalkan Formulir Windows dan WPF untuk .NET Core. Mereka akan terus menjadi teknologi Windows saja, karena mereka terkait erat dengan API Windows. Tetapi .NET Core, selain cross-platform, memiliki banyak fitur lain yang dapat meningkatkan aplikasi desktop.

Pertama-tama, semua perbaikan runtime dan fitur bahasa akan ditambahkan hanya di .NET Core, dan di masa depan dalam. NET 5. Contoh yang baik di sini adalah C # 8, yang menjadi tersedia di .NET Core 3.0. Selain itu, versi .NET Core dari Windows Forms dan WPF akan menjadi bagian dari platform .NET 5. Dan, memindahkan aplikasi Anda ke .NET Core, Anda menyiapkannya untuk .NET 5.

Selain itu, .NET Core memberikan fleksibilitas penggunaan untuk aplikasi Anda dengan opsi baru yang tidak tersedia di .NET Framework, seperti:

  • Penempatan paralel Sekarang Anda dapat memiliki beberapa versi .NET Core di satu komputer dan Anda dapat memilih versi mana yang harus difokuskan oleh setiap aplikasi Anda.
  • Penempatan Offline. Anda dapat menggunakan platform .NET Core bersama dengan aplikasi Anda dan menjadi sepenuhnya independen dari lingkungan pengguna akhir - aplikasi Anda memiliki semua yang Anda butuhkan untuk dijalankan di komputer Windows mana pun.
  • Ukuran aplikasi lebih kecil. Di .NET Core 3, kami memperkenalkan fitur baru yang disebut tautan (juga terkadang disebut trimmer) yang akan menganalisis kode Anda dan termasuk dalam penyebaran offline hanya rakitan dari .NET Core yang diperlukan untuk aplikasi Anda. Dengan demikian, semua detail platform yang tidak digunakan dalam kasus Anda akan dihapus.
  • File .exe tunggal. Anda dapat mengemas aplikasi dan platform .NET Core Anda ke dalam satu file .exe.
  • Peningkatan kinerja runtime. .NET Core memiliki banyak optimasi kinerja di atas .NET Framework. Jika Anda mengingat riwayat .NET Core, yang awalnya dibuat untuk beban kerja di web dan server, ada baiknya Anda memahami apakah aplikasi Anda dapat merasakan manfaat nyata dari mengoptimalkan runtime. Secara khusus, aplikasi desktop yang sangat tergantung pada file I / O, jaringan, dan operasi database cenderung menunjukkan peningkatan kinerja untuk skenario ini. Beberapa area di mana Anda mungkin tidak melihat perubahan signifikan terkait dengan kinerja rendering antarmuka pengguna atau peluncuran aplikasi.

Dengan mengatur properti <PublishSingleFile> , <RuntimeIdentifier> dan <PublishTrimmed> dalam profil publikasi, Anda dapat menggunakan aplikasi yang dipangkas yang berdiri sendiri sebagai file .exe tunggal, seperti yang ditunjukkan pada contoh di bawah ini.

 <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup> 

Perbedaan antara desktop .NET Framework dan desktop .NET Core


Saat mengembangkan aplikasi desktop, Anda tidak akan melihat perbedaan besar antara versi WPF dan Windows Forms untuk .NET Framework dan .NET Core. Bagian dari upaya kami adalah menyediakan persamaan fungsional antara platform desktop ini dan meningkatkan masa depan .NET Core.

Aplikasi WPF didukung sepenuhnya dalam .NET Core, dan Anda dapat mulai bekerja dengannya sementara kami mengerjakan pembaruan kecil dan peningkatan. Untuk Formulir Windows, runtime telah sepenuhnya porting ke .NET Core, dan tim saat ini bekerja pada Desainer Formulir Windows. Kami berencana untuk menyiapkannya untuk kuartal keempat tahun 2020, tetapi untuk sekarang Anda dapat memeriksa versi awal dari desainer di Visual Studio 16.4 Pratinjau 3 atau lebih baru. Ingatlah untuk mencentang kotak di bawah Alat-> Opsi-> Fitur Pratinjau-> Gunakan pratinjau desainer Formulir Windows untuk aplikasi .NET Core dan mulai ulang Visual Studio. Harap diingat bahwa pengalaman menggunakan masih terbatas, karena pekerjaan masih berlangsung.

Perubahan penting


Ada beberapa perubahan besar pada .NET Framework dan .NET Core, tetapi sebagian besar kode yang terkait dengan Windows Forms dan area WPF di-porting ke Core dengan cara yang sama. Jika sebelumnya Anda menggunakan komponen seperti Klien WCF, Keamanan Akses Kode, Domain Aplikasi, Interop, dan Remoting, Anda perlu melakukan refactor kode jika Anda ingin beralih ke .NET Core.

Satu hal yang perlu diingat: jalur keluaran default di .NET Core berbeda dari jalur di .NET Framework, jadi jika kode Anda memiliki beberapa asumsi tentang struktur file / folder aplikasi yang sedang berjalan, maka kemungkinan akan jatuh dalam runtime.

Ada juga perubahan pada konfigurasi fungsi .NET. Alih-alih menggunakan file machine.config , .NET Core menggunakan file <something>.runtimeconfig.json yang disertakan dengan aplikasi dan memiliki tujuan utama yang sama dan informasi serupa. Beberapa konfigurasi, seperti system.diagnostics , system.net , atau system.servicemodel , tidak didukung, sehingga file konfigurasi aplikasi tidak dapat dimuat jika berisi salah satu dari bagian ini. Perubahan ini berlaku untuk skrip klien System.Diagnostics dan WCF klien yang sebelumnya biasanya dikonfigurasi menggunakan konfigurasi XML. Di .NET Core, Anda harus mengonfigurasinya dalam kode. Untuk mengubah perilaku tanpa kompilasi ulang, pertimbangkan menyesuaikan tipe jejak dan WCF menggunakan nilai yang diunduh dari sumber appSettings Microsoft.Extensions.Configuration atau dari pengaturan Microsoft.Extensions.Configuration .

Anda dapat menemukan informasi lebih lanjut tentang perbedaan antara .NET Core dan .NET Framework dalam dokumentasi .

Untuk memulai


Lihatlah tutorial singkat ini:


Porting dari .NET Framework ke .NET Core


Pertama-tama, jalankan Portability Analyzer (penganalisis portabilitas) dan, jika perlu, perbarui kode untuk memastikan kompatibilitas 100% dengan .NET Core. Berikut adalah petunjuk untuk menggunakan penganalisis portabilitas. . Kami menyarankan Anda menggunakan kontrol sumber atau membuat cadangan kode Anda sebelum membuat perubahan apa pun pada aplikasi Anda, seandainya refactoring gagal seperti yang Anda inginkan, dan Anda memutuskan untuk kembali ke keadaan semula.

Ketika aplikasi Anda sepenuhnya kompatibel dengan .NET Core, Anda akan siap untuk port itu. Sebagai titik awal, Anda dapat mencoba alat yang kami buat untuk membantu mengotomatiskan konversi proyek .NET Framework Anda ke .NET Core - coba-konversi .

Penting untuk diingat bahwa alat ini hanyalah titik awal dalam perjalanan Anda ke .NET Core. Juga, ini bukan produk Microsoft yang didukung. Meskipun mungkin membantu Anda dengan beberapa aspek mekanis migrasi, ini tidak akan menangani semua skenario atau jenis proyek. Jika ada proyek dalam solusi Anda yang ditolak atau tidak dapat dikonversi oleh alat, Anda harus mentransfernya secara manual. Jangan khawatir, kami telah menyiapkan banyak pelajaran tentang cara melakukan ini (di akhir artikel).

Alat coba-konversi akan mencoba untuk mentransfer file proyek gaya lama ke gaya SDK baru dan mengkonfigurasi ulang proyek yang sesuai di .NET Core. Untuk perpustakaan Anda, kami menyerahkan kepada Anda untuk memilih platform: .NET Core atau .NET Standard. Anda dapat menentukan salah satunya di file proyek dengan memperbarui nilai untuk <TargetFramework> . Perpustakaan tanpa dependensi khusus untuk .NET Core, seperti WPF atau Windows Forms, dapat mengambil manfaat dari pilihan .NET Standard:

 <TargetFramework>netstandard2.1</TargetFramework> 

sehingga mereka dapat digunakan oleh penelepon yang menargetkan banyak platform .NET yang berbeda. Di sisi lain, jika pustaka menggunakan fungsi yang memerlukan .NET Core (misalnya, API UI desktop Windows), pustaka harus fokus pada .NET Core:

 <TargetFramework>netcoreapp3.0</TargetFramework> 

try-convert adalah alat global yang dapat Anda instal di komputer Anda dan kemudian menelepon dari CLI:

 C:\> try-convert -p <path to your project> 

atau

 C:\> try-convert -w <path to your solution> 

Seperti disebutkan sebelumnya, jika alat coba-konversi tidak berfungsi dalam kasus Anda, berikut adalah materi tentang cara mem-port aplikasi secara manual.

Video


Dokumentasi




Lihat juga: 7 kursus gratis untuk pengembang

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


All Articles