Pengantar .NET
.NET adalah platform pengembang sumber terbuka gratis, lintas platform untuk membangun berbagai jenis aplikasi. Ini dapat menjalankan program yang ditulis dalam beberapa bahasa, dengan C# menjadi yang paling populer. Ini bergantung pada runtime berkinerja tinggi yang digunakan dalam produksi oleh banyak aplikasi skala tinggi.
Untuk mempelajari cara mengunduh .NET dan mulai menulis aplikasi pertama Anda, lihat Memulai.
Platform .NET telah dirancang untuk memberikan produktivitas, performa, keamanan, dan keandalan. Ini menyediakan manajemen memori otomatis melalui pengumpul sampah (GC). Ini aman jenis dan aman memori, karena menggunakan GC dan pengkompilasi bahasa yang ketat. Ini menawarkan konkurensi melaluiawait
async
/dan Task
primitif. Ini termasuk sekumpulan besar pustaka yang memiliki fungsionalitas luas dan telah dioptimalkan untuk performa pada beberapa sistem operasi dan arsitektur chip.
.NET memiliki poin desain berikut:
- Produktivitas adalah tumpukan penuh dengan runtime, pustaka, bahasa, dan alat yang semuanya berkontribusi pada pengalaman pengguna pengembang.
- kode Brankas adalah model komputasi utama, sementara kode yang tidak aman memungkinkan pengoptimalan manual tambahan.
- Kode statis dan dinamis keduanya didukung, memungkinkan serangkaian skenario yang berbeda.
- Interop kode asli dan intrinsik perangkat keras berbiaya rendah dan fidelitas tinggi (API mentah dan akses instruksi).
- Kode portabel di seluruh platform (arsitektur OS dan chip), sementara penargetan platform memungkinkan spesialisasi dan pengoptimalan.
- Kemampuan beradaptasi di seluruh domain pemrograman (cloud, klien, game) diaktifkan dengan implementasi khusus dari model pemrograman tujuan umum.
- Standar industri seperti OpenTelemetry dan gRPC lebih disukai daripada solusi yang dipesan lebih dulu.
.NET dikelola oleh Microsoft dan komunitas. Ini diperbarui secara teratur untuk memastikan pengguna menyebarkan aplikasi yang aman dan andal ke produksi.
Komponen
.NET mencakup komponen berikut:
- Runtime -- menjalankan kode aplikasi.
- Pustaka -- menyediakan fungsionalitas utilitas seperti penguraian JSON.
- Compiler -- mengkompilasi kode sumber C# (dan bahasa lain) ke dalam kode yang dapat dieksekusi (runtime).
- SDK dan alat lainnya -- mengaktifkan membangun dan memantau aplikasi dengan alur kerja modern.
- Tumpukan aplikasi -- seperti ASP.NET Core dan Formulir Windows, yang memungkinkan penulisan aplikasi.
Runtime, pustaka, dan bahasa adalah pilar tumpukan .NET. Komponen tingkat yang lebih tinggi, seperti alat .NET, dan tumpukan aplikasi, seperti ASP.NET Core, dibangun di atas pilar ini. C# adalah bahasa pemrograman utama untuk .NET dan banyak .NET ditulis dalam C#.
C# berorientasi objek dan runtime mendukung orientasi objek. C# membutuhkan pengumpulan sampah dan runtime menyediakan pengumpul sampah pelacakan. Pustaka (dan juga tumpukan aplikasi) membentuk kemampuan tersebut menjadi konsep dan model objek yang memungkinkan pengembang menulis algoritma secara produktif dalam alur kerja intuitif.
Pustaka inti mengekspos ribuan jenis, yang banyak diintegrasikan dengan dan mengisi daya bahasa C#. Misalnya, pernyataan C#memungkinkan foreach
Anda menghitung koleksi arbitrer. Pengoptimalan berbasis pola memungkinkan koleksi seperti diproses List<T>
secara sederhana dan efisien. Anda dapat meninggalkan manajemen sumber daya hingga pengumpulan sampah, tetapi pembersihan prompt dimungkinkan melalui IDisposable
dan dukungan bahasa langsung dalam using
pernyataan.
Dukungan untuk melakukan beberapa hal pada saat yang sama sangat mendasar untuk hampir semua beban kerja. Itu bisa jadi aplikasi klien yang melakukan pemrosesan latar belakang sambil menjaga UI tetap responsif, layanan yang menangani ribuan permintaan simultan, perangkat yang menanggapi banyak rangsangan simultan, atau mesin bertenaga tinggi yang menyejajarkan pemrosesan operasi intensif komputasi. Dukungan pemrograman asinkron adalah fitur kelas satu dari bahasa pemrograman C#, yang menyediakan async
kata kunci dan await
yang memudahkan untuk menulis dan menyusun operasi asinkron sambil tetap menikmati manfaat penuh dari semua alur kontrol yang ditawarkan bahasa.
Sistem jenis ini menawarkan luas yang signifikan, katering agak sama dengan keamanan, deskriptifitas, dinamisme, dan interop asli. Pertama dan teruntuk, sistem jenis memungkinkan model pemrograman berorientasi objek. Ini termasuk jenis, (kelas dasar tunggal) warisan, antarmuka (termasuk implementasi metode default), dan pengiriman metode virtual untuk memberikan perilaku yang masuk akal untuk semua lapisan jenis yang diizinkan orientasi objek. Jenis generik adalah fitur pervasif yang memungkinkan Anda mengkhawatirkan kelas ke satu atau beberapa jenis.
Runtime .NET menyediakan manajemen memori otomatis melalui pengumpul sampah. Untuk bahasa apa pun, model manajemen memorinya kemungkinan merupakan karakteristik yang paling menentukan. Ini berlaku untuk bahasa .NET. .NET memiliki penyetelan mandiri, melacak GC. Ini bertujuan untuk memberikan operasi "hands off" dalam kasus umum sambil menawarkan opsi konfigurasi untuk beban kerja yang lebih ekstrem. GC saat ini adalah hasil dari investasi dan pembelajaran bertahun-tahun dari banyak beban kerja.
Jenis nilai dan blok memori yang dialokasikan tumpukan menawarkan kontrol tingkat rendah yang lebih langsung atas data dan interop platform asli, berbeda dengan . Jenis yang dikelola GC NET. Sebagian besar jenis primitif di .NET, seperti jenis bilangan bulat, adalah jenis nilai, dan pengguna dapat menentukan jenis mereka sendiri dengan semantik serupa. Jenis nilai didukung penuh melalui . Sistem generik NET, yang berarti bahwa jenis generik seperti List<T>
dapat memberikan representasi memori datar tanpa overhead dari koleksi jenis nilai.
Refleksi adalah paradigma "program sebagai data", memungkinkan satu bagian dari program untuk secara dinamis mengkueri dan memanggil yang lain, dalam hal rakitan, jenis, dan anggota. Ini sangat berguna untuk model dan alat pemrograman yang terlambat terikat.
Pengecualian adalah model penanganan kesalahan utama di .NET. Pengecualian memiliki manfaat bahwa informasi kesalahan tidak perlu diwakili dalam tanda tangan metode atau ditangani oleh setiap metode. Penanganan pengecualian yang tepat sangat penting untuk keandalan aplikasi. Untuk mencegah aplikasi mengalami crash, Anda dapat dengan sengaja menangani pengecualian yang diharapkan dalam kode Anda. Aplikasi yang mengalami crash lebih andal dan dapat didiagnosis daripada aplikasi dengan perilaku yang tidak ditentukan.
Tumpukan aplikasi, seperti ASP.NET Core dan Formulir Windows, membangun dan memanfaatkan pustaka, bahasa, dan runtime tingkat rendah. Tumpukan aplikasi menentukan cara aplikasi dibangun dan siklus hidup eksekusinya.
SDK dan alat lainnya memungkinkan pengalaman pengembang modern, baik di desktop pengembang maupun untuk integrasi berkelanjutan (CI). Pengalaman pengembang modern mencakup mampu membangun, menganalisis, dan menguji kode. Proyek .NET sering kali dapat dibangun oleh satu dotnet build
perintah, yang mengatur pemulihan paket NuGet dan membangun dependensi.
NuGet adalah pengelola paket untuk .NET. Ini berisi ratusan ribu paket yang menerapkan fungsionalitas untuk banyak skenario. Sebagian besar aplikasi mengandalkan paket NuGet untuk beberapa fungsionalitas. Galeri NuGet dikelola oleh Microsoft.
Gratis dan sumber terbuka
.NET gratis, sumber terbuka, dan merupakan proyek .NET Foundation. .NET dikelola oleh Microsoft dan komunitas di GitHub di beberapa repositori.
Sumber dan biner .NET dilisensikan dengan lisensi MIT. Lisensi tambahan berlaku pada Windows.
Dukungan
.NET didukung oleh beberapa organisasi yang berfungsi untuk memastikan bahwa .NET dapat berjalan pada beberapa sistem operasi dan tetap diperbarui. Ini dapat digunakan pada arsitektur Arm64, x64, dan x86.
Versi baru .NET dirilis setiap tahun pada bulan November, sesuai rilis dan kebijakan dukungan kami. Ini diperbarui setiap bulan pada Hari Selasa Patch (Selasa kedua), biasanya pada pukul 10:00 waktu Pasifik.
Ekosistem .NET
Ada beberapa varian .NET, masing-masing mendukung jenis aplikasi yang berbeda. Alasan untuk beberapa varian adalah bagian historis, bagian teknis.
Implementasi .NET:
- .NET Framework -- .NET asli. Ini menyediakan akses ke kemampuan luas Windows dan Windows Server. Ini didukung secara aktif, dalam pemeliharaan.
- Mono -- Komunitas asli dan sumber terbuka .NET. Implementasi lintas platform dari .NET Framework. Didukung secara aktif untuk Android, iOS, dan WebAssembly.
- .NET (Core) -- Modern .NET. Implementasi lintas platform dan sumber terbuka .NET, mencari kembali usia cloud sambil tetap kompatibel secara signifikan dengan .NET Framework. Didukung secara aktif untuk Linux, macOS, dan Windows.