Apa itu .NET? Pengenalan dan gambaran umum

.NET adalahplatform pengembang gratis, lintas platform, sumber terbuka untuk membangun berbagai jenis aplikasi. .NET dibangun pada runtime berkinerja tinggi yang digunakan dalam produksi oleh banyak aplikasi skala tinggi.

Aplikasi cloud

Aplikasi klien lintas platform

Aplikasi Windows 

Jenis aplikasi lainnya

Fitur

Fitur .NET memungkinkan pengembang untuk menulis kode yang andal dan berkinerja secara produktif.

Menggunakan .NET

Aplikasi dan pustaka .NET dibangun dari kode sumber dan file proyek, menggunakan .NET CLI atau Lingkungan Pengembangan Terpadu (IDE) seperti Visual Studio.

Contoh berikut adalah aplikasi .NET minimal:

File proyek:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
  </PropertyGroup>
</Project>

Kode sumber:

Console.WriteLine("Hello, World!");

Aplikasi ini dapat dibangun dan dijalankan dengan .NET CLI:

% dotnet run
Hello, World!

Ini juga dapat dibangun dan dijalankan sebagai dua langkah terpisah. Contoh berikut adalah untuk aplikasi yang diberi nama aplikasi:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

Distribusi biner

  • .NET SDK -- Kumpulan alat, pustaka, dan runtime untuk aplikasi pengembangan, pembuatan, dan pengujian.
  • Runtime .NET -- Kumpulan runtime dan pustaka, untuk menjalankan aplikasi.

Anda dapat mengunduh .NET dari:

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 .NET dan biner dilisensikan dengan lisensi MIT. Lisensi tambahan berlaku pada Windows untuk distribusi biner.

Dukungan

Microsoft mendukung sistem operasi .NET di Android, Apple, Linux, dan Windows. Ini dapat digunakan pada arsitektur Arm64, x64, dan x86. Ini juga didukung di lingkungan yang ditimulasi, seperti macOS Rosetta 2.

Versi baru .NET dirilis setiap tahun pada bulan November. Rilis .NET dalam tahun bernomor ganjil adalah rilis Long-Term Support (LTS) dan didukung selama tiga tahun. Rilis dalam tahun bernomor genap adalah rilis Standard-Term Support (STS) dan didukung selama 18 bulan. Tingkat kualitas, melanggar kebijakan perubahan, dan semua aspek lain dari rilis sama. Untuk informasi selengkapnya, lihat Rilis dan dukungan.

Tim .NET di Microsoft bekerja secara kolaboratif dengan organisasi lain untuk mendistribusikan dan mendukung .NET dengan berbagai cara.

Red Hat mendukung .NET di Red Hat Enterprise Linux (RHEL).

Samsung mendukung .NET pada platform Tizen.

Runtime

Common Language Runtime (CLR) adalah fondasi yang dibangun oleh semua aplikasi .NET. Fitur dasar runtime adalah:

  • Pengumpulan sampah.
  • Keamanan memori dan keamanan jenis.
  • Dukungan tingkat tinggi untuk bahasa pemrograman.
  • Desain lintas platform.

.NET terkadang disebut runtime "kode terkelola". Ini disebut dikelola terutama karena menggunakan pengumpul sampah untuk manajemen memori dan karena memberlakukan keamanan jenis dan memori. CLR memvirtualisasikan (atau abstrak) berbagai konsep sistem operasi dan perangkat keras, seperti memori, utas, dan pengecualian.

CLR dirancang untuk menjadi runtime lintas platform sejak awal. Ini telah di-port ke beberapa sistem operasi dan arsitektur. Kode .NET lintas platform biasanya tidak perlu dikompilasi ulang untuk dijalankan di lingkungan baru. Sebagai gantinya, Anda hanya perlu menginstal runtime yang berbeda untuk menjalankan aplikasi Anda.

Runtime mengekspos berbagai layanan diagnostik dan API untuk debugger, alat pencadangan dan pelacakan , dan pengamatan. Implementasi observabilitas terutama dibangun di sekitar OpenTelemetry, memungkinkan pemantauan aplikasi yang fleksibel dan rekayasa keandalan situs (SRE).

Runtime menawarkan fungsionalitas interop gaya C tingkat rendah, melalui kombinasi P/Invoke, jenis nilai, dan kemampuan untuk mem-blit nilai di seluruh batas native/managed-code.

Bahasa

Runtime dirancang untuk mendukung beberapa bahasa pemrograman. Bahasa C#, F#, dan Visual Basic didukung oleh Microsoft dan dirancang bekerja sama dengan komunitas.

  • C# adalah bahasa pemrograman modern, berorientasi objek, dan aman jenis. Ini memiliki akar dalam keluarga bahasa C dan akan segera akrab dengan programmer C, C++, Java, dan JavaScript.

  • F# adalah bahasa pemrograman yang dapat dioperasikan untuk menulis kode yang ringkas, kuat, dan berkinerja. Pemrograman F# berorientasi pada data, di mana kode melibatkan transformasi data dengan fungsi.

  • Visual Basic menggunakan sintaks yang lebih verbose yang lebih dekat dengan bahasa manusia biasa. Ini bisa menjadi bahasa yang lebih mudah untuk dipelajari bagi orang-orang yang baru dalam pemrograman.

Kompilasi

Aplikasi .NET (seperti yang ditulis dalam bahasa tingkat tinggi seperti C#) dikompilasi ke Bahasa Perantara (IL). IL adalah format kode ringkas yang dapat didukung pada sistem operasi atau arsitektur apa pun. Sebagian besar aplikasi .NET menggunakan API yang didukung di beberapa lingkungan, hanya memerlukan runtime .NET untuk berjalan.

IL perlu dikompilasi ke kode asli untuk mengeksekusi pada CPU, misalnya Arm64 atau x64. .NET mendukung model kompilasi Ahead-Of-Time (AOT) dan Just-In-Time (JIT).

  • Di Android, macOS, dan Linux, kompilasi JIT adalah default, dan AOT bersifat opsional (misalnya, dengan ReadyToRun).
  • Di iOS, AOT bersifat wajib (kecuali saat berjalan di simulator).
  • Di lingkungan WebAssembly (Wasm), AOT bersifat wajib.

Keuntungan dari JIT adalah dapat mengkompilasi aplikasi (tidak dimodifikasi) ke instruksi CPU dan konvensi panggilan di lingkungan tertentu, sesuai sistem operasi dan perangkat keras yang mendasar. Ini juga dapat mengkompilasi kode pada tingkat kualitas yang lebih tinggi atau lebih rendah untuk memungkinkan startup yang lebih baik dan performa throughput status stabil.

Keuntungan dari AOT adalah menyediakan startup aplikasi terbaik dan dapat (dalam beberapa kasus) menghasilkan penyebaran yang lebih kecil. Kelemahan utama adalah biner harus dibangun untuk setiap target penyebaran terpisah (sama dengan kode asli lainnya). Kode AOT tidak kompatibel dengan beberapa pola pantulan.

Pustaka runtime

.NET memiliki sekumpulan pustaka kelas standar yang komprehensif. Pustaka ini menyediakan implementasi untuk banyak jenis dan fungsionalitas utilitas khusus beban kerja dan tujuan umum.

Berikut adalah beberapa contoh jenis yang ditentukan dalam pustaka runtime .NET:

Untuk informasi selengkapnya, lihat Gambaran umum pustaka Runtime.

Pengelola Paket NuGet

NuGet adalah manajer paket untuk .NET. Ini memungkinkan pengembang untuk berbagi biner yang dikompilasi satu sama lain. NuGet.org menawarkan banyak paket populer dari komunitas.

Alat

.NET SDK adalah sekumpulan pustaka dan alat untuk mengembangkan dan menjalankan aplikasi .NET. Ini termasuk mesin build MSBuild , kompilator Roslyn (C# dan Visual Basic), dan kompilator F #. Sebagian besar perintah dijalankan dengan menggunakan dotnet perintah . Alat CLI dapat digunakan untuk pengembangan lokal dan integrasi berkelanjutan.

Keluarga IDEs Visual Studio menawarkan dukungan yang sangat baik untuk bahasa .NET dan C#, F#, dan Visual Basic.

Fitur keamanan GitHub Codespaces dan GitHub mendukung .NET.

Notebook

.NET Interactive adalah sekelompok alat dan API CLI yang memungkinkan pengguna membuat pengalaman interaktif di web, markdown, dan notebook.

Untuk informasi selengkapnya, lihat sumber berikut ini:

CI/CD

MSBuild dan .NET CLI dapat digunakan dengan berbagai alat dan lingkungan integrasi berkelanjutan, seperti:

Untuk informasi selengkapnya, lihat Menggunakan .NET SDK di lingkungan Integrasi Berkelanjutan (CI).

Model Penyebaran

Aplikasi .NET dapat diterbitkan dalam dua mode berbeda:

  • Aplikasi mandiri mencakup runtime .NET dan pustaka dependen. Mereka dapat berupa file tunggal atau multi-file. Pengguna aplikasi dapat menjalankannya pada komputer yang tidak menginstal runtime .NET. Aplikasi mandiri selalu menargetkan satu sistem operasi dan konfigurasi arsitektur.
  • Aplikasi yang bergantung pada kerangka kerja memerlukan versi runtime .NET yang kompatibel, biasanya diinstal secara global. Aplikasi yang bergantung pada kerangka kerja dapat diterbitkan untuk satu sistem operasi dan konfigurasi arsitektur atau sebagai "portabel", yang menargetkan semua konfigurasi yang didukung.

Aplikasi .NET diluncurkan dengan executable asli, secara default. Executable adalah sistem operasi dan arsitektur khusus. Aplikasi juga dapat diluncurkan dengan dotnet perintah .

Aplikasi dapat disebarkan dalam kontainer. Microsoft menyediakan gambar kontainer untuk berbagai lingkungan target.

Riwayat .NET

Pada tahun 2002, Microsoft dirilis .NET Framework, platform pengembangan untuk membuat aplikasi Windows. Saat ini .NET Framework berada di versi 4.8 dan tetap didukung penuh oleh Microsoft.

Pada tahun 2014, Microsoft memperkenalkan .NET Core sebagai penerus sumber terbuka lintas platform untuk .NET Framework. Implementasi baru .NET ini menyimpan nama .NET Core melalui versi 3.1. Versi berikutnya setelah .NET Core 3.1 diberi nama .NET 5.

Versi .NET baru terus dirilis setiap tahun, masing-masing nomor versi utama lebih tinggi. Mereka termasuk fitur baru yang signifikan dan sering mengaktifkan skenario baru.

Ekosistem .NET

Ada beberapa varian .NET, masing-masing mendukung jenis aplikasi yang berbeda. Alasan untuk beberapa varian adalah bagian historis, bagian teknis.

Implementasi .NET (urutan historis):

  • .NET Framework -- Ini menyediakan akses ke kemampuan Windows dan Windows Server yang luas. Juga digunakan secara luas untuk komputasi cloud berbasis Windows. .NET asli.
  • Mono -- Implementasi lintas platform .NET Framework. Komunitas asli dan sumber terbuka .NET. Digunakan untuk aplikasi Android, iOS, dan Wasm.
  • .NET (Core) -- Implementasi lintas platform dan sumber terbuka .NET, dicari kembali untuk usia cloud sambil tetap kompatibel secara signifikan dengan .NET Framework. Digunakan untuk aplikasi Linux, macOS, dan Windows.

Langkah berikutnya