Ini adalah panduan langkah demi langkah untuk menjadi insinyur .NET, dengan tautan ke sumber belajar yang relevan.
Jika Anda ingin mempelajari lebih lanjut tentang .NET Technologies, pastikan untuk berlangganan buletin saya .
Jika Anda menemukan repositori ini bermanfaat, pertimbangkan untuk mendukung saya di Patreon:

Peta jalan ini bertujuan untuk memberi Anda gambaran tentang lanskap. Peta jalan akan memandu Anda jika Anda memerlukan klarifikasi tentang apa yang harus dipelajari selanjutnya daripada mendorong Anda untuk memilih apa yang hype dan trendi. Ini akan membantu jika Anda menumbuhkan pemahaman tentang mengapa satu alat akan lebih cocok untuk beberapa kasus daripada yang lain dan ingat bahwa hype dan trendi hanya kadang -kadang berarti paling cocok untuk pekerjaan itu.
Jika Anda suka atau menggunakan proyek ini untuk belajar atau memulai solusi Anda, silakan berikan bintang. Terima kasih!
Perhatikan bahwa berdasarkan tingkat senioritas, itu berarti:
? Junior : Konsep Dasar
? Medior : Konsep Lanjutan
? Senior : Konsep Pakar

Unduh versi pdf.
Di bawah ini Anda dapat menemukan versi minimum yang perlu diketahui oleh setiap pengembang junior .NET, dengan bahan pembelajaran yang disertakan dan dapat diklik dalam versi PDF.

Unduh versi pdf.
Sebelum masuk ke spesifik, Anda harus memiliki pemahaman yang kuat tentang ekosistem .NET . Berikut adalah beberapa yang harus Anda pahami:
Di bagian ini, kita akan melihat .NET Runtimes utama. Kami menganggap .NET Runtime sebagai apa pun yang mengimplementasikan standar ECMA-335 untuk .NET .
.NET Framework adalah kerangka pengembangan perangkat lunak untuk membangun dan menjalankan aplikasi di Windows. .NET Framework terdiri dari Runtime Bahasa Umum (CLR), Perpustakaan Kelas Kerangka .NET, dan beban kerja aplikasi (WPF, Windows Forms, dan ASP.NET). CLR adalah bagian dari infrastruktur bersama yang menjalankan kode, JIT, melakukan pengumpulan sampah (C#, VB.NET, F#), dll. Kode yang dikelola CLR disebut kode terkelola. Kode dikompilasi ke dalam bahasa menengah umum (CIL) dan disimpan dalam rakitan (dengan ekstensi .exe atau .dll). Saat aplikasi berjalan, CLR mengambil perakitan dan menggunakan kompiler just-in-time (JIT) untuk mentranspredselam kode mesin menjadi kode yang dapat berjalan pada arsitektur komputer tertentu.
Anda dapat menggunakannya untuk pengembangan desktop dan web, tetapi terbatas pada pengembangan Windows, dan ia diinstal pada Windows.
.NET Core adalah salah satu runtime di .NET Ecosystem. Itu dirilis pada tahun 2016. Dan itu bersumber terbuka. Itu tidak mewakili versi baru dari .NET Framework dan tidak akan menggantinya. Ini adalah versi yang sepenuhnya independen, dibangun untuk memungkinkan kemampuan lintas platform untuk pengembangan aplikasi. .NET Core terdiri dari host aplikasi (dotnet.exe) yang menjalankan CLR dan perpustakaan. Ini memiliki runtime bahasa umum (CORECLR) dan .NET Core Class Library. Ini mendukung beban kerja aplikasi yang berbeda, seperti ASP.NET Core (MVC dan API), aplikasi konsol, dan UWP (saat ini).
.NET Core dapat berjalan pada platform yang berbeda: Windows Client, Server, IoT, Linux, Ubuntu, FreeBSD, Tizen, dan Mac OSX, dan dapat diinstal berdampingan dari berbagai versi per mesin atau pengguna.
.NET 5 dirilis pada November 2020 dengan tujuan menyatukan pengembangan untuk aplikasi Desktop, Web, Cloud, Mobile, Gaming, IoT, dan AI. Tujuan pengaturan sebelumnya adalah untuk menghasilkan satu runtime dan kerangka kerja. Namun, karena pandemi kesehatan global, penyatuan ditunda ke .NET 6. .NET 5 adalah basis kode bersama untuk .NET Core, Mono, Xamarin, dan Implementasi .NET di masa depan. Juga, Target Framework Names (TFMS), yang menyatakan versi penargetan .NET mana yang diperbarui, jadi kami sekarang memiliki net5.0. Ini untuk kode yang berjalan di mana -mana. Ini menggabungkan dan menggantikan nama NetCoreApp dan NetStandard dan net5.0-windows yang mewakili rasa spesifik OS dari .NET 5 yang mencakup net5.0 plus binding khusus OS.
.NET 9 adalah runtime terbaru di .NET Ecosystem. Ini dirilis pada November 2024. Dan menyatukan pengembangan untuk aplikasi desktop, web, cloud, seluler, game, IoT, dan AI. .NET 9 terdiri dari host aplikasi (dotnet.exe) yang menjalankan CLR dan perpustakaan. Ini memiliki runtime bahasa umum (CORECLR) dan .NET 8 Class Library. Ini juga termasuk ASP.NET Core 9. .NET 9 memiliki dukungan platform yang hampir identik sebagai .NET Core 3.1 untuk Windows, MacOS, dan Linux.
.NET 9 adalah rilis dukungan istilah standar , didukung selama enam bulan setelah rilis STS atau LTS berikutnya.
.NET 8 adalah dukungan jangka panjang (LTS) . Rilis tersebut didukung selama tiga tahun setelah rilis awal.
Runtimes yang berbeda menggunakan perpustakaan kelas yang berbeda, misalnya, .NET Framework menggunakan perpustakaan kelas .NET Framework, sementara .NET Core berisi perpustakaan kelasnya, serta Xamarin dengan perpustakaan kelasnya. Dengan cara ini, sulit untuk berbagi kode antara runtime yang berbeda, karena mereka menggunakan API yang berbeda. Solusi Microsoft adalah .NET Standard Library , dirilis pada tahun 2016. Ini mewakili serangkaian spesifikasi (formal) yang mengatakan API mana yang dapat Anda gunakan dan semua runtime mengimplementasikannya. Ini adalah evolusi Portable Class Libraries (PCL). Runtimes spesifik mengimplementasikan versi spesifik dari .NET Standard (mengimplementasikan API spesifik). Misalnya, .NET Framework 4.8.1 mengimplementasikan .NET Standard 2.0, dan .NET 7 mengimplementasikan .NET Standard 2.1 (tautan).
Untuk mempelajari lebih lanjut tentang Ekosistem .NET, periksa posting blog ini.
Jadwal rilis .NET oleh Microsoft:

C# adalah bahasa pemrograman yang dikembangkan oleh Microsoft. Ini adalah bahasa untuk membangun apa saja mulai dari aplikasi dan permainan desktop (menggunakan Unity) hingga solusi berbasis cloud dan layanan web. Dengan dukungan kuat untuk pemrograman yang berorientasi objek dan perpustakaan yang kaya, itu dirancang untuk menjadi mudah dan efisien.
Versi terbaru adalah C# 13 , dirilis pada November 2024.
Periksa timeline C# lengkap:

Anda perlu memahami fitur bahasa C# yang berbeda, seperti:

Tetapi juga perpustakaan .NET dan API untuk:
Sumber daya :
Menguasai pola desain, kode bersih, dan kontrol versi seperti Git memungkinkan Anda untuk menulis kode yang efisien dan dapat dipelihara yang berfungsi dan berkembang di lingkungan tim. Ini perbedaan antara menjadi pembuat kode dan insinyur perangkat lunak yang terampil .
Di sini, Anda perlu mengetahui prinsip yang berbeda, seperti:
Prinsip Solid :
Tetapi juga:
Sumber daya :
Ini adalah kerangka kerja lintas-platform, berkinerja tinggi yang dikembangkan oleh Microsoft untuk membangun aplikasi web, API, dan layanan microservices . Anda juga dapat menjalankan aplikasi Anda di Windows, Linux, atau MacOS. Ini direkayasa untuk fleksibilitas dan skalabilitas dengan fitur-fitur seperti injeksi ketergantungan bawaan dan sistem konfigurasi yang kuat.
Di sini, Anda juga perlu mengetahui fundamental pengembangan web , seperti:
Sumber daya :
Jika Anda ingin membangun UI di .net, Anda akan membutuhkan kerangka kerja ini. Razor adalah mesin template untuk membuat HTML dinamis, sementara Blazor mengambilnya, memungkinkan Anda membangun UI web interaktif menggunakan C# alih -alih JavaScript. Maui adalah penerus Xamarin yang dibuat untuk membangun aplikasi seluler lintas platform. Windows Presentation Foundation (WPF) adalah kerangka kerja UI yang membuat aplikasi klien desktop. UNO Platform adalah antarmuka pengguna grafis lintas platform open source yang memungkinkan kode berbasis Winui dan Universal Windows Platform (UWP) untuk dijalankan pada iOS, macOS, Linux, Android, dan WebAssembly.
Sumber daya :
Desain basis data yang baik memastikan penyimpanan data yang efisien dan pengambilan cepat, membuat aplikasi Anda berjalan lebih halus dan lebih mudah. SQL , bahasa masuk ke interaksi basis data, memberi Anda kekuatan untuk meminta, memperbarui, dan mengelola data yang Anda rancang dengan cermat untuk disimpan.
Di sini, Anda perlu tahu:
Sumber daya :
Pemetaan Objek-Relasional (ORM) seperti penerjemah antara kode C# yang berorientasi objek Anda dan database relasional, menghilangkan tugas yang membosankan dalam menulis kueri SQL untuk operasi CRUD dasar. Menggunakan kerangka kerja ORM seperti Entity Framework, Anda dapat memanipulasi data sebagai objek dalam kode Anda, membuatnya lebih mudah dibaca dan dapat dipelihara . Ini mempercepat pengembangan, meminimalkan kesalahan, dan memungkinkan Anda fokus pada logika bisnis yang kompleks daripada bergulat dengan sintaks database.
Untuk kerangka kerja entitas , Anda perlu mengetahui hal berikut:
Sumber daya :
Caching seperti memori jangka pendek pribadi aplikasi Anda, menyimpan data yang sering diakses sehingga dapat dengan cepat diambil tanpa mengakses database Anda . Dengan mengurangi beban basis data dan mempercepat akses data, caching memberi aplikasi Anda keunggulan kompetitif yang dibutuhkan untuk memenuhi permintaan pengguna untuk responsif dan ketersediaan.
Sumber daya :
Logging menangkap informasi runtime, kesalahan, dan data penting lainnya yang dapat membantu Anda dengan cepat mengidentifikasi dan memperbaiki masalah, membuat aplikasi Anda lebih andal dan aman. Kerangka kerja logging seperti NLOG atau serilog berintegrasi dengan mulus ke dalam .NET, memberi Anda alat diagnostik real-time yang sangat diperlukan untuk memantau kesehatan aplikasi, pemecahan masalah masalah, dan bahkan mengumpulkan wawasan untuk pengembangan di masa depan.
Sumber daya :
Dalam .NET kami memiliki tiga jenis komunikasi: komunikasi real-time, sinkron, dan komunikasi asinkron. Teknologi komunikasi real-time , seperti SignalR di .NET Ecosystem, memungkinkan fungsionalitas ini dengan mempertahankan koneksi konstan antara server dan klien. Komunikasi sinkron terutama dilakukan dengan menggunakan melalui klien HTTP, sementara komunikasi asinkron dilakukan melalui berbagai pesan dan kerangka kerja berbasis acara dan perpustakaan. Sistem pesan bertindak sebagai perantara di antara berbagai bagian sistem Anda, memungkinkan mereka untuk berkomunikasi tanpa terhubung secara langsung. Penangan acara , di sisi lain, digunakan untuk menangani acara dalam satu aplikasi. Mereka memfasilitasi model Penerbit-Penerbit di mana salah satu bagian dari aplikasi dapat meningkatkan acara yang dapat bereaksi terhadap bagian lain.
Sumber daya :
Layanan ini menjalankan tugas di latar belakang, membebaskan aplikasi Anda untuk fokus pada interaksi pengguna. Apakah pemrosesan data, email otomatis, atau pembersihan berkala , layanan latar belakang memastikan tugas-tugas ini tidak memperlambat atau mengganggu pengalaman pengguna.
Sumber daya :
Tes unit fokus pada potongan-potongan yang terisolasi dari kode Anda, tes integrasi memastikan bagian yang berbeda diputar bersama dengan baik, dan tes ujung ke ujung memvalidasi seluruh perjalanan pengguna dalam aplikasi Anda. Bersama -sama, mereka membentuk jaring pengaman, menangkap bug lebih awal, menyederhanakan debugging, dan membuat basis kode Anda kuat dan dapat dipertahankan.
Di sini Anda perlu tahu:
Sumber daya :
Alat-alat ini memberikan wawasan waktu nyata tentang kinerja aplikasi, perilaku pengguna, dan tingkat kesalahan Anda , memungkinkan Anda untuk mengatasi masalah sebelum meningkat menjadi masalah penuh secara proaktif.
Pemantauan berfokus pada kesehatan dan ketersediaan layanan dan sistem, seringkali memicu peringatan untuk kondisi yang telah ditentukan.
Telemetri mengumpulkan, memproses, dan mentransmisikan data dari sistem, memungkinkan analisis pola, tren, dan anomali.
Sumber daya :
Solusi kontainer merangkum aplikasi .NET, pustaka, dan runtime Anda menjadi wadah yang terisolasi. Ini memungkinkan konsistensi di berbagai lingkungan pengembangan dan produksi , menyelesaikan masalah ketergantungan. Dengan fitur -fitur seperti sistem file berlapis, Anda dapat dengan mudah mengelola gambar kontainer untuk ASP.NET, .NET Core, atau layanan .NET lainnya, mengoptimalkan waktu pembuatan dan pemanfaatan sumber daya.
Sumber daya :
Penyedia cloud menyediakan lapisan API untuk abstrak infrastruktur dan penyediaannya berdasarkan batas keamanan dan penagihan. Cloud berjalan pada server di pusat data , tetapi abstraksi secara cerdik memberikan penampilan berinteraksi dengan satu "platform" atau aplikasi besar. Kemampuan untuk dengan cepat menyediakan, mengkonfigurasi, dan mengamankan sumber daya dengan penyedia cloud telah menjadi kunci keberhasilan dan kompleksitas DevOps modern yang luar biasa.
Penyedia cloud paling populer di pasaran adalah AWS dan Azure , serta Google Cloud .
Di sini, Anda harus tahu cara mengelola pengguna dan administrasi, jaringan, server virtual, dll.
Sumber daya :
CI/CD mengotomatiskan tahap bangunan, pengujian, dan penyebaran ke dalam pipa yang ramping dan tahan kesalahan. Ini berarti rilis yang lebih cepat, perbaikan bug, dan lebih banyak waktu untuk fokus pada pengembangan fitur .
Di sini Anda perlu tahu cara:
Sumber daya :
Beberapa perpustakaan .NET yang berguna. Perhatikan bahwa tidak semua perpustakaan akan digunakan oleh semua orang, itu terutama tergantung pada proyek yang Anda kerjakan.
Selain itu, Anda juga perlu mengetahui hal berikut:
Pertunjukan memainkan peran penting dalam aplikasi .NET. Di sini Anda perlu tahu:
Alat -alat ini dapat membantu Anda mengidentifikasi dan men -debug hambatan kinerja yang berbeda yang Anda miliki dalam kode Anda. Untuk ini, Anda dapat menggunakan alat lain, seperti:
Bersama dengan alat, Anda harus menyadari berbagai praktik terbaik kinerja untuk .net:
Caching (cache memori in-mem atau redis)
Optimalisasi Database (Optimalkan kueri, pengindeksan yang tepat, kumpulan koneksi)
Pemrograman Async (Melepas semua operasi Bound CPU yang luas atau I/O ke DB, Sistem File, Sistem Ext.)
Gunakan Kerangka Entitas dengan bijak (gunakan pemuatan yang bersemangat, proyeksi, dan optimisasi seperti kueri yang dikompilasi)
Manajemen memori (gunakan jenis nilai dan berhati -hatilah dengan grafik objek besar. Gunakan pola buang ke koneksi atau aliran DB. Hindari tinju/unboxing. Gunakan StringBuilder alih -alih string untuk sejumlah besar rangkaian.)
Caching http (gunakan etag, header yang dimodifikasi terakhir)
Minimalkan perjalanan bundar (kurangi jumlah permintaan HTTP dan basis data basis data)
Jaringan Pengiriman Konten (CDNs) (Aset Statis Offload (CSS, JavaScript, Gambar) ke CDN untuk pengiriman yang lebih cepat ke pengguna)
Kompresi (Aktifkan kompresi GZIP atau Brotli untuk respons HTTP untuk mengurangi ukuran transfer data)
Logging dan penelusuran (hindari logging yang berlebihan dalam produksi. Gunakan penelusuran terdistribusi di seluruh layanan mikro.)
Paralelisme dan konkurensi (memanfaatkan paralelisme dan multithreading untuk tugas yang terikat CPU menggunakan kelas paralel atau pustaka paralel tugas (TPL))
Optimalisasi Sumber Daya (mengoptimalkan gambar dan aset untuk Web untuk mengurangi waktu pemuatan)
Http2 over ssl (sekarang buat keputusan cerdas tentang konten halaman)
Ukur dan Pantau Kinerja (Gunakan Vs Alat Diagnostik, Wawasan APP, atau BenchmarkDotNet)
Rentang pengguna <> bukan koleksi (rentang dapat mewakili bagian memori yang berdekatan; ini berarti kita dapat menggunakannya untuk beroperasi di atas array)
Keamanan memainkan peran penting dalam pengembangan aplikasi. Aspek keamanan paling kritis di dunia .net adalah:
Konsep otentikasi dan otorisasi :
Konsep kriptografi dan perlindungan data :
Jika Anda pikir peta jalan dapat ditingkatkan, buka PR dengan pembaruan apa pun dan kirimkan masalah apa pun. Juga, saya akan terus meningkatkan ini, jadi Anda juga harus membintangi repositori ini.
Milan Milanović - CTO di 3MD dan MICrosoft MVP untuk Teknologi Pengembang.