Refactor HTML for improved readability and structure
· 10 months ago
6f41a2cfa1b9ab3ebe93cf996645a186d82003f0
Parent:
372830fcb
Reformatted dotnet-cheatsheet.html to use consistent self-closing tags, improved indentation, and streamlined meta and link elements. This enhances maintainability and readability without changing page content or functionality.
1 file changed +2968 −1046
- dotnet-cheatsheet.html +2968 −1046
Diff
--- a/dotnet-cheatsheet.html +++ b/dotnet-cheatsheet.html @@ -1,44 +1,36 @@ <!DOCTYPE html> <html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Interactive .NET & C# Cheatsheet: Modern Ecosystem & Language Guide</title> - - <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>#️⃣</text></svg>"> - - <!-- SEO Meta Description --> - <meta name="description" content="Comprehensive and interactive cheatsheet for the .NET ecosystem and C# language. Explore modern .NET versions (.NET 9), key C# 13 features, major components, libraries, frameworks like ASP.NET Core, MAUI, EF Core, and essential tooling for senior developers and architects."> - <!-- Keywords --> - <meta name="keywords" content=".NET, C#, Cheatsheet, .NET Core, ASP.NET Core, MAUI, EF Core, C# Language Features, .NET SDK, .NET Runtime, Visual Studio, NuGet, Programming Guide, Software Development, Microsoft Technologies, .NET 9, C# 13, Modern .NET"> - - <!-- Canonical URL --> - <link rel="canonical" href="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> - - <!-- Social Media Metadata (Open Graph) --> - <meta property="og:title" content="Interactive .NET & C# Cheatsheet: Modern Frameworks, Libraries & Language Features Guide"> - <meta property="og:description" content="An in-depth visual guide to the .NET platform, latest C# language features (C# 13), ASP.NET Core, .NET MAUI, EF Core, essential libraries, and architectural concepts for modern .NET development (up to .NET 9). Perfect for developers and architects."> - <meta property="og:type" content="article"> - <meta property="og:url" content="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> - <meta property="og:image" content="https://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> - <meta property="og:image:alt" content="Comprehensive visual diagram of the modern .NET ecosystem, illustrating connections between C#, .NET SDK, ASP.NET Core, MAUI, EF Core, and key development concepts. Your go-to .NET cheatsheet visual."> - <meta property="og:site_name" content="David Veksler Cheatsheets"> - <meta property="article:published_time" content="2023-01-15T09:00:00Z"> - <meta property="article:modified_time" content="2025-05-10T10:00:00Z"> - <meta property="article:author" content="https://www.linkedin.com/in/davidveksler/"> - - - <!-- Twitter Card Metadata --> - <meta name="twitter:card" content="summary_large_image"> - <meta name="twitter:title" content="Interactive .NET & C# Cheatsheet: Modern Frameworks & Language Guide"> - <meta name="twitter:description" content="Explore the .NET platform, C# language (C# 13), ASP.NET Core, MAUI, EF Core, and more with this visual guide for modern .NET developers and architects (up to .NET 9)."> - <meta name="twitter:image" content="https://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> - <meta name="twitter:image:alt" content="Visual overview of the .NET and C# ecosystem for developers. Highlights frameworks like ASP.NET Core, MAUI, and core language features."> - <meta name="twitter:creator" content="@heroiclife"> - - <!-- Structured Data (JSON-LD) --> - <script type="application/ld+json"> - { + <head> + <meta charset="utf-8"/> + <meta content="width=device-width, initial-scale=1.0" name="viewport"/> + <title> + Interactive .NET & C# Cheatsheet: Modern Ecosystem & Language Guide + </title> + <link href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>#️⃣</text></svg>" rel="icon"/> + <!-- SEO Meta Description --> + <meta content="Comprehensive and interactive cheatsheet for the .NET ecosystem and C# language. Explore modern .NET versions (.NET 9), key C# 13 features, major components, libraries, frameworks like ASP.NET Core, MAUI, EF Core, and essential tooling for senior developers and architects." name="description"/> + <!-- Keywords --> + <meta content=".NET, C#, Cheatsheet, .NET Core, ASP.NET Core, MAUI, EF Core, C# Language Features, .NET SDK, .NET Runtime, Visual Studio, NuGet, Programming Guide, Software Development, Microsoft Technologies, .NET 9, C# 13, Modern .NET" name="keywords"/> + <!-- Canonical URL --> + <link href="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html" rel="canonical"/> + <!-- Social Media Metadata (Open Graph) --> + <meta content="Interactive .NET & C# Cheatsheet: Modern Frameworks, Libraries & Language Features Guide" property="og:title"/> + <meta content="An in-depth visual guide to the .NET platform, latest C# language features (C# 13), ASP.NET Core, .NET MAUI, EF Core, essential libraries, and architectural concepts for modern .NET development (up to .NET 9). Perfect for developers and architects." property="og:description"/> + <meta content="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html" property="og:url"/> + <meta content="Comprehensive visual diagram of the modern .NET ecosystem, illustrating connections between C#, .NET SDK, ASP.NET Core, MAUI, EF Core, and key development concepts. Your go-to .NET cheatsheet visual." property="og:image:alt"/> + <meta content="David Veksler Cheatsheets" property="og:site_name"/> + <meta content="2023-01-15T09:00:00Z" property="article:published_time"/> + <meta content="2025-05-10T10:00:00Z" property="article:modified_time"/> + <meta content="https://www.linkedin.com/in/davidveksler/" property="article:author"/> + <!-- Twitter Card Metadata --> + <meta content="summary_large_image" name="twitter:card"/> + <meta content="Interactive .NET & C# Cheatsheet: Modern Frameworks & Language Guide" name="twitter:title"/> + <meta content="Explore the .NET platform, C# language (C# 13), ASP.NET Core, MAUI, EF Core, and more with this visual guide for modern .NET developers and architects (up to .NET 9)." name="twitter:description"/> + <meta content="Visual overview of the .NET and C# ecosystem for developers. Highlights frameworks like ASP.NET Core, MAUI, and core language features." name="twitter:image:alt"/> + <meta content="@heroiclife" name="twitter:creator"/> + <!-- Structured Data (JSON-LD) --> + <script type="application/ld+json"> + { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Interactive .NET & C# Language Cheatsheet - Modern Ecosystem Overview (.NET 9, C# 13)", @@ -65,14 +57,13 @@ }, "keywords": ".NET, C#, Cheatsheet, .NET Core, .NET 9, C# 13, ASP.NET Core, MAUI, EF Core, C# Language Features, .NET SDK, .NET Runtime, LINQ, Async Programming, Visual Studio, NuGet, .NET Architecture, Software Development, Programming Guide" } - </script> - - <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> - <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css"> - <script src="https://cdn.jsdelivr.net/npm/[email protected]/leader-line.min.js"></script> - - <style> - :root { + </script> + <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/> + <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" rel="stylesheet"/> + <script src="https://cdn.jsdelivr.net/npm/[email protected]/leader-line.min.js"> + </script> + <style> + :root { --bs-body-bg: #f0f4f8; /* Lighter, slightly blueish background */ --bs-primary: #512BD4; /* .NET Purple */ --bs-primary-dark: #3E1AA9; /* Darker .NET Purple */ @@ -303,1011 +294,2942 @@ .section-tooling, .card-tooling { --db-category-color: var(--dotnet-color-tooling); } .section-advanced, .card-advanced { --db-category-color: var(--dotnet-color-advanced); } .section-general, .card-general { --db-category-color: var(--dotnet-color-general); } - - </style> -</head> -<body> -<header class="page-header"> - <h1><i class="bi bi-box-seam" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="bottom" title=".NET Ecosystem Icon"></i> .NET & C# Language Cheatsheet</h1> - <p class="lead">An interactive guide to modern .NET components, C# language features, frameworks, and libraries for architects & senior developers (Covering .NET 9 & C# 13).</p> -</header> - -<div class="container"> - <div id="filter-controls" class="mb-4"> - <input type="search" id="search-box" class="form-control mb-3" placeholder="Search topics, features, keywords..." data-bs-toggle="tooltip" data-bs-placement="bottom" title="Type to search for topics, features, or keywords within the cheatsheet."> - <div id="category-filters" class="btn-toolbar" role="toolbar" aria-label="Category Filters" data-bs-toggle="tooltip" data-bs-placement="top" title="Filter the cheatsheet content by category."> - <!-- Filter buttons will be injected here by JavaScript --> + </style> + <meta content="images/dotnet-cheatsheet.png" property="og:image"/> + <meta content="images/dotnet-cheatsheet.png" name="twitter:image"/> + <meta content="website" property="og:type"/> + </head> + <body> + <header class="page-header"> + <h1> + <i aria-hidden="true" class="bi bi-box-seam" data-bs-placement="bottom" data-bs-toggle="tooltip" title=".NET Ecosystem Icon"> + </i> + .NET & C# Language Cheatsheet + </h1> + <p class="lead"> + An interactive guide to modern .NET components, C# language features, frameworks, and libraries for architects & senior developers (Covering .NET 9 & C# 13). + </p> + </header> + <div class="container"> + <div class="mb-4" id="filter-controls"> + <input class="form-control mb-3" data-bs-placement="bottom" data-bs-toggle="tooltip" id="search-box" placeholder="Search topics, features, keywords..." title="Type to search for topics, features, or keywords within the cheatsheet." type="search"/> + <div aria-label="Category Filters" class="btn-toolbar" data-bs-placement="top" data-bs-toggle="tooltip" id="category-filters" role="toolbar" title="Filter the cheatsheet content by category."> + <!-- Filter buttons will be injected here by JavaScript --> + </div> + <div class="alert alert-info mt-3" id="no-results" style="display: none;"> + No items match your criteria. Please try a different search or filter. + </div> + </div> + </div> + <div class="container" id="main-container"> + <!-- I. .NET PLATFORM FOUNDATION --> + <div class="schema-container section-platform" data-section-id="section-platform-foundation" data-section-name=".NET Platform"> + <h2 class="section-title" id="section-platform-foundation"> + .NET Platform Foundation + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-platform" id="card-dotnet-sdk"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-tools" data-bs-placement="top" data-bs-toggle="tooltip" title="SDK Tools Icon"> + </i> + .NET SDK + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + The + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A collection of tools and libraries used to create applications for a specific platform or software framework."> + Software Development Kit + </span> + providing tools to + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="The typical stages in the software development lifecycle that the SDK facilitates."> + develop, build, test, and publish + </span> + .NET applications. Includes the .NET CLI, compilers, and runtime. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/sdk" rel="noopener noreferrer" target="_blank" title="External link: Official .NET SDK Overview"> + SDK Overview + </a> + </p> + <button aria-controls="collapseDotnetSdk" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseDotnetSdk" data-bs-toggle="tooltip" title="Show/hide more details about the .NET SDK" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseDotnetSdk"> + <h6> + Purpose + </h6> + <p> + A comprehensive suite of tools essential for the .NET development lifecycle. + </p> + <h6> + Key Components + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The primary command-line tool for interacting with the .NET SDK to manage projects and perform development tasks."> + .NET CLI (`dotnet`): + </strong> + Command-line interface for creating, restoring dependencies, building, running, testing, and publishing applications. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/tools/" rel="noopener noreferrer" target="_blank" title="External link: .NET CLI Documentation"> + .NET CLI Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Software that translates C# and VB.NET source code into Common Intermediate Language (CIL)."> + Compilers (Roslyn): + </strong> + C# and Visual Basic compilers. F# has its own compiler. Translates source code to CIL. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/" rel="noopener noreferrer" target="_blank" title="External link: Roslyn Compiler SDK Overview"> + Roslyn Overview + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The execution environment and foundational code libraries needed to run .NET applications."> + Runtime & Libraries: + </strong> + Includes the .NET Runtime and Base Class Library (BCL) necessary to run apps. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The build platform for Microsoft and Visual Studio, used to compile and package .NET projects."> + Build System (MSBuild): + </strong> + Handles the build process based on project files (`.csproj`, `.fsproj`). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild" rel="noopener noreferrer" target="_blank" title="External link: MSBuild Documentation"> + MSBuild Docs + </a> + </li> + </ul> + <h6> + Use Cases + </h6> + <p> + Essential for any .NET development, from simple console apps to complex web services and cross-platform applications. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-platform" id="card-dotnet-runtime"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-cpu" data-bs-placement="top" data-bs-toggle="tooltip" title="Runtime Execution Icon"> + </i> + .NET Runtime + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + The execution environment for .NET applications. Manages + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Memory Management through Garbage Collection: Automatic process of reclaiming memory occupied by objects that are no longer in use."> + memory (GC) + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Just-In-Time Compilation: The process of converting Intermediate Language (CIL) code into native machine code at runtime, just before execution."> + JIT compilation + </span> + , type safety, and exception handling. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/introduction#net-runtime" rel="noopener noreferrer" target="_blank" title="External link: Official .NET Runtime Overview"> + Runtime Overview + </a> + </p> + <button aria-controls="collapseDotnetRuntime" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseDotnetRuntime" data-bs-toggle="tooltip" title="Show/hide more details about the .NET Runtime" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseDotnetRuntime"> + <h6> + Purpose + </h6> + <p> + Provides the foundational services required to execute managed .NET code. + </p> + <h6> + Core Components (CoreCLR for most .NET, Mono for MAUI on mobile) + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Converts Common Intermediate Language (CIL) bytecode into native machine code dynamically during program execution."> + JIT (Just-In-Time) Compilation: + </strong> + Converts CIL bytecode into native machine code at runtime. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/managed-code" rel="noopener noreferrer" target="_blank" title="External link: Managed Code Overview"> + Managed Code + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Automated memory management system that reclaims memory occupied by unreferenced objects."> + Garbage Collection (GC): + </strong> + Automatic memory management, reclaiming unused objects. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/" rel="noopener noreferrer" target="_blank" title="External link: Garbage Collection Documentation"> + GC Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Common Type System: A standard that specifies how types are declared, used, and managed in the .NET runtime, enabling interoperability between languages."> + Type System (CTS): + </strong> + Enforces type safety and defines how types are declared, used, and managed. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/base-types/common-type-system" rel="noopener noreferrer" target="_blank" title="External link: Common Type System Documentation"> + CTS Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A structured mechanism for managing errors and exceptional conditions that occur during program execution."> + Exception Handling: + </strong> + Manages structured error handling. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/exceptions/" rel="noopener noreferrer" target="_blank" title="External link: Exception Handling Documentation"> + Exception Handling + </a> + </li> + <li> + <strong> + Security: + </strong> + Provides mechanisms for code access security and verification. + </li> + </ul> + <p> + Briefly, + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="An open-source implementation of the .NET Framework, primarily used for cross-platform development, notably powering Xamarin and .NET MAUI on mobile platforms."> + Mono + </span> + is used for Xamarin/MAUI on iOS/Android, and + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Ahead-of-Time compilation that compiles .NET code to native machine code during the build process, rather than at runtime."> + NativeAOT + </span> + compiles .NET to native code ahead-of-time. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" rel="noopener noreferrer" target="_blank" title="External link: NativeAOT Documentation"> + NativeAOT Docs + </a> + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-platform" id="card-bcl"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-collection" data-bs-placement="top" data-bs-toggle="tooltip" title="Library Collection Icon"> + </i> + Base Class Library (BCL) + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + A rich set of + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A fundamental set of pre-written code (classes, methods, etc.) providing common functionalities that developers can reuse."> + core libraries + </span> + providing fundamental functionalities like collections, I/O, networking, JSON handling, and threading. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/glossary#bcl" rel="noopener noreferrer" target="_blank" title="External link: Base Class Library Overview"> + BCL Overview + </a> + </p> + <button aria-controls="collapseBcl" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseBcl" data-bs-toggle="tooltip" title="Show/hide more details about the Base Class Library" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseBcl"> + <h6> + Purpose + </h6> + <p> + Provides ready-to-use types and utilities for common programming tasks, forming the bedrock of .NET applications. + </p> + <h6> + Key Namespaces/Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Contains fundamental classes and base types used in .NET programming."> + `System` Namespace: + </strong> + Core types (`string`, `int`, `DateTime`), I/O (`File`, `Stream`), collections (`List + <t> + `, `Dictionary + <tkey,tvalue> + `), console operations. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/api/system" rel="noopener noreferrer" target="_blank" title="External link: System Namespace Documentation"> + System Namespace + </a> + </tkey,tvalue> + </t> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Provides classes and interfaces that support queries that use Language-Integrated Query (LINQ)."> + `System.Linq` Namespace: + </strong> + Language Integrated Query for querying objects, XML, and databases. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/linq/" rel="noopener noreferrer" target="_blank" title="External link: LINQ Documentation"> + LINQ Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Provides high-performance, low-allocation, and standards-compliant JSON serialization and deserialization."> + `System.Text.Json` Namespace: + </strong> + High-performance JSON serialization and deserialization. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/overview" rel="noopener noreferrer" target="_blank" title="External link: System.Text.Json Documentation"> + System.Text.Json Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Provides classes for sending HTTP requests and receiving HTTP responses from a resource identified by a URI."> + `System.Net.Http` Namespace: + </strong> + Modern HTTP client functionalities (`HttpClient`). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient" rel="noopener noreferrer" target="_blank" title="External link: HttpClient Documentation"> + HttpClient Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Provides types that simplify the work of writing concurrent and asynchronous code."> + `System.Threading.Tasks` Namespace: + </strong> + Asynchronous programming with `Task` and `Task + <t> + ` (async/await). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/" rel="noopener noreferrer" target="_blank" title="External link: Asynchronous Programming Guide"> + Async Programming + </a> + </t> + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-platform" id="card-cil"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-file-earmark-code" data-bs-placement="top" data-bs-toggle="tooltip" title="Intermediate Code File Icon"> + </i> + CIL / MSIL + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was part of the original .NET Framework 1.0 and continues in modern .NET."> + .NET Fx 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A CPU-agnostic instruction set into which .NET programs are compiled. It is executed by the Common Language Runtime (CLR)."> + Common Intermediate Language + </span> + (formerly MSIL). The platform-agnostic compiled output of .NET languages, executed by the CLR. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/managed-execution-process#cil-and-jit-compilation" rel="noopener noreferrer" target="_blank" title="External link: CIL and JIT Compilation Process"> + CIL and JIT + </a> + </p> + <button aria-controls="collapseCil" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCil" data-bs-toggle="tooltip" title="Show/hide more details about CIL/MSIL" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCil"> + <h6> + Purpose + </h6> + <p> + Serves as an intermediate instruction set that can be JIT-compiled to native code on any platform supporting a .NET runtime. This enables language interoperability and platform independence. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/managed-execution-process" rel="noopener noreferrer" target="_blank" title="External link: Managed Execution Process Overview"> + Managed Execution Process + </a> + </p> + <h6> + Characteristics + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The code is not specific to any particular processor architecture and can run on any system with a compatible .NET runtime."> + CPU-Agnostic: + </strong> + Not tied to a specific processor architecture. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The CLR can check the CIL code for type safety and other integrity constraints before execution."> + Verifiable: + </strong> + Can be verified for type safety by the CLR. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Includes descriptive information about the types, members, and structure of the code within assemblies."> + Contains Metadata: + </strong> + Includes information about types, members, and references within assemblies. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-platform" id="card-assemblies"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-archive" data-bs-placement="top" data-bs-toggle="tooltip" title="Archive / Assembly Icon"> + </i> + Assemblies & Metadata + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was part of the original .NET Framework 1.0 and continues in modern .NET."> + .NET Fx 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Units of + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Assemblies are the fundamental units for deploying applications and managing their versions."> + deployment and versioning + </span> + in .NET (DLLs or EXEs). Contain CIL code and self-describing + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Self-describing information embedded within assemblies, detailing types, members, references, and other assembly characteristics."> + metadata + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/assembly/" rel="noopener noreferrer" target="_blank" title="External link: Assemblies in .NET Documentation"> + Assemblies in .NET + </a> + </p> + <button aria-controls="collapseAssemblies" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseAssemblies" data-bs-toggle="tooltip" title="Show/hide more details about Assemblies & Metadata" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> </div> - <div id="no-results" class="alert alert-info mt-3" style="display: none;">No items match your criteria. Please try a different search or filter.</div> + </div> + <div class="collapse collapse-content" id="collapseAssemblies"> + <h6> + Purpose + </h6> + <p> + Assemblies are the building blocks of .NET applications, packaging types and resources. Metadata allows the runtime to understand the types within an assembly without needing separate header files or an IDL. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A core part of an assembly that contains metadata about the assembly itself, including its identity, version, culture, and dependencies."> + Manifest: + </strong> + Contains assembly metadata (name, version, culture, referenced assemblies, security permissions). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/assembly/manifest" rel="noopener noreferrer" target="_blank" title="External link: Assembly Manifest Documentation"> + Assembly Manifest + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The compiled CIL code for the classes, structs, enums, interfaces, and delegates defined in the assembly."> + Types: + </strong> + The CIL code for the types defined in the assembly. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Non-executable data, such as images, strings, or other files, embedded within the assembly."> + Resources: + </strong> + Embedded resources like images or strings. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Defines a boundary for type resolution, ensuring that type names are unique within an assembly and correctly referenced."> + Scoping: + </strong> + Defines a boundary for type resolution and versioning. + </li> + </ul> + </div> + </div> + </div> </div> -</div> - -<div class="container" id="main-container"> - - <!-- I. .NET PLATFORM FOUNDATION --> - <div class="schema-container section-platform" data-section-id="section-platform-foundation" data-section-name=".NET Platform"> - <h2 class="section-title" id="section-platform-foundation">.NET Platform Foundation</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-platform" id="card-dotnet-sdk"> - <div class="card-body"> - <h5><i class="bi bi-tools" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="SDK Tools Icon"></i> .NET SDK <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">The <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A collection of tools and libraries used to create applications for a specific platform or software framework.">Software Development Kit</span> providing tools to <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="The typical stages in the software development lifecycle that the SDK facilitates.">develop, build, test, and publish</span> .NET applications. Includes the .NET CLI, compilers, and runtime. <a href="https://learn.microsoft.com/en-us/dotnet/core/sdk" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Official .NET SDK Overview">SDK Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDotnetSdk" aria-expanded="false" aria-controls="collapseDotnetSdk" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about the .NET SDK"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseDotnetSdk"> - <h6>Purpose</h6> - <p>A comprehensive suite of tools essential for the .NET development lifecycle.</p> - <h6>Key Components</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The primary command-line tool for interacting with the .NET SDK to manage projects and perform development tasks.">.NET CLI (`dotnet`):</strong> Command-line interface for creating, restoring dependencies, building, running, testing, and publishing applications. <a href="https://learn.microsoft.com/en-us/dotnet/core/tools/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET CLI Documentation">.NET CLI Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Software that translates C# and VB.NET source code into Common Intermediate Language (CIL).">Compilers (Roslyn):</strong> C# and Visual Basic compilers. F# has its own compiler. Translates source code to CIL. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Roslyn Compiler SDK Overview">Roslyn Overview</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The execution environment and foundational code libraries needed to run .NET applications.">Runtime & Libraries:</strong> Includes the .NET Runtime and Base Class Library (BCL) necessary to run apps.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The build platform for Microsoft and Visual Studio, used to compile and package .NET projects.">Build System (MSBuild):</strong> Handles the build process based on project files (`.csproj`, `.fsproj`). <a href="https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: MSBuild Documentation">MSBuild Docs</a></li> - </ul> - <h6>Use Cases</h6> - <p>Essential for any .NET development, from simple console apps to complex web services and cross-platform applications.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-platform" id="card-dotnet-runtime"> - <div class="card-body"> - <h5><i class="bi bi-cpu" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Runtime Execution Icon"></i> .NET Runtime <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">The execution environment for .NET applications. Manages <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Memory Management through Garbage Collection: Automatic process of reclaiming memory occupied by objects that are no longer in use.">memory (GC)</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Just-In-Time Compilation: The process of converting Intermediate Language (CIL) code into native machine code at runtime, just before execution.">JIT compilation</span>, type safety, and exception handling. <a href="https://learn.microsoft.com/en-us/dotnet/core/introduction#net-runtime" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Official .NET Runtime Overview">Runtime Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDotnetRuntime" aria-expanded="false" aria-controls="collapseDotnetRuntime" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about the .NET Runtime"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseDotnetRuntime"> - <h6>Purpose</h6> - <p>Provides the foundational services required to execute managed .NET code.</p> - <h6>Core Components (CoreCLR for most .NET, Mono for MAUI on mobile)</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Converts Common Intermediate Language (CIL) bytecode into native machine code dynamically during program execution.">JIT (Just-In-Time) Compilation:</strong> Converts CIL bytecode into native machine code at runtime. <a href="https://learn.microsoft.com/en-us/dotnet/standard/managed-code" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Managed Code Overview">Managed Code</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Automated memory management system that reclaims memory occupied by unreferenced objects.">Garbage Collection (GC):</strong> Automatic memory management, reclaiming unused objects. <a href="https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Garbage Collection Documentation">GC Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Common Type System: A standard that specifies how types are declared, used, and managed in the .NET runtime, enabling interoperability between languages.">Type System (CTS):</strong> Enforces type safety and defines how types are declared, used, and managed. <a href="https://learn.microsoft.com/en-us/dotnet/standard/base-types/common-type-system" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Common Type System Documentation">CTS Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A structured mechanism for managing errors and exceptional conditions that occur during program execution.">Exception Handling:</strong> Manages structured error handling. <a href="https://learn.microsoft.com/en-us/dotnet/standard/exceptions/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Exception Handling Documentation">Exception Handling</a></li> - <li><strong>Security:</strong> Provides mechanisms for code access security and verification.</li> - </ul> - <p>Briefly, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="An open-source implementation of the .NET Framework, primarily used for cross-platform development, notably powering Xamarin and .NET MAUI on mobile platforms.">Mono</span> is used for Xamarin/MAUI on iOS/Android, and <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Ahead-of-Time compilation that compiles .NET code to native machine code during the build process, rather than at runtime.">NativeAOT</span> compiles .NET to native code ahead-of-time. <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: NativeAOT Documentation">NativeAOT Docs</a></p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-platform" id="card-bcl"> - <div class="card-body"> - <h5><i class="bi bi-collection" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Library Collection Icon"></i> Base Class Library (BCL) <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">A rich set of <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A fundamental set of pre-written code (classes, methods, etc.) providing common functionalities that developers can reuse.">core libraries</span> providing fundamental functionalities like collections, I/O, networking, JSON handling, and threading. <a href="https://learn.microsoft.com/en-us/dotnet/standard/glossary#bcl" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Base Class Library Overview">BCL Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseBcl" aria-expanded="false" aria-controls="collapseBcl" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about the Base Class Library"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseBcl"> - <h6>Purpose</h6> - <p>Provides ready-to-use types and utilities for common programming tasks, forming the bedrock of .NET applications.</p> - <h6>Key Namespaces/Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Contains fundamental classes and base types used in .NET programming.">`System` Namespace:</strong> Core types (`string`, `int`, `DateTime`), I/O (`File`, `Stream`), collections (`List<T>`, `Dictionary<TKey,TValue>`), console operations. <a href="https://learn.microsoft.com/en-us/dotnet/api/system" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: System Namespace Documentation">System Namespace</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Provides classes and interfaces that support queries that use Language-Integrated Query (LINQ).">`System.Linq` Namespace:</strong> Language Integrated Query for querying objects, XML, and databases. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/linq/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: LINQ Documentation">LINQ Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Provides high-performance, low-allocation, and standards-compliant JSON serialization and deserialization.">`System.Text.Json` Namespace:</strong> High-performance JSON serialization and deserialization. <a href="https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: System.Text.Json Documentation">System.Text.Json Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Provides classes for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.">`System.Net.Http` Namespace:</strong> Modern HTTP client functionalities (`HttpClient`). <a href="https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: HttpClient Documentation">HttpClient Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Provides types that simplify the work of writing concurrent and asynchronous code.">`System.Threading.Tasks` Namespace:</strong> Asynchronous programming with `Task` and `Task<T>` (async/await). <a href="https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Asynchronous Programming Guide">Async Programming</a></li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-platform" id="card-cil"> - <div class="card-body"> - <h5><i class="bi bi-file-earmark-code" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Intermediate Code File Icon"></i> CIL / MSIL <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was part of the original .NET Framework 1.0 and continues in modern .NET.">.NET Fx 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary"><span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A CPU-agnostic instruction set into which .NET programs are compiled. It is executed by the Common Language Runtime (CLR).">Common Intermediate Language</span> (formerly MSIL). The platform-agnostic compiled output of .NET languages, executed by the CLR. <a href="https://learn.microsoft.com/en-us/dotnet/standard/managed-execution-process#cil-and-jit-compilation" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: CIL and JIT Compilation Process">CIL and JIT</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCil" aria-expanded="false" aria-controls="collapseCil" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about CIL/MSIL"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCil"> - <h6>Purpose</h6> - <p>Serves as an intermediate instruction set that can be JIT-compiled to native code on any platform supporting a .NET runtime. This enables language interoperability and platform independence. <a href="https://learn.microsoft.com/en-us/dotnet/standard/managed-execution-process" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Managed Execution Process Overview">Managed Execution Process</a></p> - <h6>Characteristics</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The code is not specific to any particular processor architecture and can run on any system with a compatible .NET runtime.">CPU-Agnostic:</strong> Not tied to a specific processor architecture.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The CLR can check the CIL code for type safety and other integrity constraints before execution.">Verifiable:</strong> Can be verified for type safety by the CLR.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Includes descriptive information about the types, members, and structure of the code within assemblies.">Contains Metadata:</strong> Includes information about types, members, and references within assemblies.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-platform" id="card-assemblies"> - <div class="card-body"> - <h5><i class="bi bi-archive" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Archive / Assembly Icon"></i> Assemblies & Metadata <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was part of the original .NET Framework 1.0 and continues in modern .NET.">.NET Fx 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Units of <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Assemblies are the fundamental units for deploying applications and managing their versions.">deployment and versioning</span> in .NET (DLLs or EXEs). Contain CIL code and self-describing <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Self-describing information embedded within assemblies, detailing types, members, references, and other assembly characteristics.">metadata</span>. <a href="https://learn.microsoft.com/en-us/dotnet/standard/assembly/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Assemblies in .NET Documentation">Assemblies in .NET</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseAssemblies" aria-expanded="false" aria-controls="collapseAssemblies" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Assemblies & Metadata"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseAssemblies"> - <h6>Purpose</h6> - <p>Assemblies are the building blocks of .NET applications, packaging types and resources. Metadata allows the runtime to understand the types within an assembly without needing separate header files or an IDL.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A core part of an assembly that contains metadata about the assembly itself, including its identity, version, culture, and dependencies.">Manifest:</strong> Contains assembly metadata (name, version, culture, referenced assemblies, security permissions). <a href="https://learn.microsoft.com/en-us/dotnet/standard/assembly/manifest" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Assembly Manifest Documentation">Assembly Manifest</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The compiled CIL code for the classes, structs, enums, interfaces, and delegates defined in the assembly.">Types:</strong> The CIL code for the types defined in the assembly.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Non-executable data, such as images, strings, or other files, embedded within the assembly.">Resources:</strong> Embedded resources like images or strings.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Defines a boundary for type resolution, ensuring that type names are unique within an assembly and correctly referenced.">Scoping:</strong> Defines a boundary for type resolution and versioning.</li> - </ul> - </div> - </div> - </div> - </div> <!-- /.row --> - </div> <!-- /.schema-container --> - - <!-- II. C# LANGUAGE FEATURES --> - <div class="schema-container section-csharp" data-section-id="section-csharp-features" data-section-name="C# Language"> - <h2 class="section-title" id="section-csharp-features-title">C# Language Features</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-overview"> - <div class="card-body"> - <h5><i class="bi bi-code-slash" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="C# Code Icon"></i> C# Language <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="C# is an evolving language, currently up to version 13.">C# 1.0 - 13</span></h5> - <div class="card-content-wrapper"> - <p class="summary">A modern, object-oriented, and type-safe programming language. Key to .NET development, offering powerful features for building diverse applications. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Official C# Guide">C# Guide</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpOverview" aria-expanded="false" aria-controls="collapseCsharpOverview" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about the C# Language"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpOverview"> - <h6>Purpose</h6> - <p>The primary language for developing applications on the .NET platform, designed for productivity, performance, and robustness.</p> - <h6>Core Characteristics</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Supports principles like encapsulation, inheritance, and polymorphism for building modular and reusable software.">Object-Oriented:</strong> Supports encapsulation, inheritance, and polymorphism.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The language enforces that operations are performed on compatible types, preventing many common programming errors at compile-time or runtime.">Type-Safe:</strong> Prevents type errors that could lead to insecure or unstable code.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Designed to facilitate the creation and use of self-contained, reusable software components.">Component-Oriented:</strong> Based on software components with properties, methods, and events.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="All types, including primitive types, inherit from a single root 'object' type, providing consistency.">Unified Type System:</strong> All C# types inherit from a single root `object` type.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Automatic memory management frees developers from manual memory allocation and deallocation.">Garbage Collection:</strong> Automatic memory management simplifies development.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="C# is continuously updated with new features and improvements to enhance developer productivity and program capabilities.">Evolving Language:</strong> Regularly updated with new features to enhance productivity and capabilities (e.g., .NET 9 / C# 13). <a href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-13" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: What's New in C# 13">What's New in C# 13</a></li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-async"> - <div class="card-body"> - <h5><i class="bi bi-lightning" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Asynchronous Operation Icon"></i> Async (async/await) <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with C# 5 and is available in subsequent versions.">C# 5+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Simplifies writing non-blocking code using <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A C# keyword that modifies a method, lambda expression, or anonymous method to indicate it's asynchronous. Such methods can use 'await' to pause execution without blocking the thread.">async</span> and <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A C# keyword used within an async method to pause its execution until an awaited Task completes. While paused, control is returned to the caller, allowing other operations to run.">await</span> keywords, crucial for responsive UIs and scalable services. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/async" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Asynchronous Programming with async/await Overview">Async Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpAsync" aria-expanded="false" aria-controls="collapseCsharpAsync" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about async/await"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpAsync"> - <h6>Purpose</h6> - <p>Manages I/O-bound and CPU-bound asynchronous operations without complex callback structures, improving application performance and responsiveness.</p> - <h6>Key Concepts</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Declares that a method, lambda, or anonymous method is asynchronous and allows the use of the 'await' keyword within it.">`async` Modifier:</strong> Marks a method as asynchronous.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Suspends the execution of an async method until the awaited asynchronous operation (typically a Task) completes.">`await` Operator:</strong> Suspends execution until an awaited `Task` or `Task<T>` completes.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Represent an asynchronous operation. Task<T> represents an operation that returns a value of type T.">`Task` and `Task<T>`:</strong> Represent ongoing asynchronous operations.</li> - <li><strong>Exception Handling:</strong> `try-catch` blocks work seamlessly with async operations.</li> - </ul> - <h6>Use Cases</h6> - <p>Web service calls, database queries, file I/O, long-running computations that shouldn't block the main thread.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-linq"> - <div class="card-body"> - <h5><i class="bi bi-funnel" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Data Query / Filter Icon"></i> LINQ <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with C# 3 and is available in subsequent versions.">C# 3+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Provides powerful, SQL-like query capabilities directly within C# for collections, databases (via EF Core), XML, and other data sources. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/linq/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Language Integrated Query (LINQ) Documentation">LINQ Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpLinq" aria-expanded="false" aria-controls="collapseCsharpLinq" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about LINQ"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpLinq"> - <h6>Purpose</h6> - <p>Offers a consistent model for working with data across various sources and formats, reducing complexity and improving code readability.</p> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="LINQ offers two ways to write queries: a declarative SQL-like syntax and a fluent method-based syntax using extension methods.">Query Syntax & Method Syntax:</strong> Two ways to write LINQ queries.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A set of predefined extension methods (e.g., Where, Select, OrderBy, GroupBy) that form the core of LINQ.">Standard Query Operators:</strong> A rich set of methods like `Where`, `Select`, `OrderBy`, `GroupBy`.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="LINQ queries are often not executed until their results are actually iterated over, allowing for more efficient data processing.">Deferred Execution:</strong> Queries are executed only when results are enumerated.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="LINQ queries are checked by the C# compiler for type errors before runtime.">Type Safety:</strong> Queries are checked at compile time.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Implementations of LINQ that allow querying different data sources (e.g., in-memory objects, SQL databases, XML documents).">Providers:</strong> LINQ to Objects, LINQ to Entities (EF Core), LINQ to XML, etc.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-pattern-matching"> - <div class="card-body"> - <h5><i class="bi bi-grid-3x3-gap" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Pattern Matching Icon"></i> Pattern Matching <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Pattern matching features have been progressively added from C# 7 through C# 13 and beyond.">C# 7-13+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Enhanced control flow based on the "shape" of data using <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="C# expression used for type testing, often combined with pattern matching to declare a new variable of the tested type if the match succeeds.">is</span> expressions and <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Control flow constructs that allow branching based on matching an input expression against various patterns.">switch expressions/statements</span>. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/pattern-matching" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Pattern Matching in C#">Pattern Matching</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpPatternMatching" aria-expanded="false" aria-controls="collapseCsharpPatternMatching" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Pattern Matching"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpPatternMatching"> - <h6>Purpose</h6> - <p>Provides more concise and readable syntax for conditional logic based on data characteristics, type checks, and value comparisons.</p> - <h6>Types of Patterns</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Checks if an expression's runtime type matches a given type, and can cast it to that type.">Type Pattern:</strong> Checks if an expression can be converted to a specified type (`obj is string s`).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Matches an expression based on the values of its properties or fields.">Property Pattern:</strong> Matches an expression against properties of an object (`obj is { Length: > 0 }`).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Compares an input value with a constant using relational operators (e.g., <, >, <=, >=).">Relational Patterns:</strong> Compare values (`> 10`, `< 50`).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Combines other patterns using logical operators like 'and', 'or', and 'not'.">Logical Patterns:</strong> Combine patterns (`and`, `or`, `not`).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Matches sequences of elements in arrays or lists, allowing checks for length and specific element values or patterns.">List Patterns:</strong> Match elements in arrays or lists (`[1, 2, ..]`). (C# 11+)</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A concise, expression-based form of the switch statement that returns a value from the matched arm.">Switch Expressions:</strong> Concise switch-like construct returning a value.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-records"> - <div class="card-body"> - <h5><i class="bi bi-journal-bookmark" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Record Type Icon"></i> Records <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with C# 9 and is available in subsequent versions.">C# 9+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Concise syntax for creating immutable reference types (<span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A reference type in C# that provides concise syntax for creating immutable data-centric objects with value-based equality.">record class</span>) or value types (<span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A value type in C# that provides concise syntax for creating data-centric objects, often immutable, with value-based equality.">record struct</span>) ideal for data transfer objects (DTOs). <a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: C# Records Documentation">Records Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpRecords" aria-expanded="false" aria-controls="collapseCsharpRecords" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about C# Records"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpRecords"> - <h6>Purpose</h6> - <p>Simplify the creation of data-centric types, promote immutability, and provide built-in functionality for value-based equality and display.</p> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Record properties are typically 'init-only', meaning they can only be set during object initialization.">Immutability by Default:</strong> Properties are typically init-only.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Two record instances are considered equal if all their property values are equal, rather than comparing their memory references.">Value-based Equality:</strong> Instances are compared based on their data, not reference.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Allow creating a new record instance by copying an existing one and modifying specified properties (non-destructive mutation).">`with` Expressions:</strong> Create copies with modified properties (non-destructive mutation).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Records automatically provide a 'ToString()' method that displays the type name and public property values.">Built-in Formatting:</strong> Sensible `ToString()` overrides.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Allows easily extracting property values from a record instance into separate variables.">Deconstruction:</strong> Easily extract property values.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A concise syntax where properties are defined via constructor parameters, and corresponding deconstructor and init-only properties are auto-generated.">Positional Records:</strong> Concise syntax for defining properties via constructor parameters.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-csharp" id="card-csharp-nullable-types"> - <div class="card-body"> - <h5><i class="bi bi-question-circle" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Nullable Reference Type Icon"></i> Nullable Ref Types <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with C# 8 and is available in subsequent versions.">C# 8+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Helps prevent <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A common runtime error that occurs when trying to access a member of a variable that currently holds a null reference.">NullReferenceException</span> at runtime by distinguishing between nullable and non-nullable reference types through compiler analysis. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Nullable Reference Types Documentation">Nullable Types</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpNullableTypes" aria-expanded="false" aria-controls="collapseCsharpNullableTypes" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Nullable Reference Types"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCsharpNullableTypes"> - <h6>Purpose</h6> - <p>Improves code safety by making the intent regarding nullability explicit, allowing the compiler to issue warnings about potential null dereferences.</p> - <h6>Mechanism</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Nullable reference types are enabled project-wide or per-file, allowing gradual adoption.">Opt-in Feature:</strong> Enabled via project settings (`<Nullable>enable</Nullable>`) or `#nullable` directives.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="'string?' explicitly declares that a variable of type string can hold a null value, while 'string' implies it should not (by default, when the feature is enabled).">`string?` vs `string`:</strong> `string?` indicates a reference type that can be null; `string` indicates it should not be null.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The C# compiler analyzes code and issues warnings if a non-nullable reference type might be assigned null, or if a nullable type is dereferenced without a null check.">Compiler Warnings:</strong> Alerts for potential null assignments or dereferences.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="An operator used to suppress a nullable warning when the developer is certain that an expression will not be null at that point, even if the compiler cannot prove it.">Null-Forgiving Operator (`!`):</strong> Suppresses warnings when a developer asserts an expression is not null.</li> - </ul> - <h6>Impact</h6> - <p>Encourages more robust code by forcing developers to consider nullability throughout their codebase.</p> - </div> - </div> - </div> - </div> <!-- /.row --> - </div> <!-- /.schema-container --> - - - <!-- III. APPLICATION MODELS & FRAMEWORKS --> - <div class="schema-container section-web" data-section-id="section-app-models" data-section-name="App Models"> - <h2 class="section-title" id="section-app-models-title">Application Models & Frameworks</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-web" id="card-aspnetcore"> - <div class="card-body"> - <h5><i class="bi bi-globe2" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Web Application Icon"></i> ASP.NET Core <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Modern, cross-platform framework for building <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Applications accessed via a web browser, APIs (Application Programming Interfaces) for service communication, and small, independent microservices.">web apps, APIs, and microservices</span>. High-performance and modular. <a href="https://learn.microsoft.com/en-us/aspnet/core/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Documentation">ASP.NET Core Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseAspnetcore" aria-expanded="false" aria-controls="collapseAspnetcore" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about ASP.NET Core"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseAspnetcore"> - <h6>Key Sub-Frameworks/Patterns</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A streamlined approach introduced in .NET 6 for creating HTTP APIs with minimal code and configuration.">Minimal APIs <span class="version-tag">.NET 6+</span>:</strong> Lightweight syntax for creating HTTP APIs. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Minimal APIs Documentation">Minimal APIs Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A design pattern separating application concerns into Model (data), View (UI), and Controller (request handling).">MVC (Model-View-Controller):</strong> Pattern for building web UIs and APIs. <a href="https://learn.microsoft.com/en-us/aspnet/core/mvc/overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core MVC Documentation">MVC Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A page-focused framework for building dynamic web UIs, where each page has its own logic and UI markup.">Razor Pages:</strong> Page-centric model for building web UIs. <a href="https://learn.microsoft.com/en-us/aspnet/core/razor-pages/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Razor Pages Documentation">Razor Pages Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A framework for building interactive client-side web UIs with C# instead of JavaScript, supporting server-side, client-side (WebAssembly), and hybrid execution models.">Blazor:</strong> Build interactive client-side web UIs with C#. (Server, WebAssembly, Hybrid). <a href="https://learn.microsoft.com/en-us/aspnet/core/blazor/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Blazor Documentation">Blazor Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A comprehensive framework within ASP.NET Core for creating RESTful HTTP services that expose data and functionality.">Web APIs:</strong> Robust framework for building RESTful HTTP services. <a href="https://learn.microsoft.com/en-us/aspnet/core/web-api/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Web API Documentation">Web API Docs</a></li> - </ul> - <h6>Core Features</h6> - <p>Middleware pipeline, routing, dependency injection, configuration, logging, Kestrel web server. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/kestrel" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Kestrel Web Server Documentation">Kestrel Docs</a></p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-crossplatform" id="card-maui"> - <div class="card-body"> - <h5><i class="bi bi-phone-vibrate" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Mobile/Desktop App Icon"></i> .NET MAUI <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this framework was introduced with .NET 6 and is available in subsequent versions.">.NET 6+</span></h5> - <div class="card-content-wrapper"> - <p class="summary"><span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title=".NET Multi-platform App UI: A cross-platform framework for creating native mobile and desktop apps with C# and XAML from a single shared codebase.">Multi-platform App UI</span>. Build native mobile and desktop apps from a single C# codebase for iOS, Android, Windows, and macOS. <a href="https://learn.microsoft.com/en-us/dotnet/maui/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET MAUI Documentation">.NET MAUI Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMaui" aria-expanded="false" aria-controls="collapseMaui" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET MAUI"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseMaui"> - <h6>Purpose</h6> - <p>Evolve Xamarin.Forms to provide a single project structure and unified API for creating native UIs across multiple platforms.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A unified project system that simplifies managing code, resources, and platform-specific configurations for all targeted platforms.">Single Project:</strong> Manage code, resources, and platform-specific assets in one project. <a href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/single-project" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET MAUI Single Project">Single Project</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET MAUI renders user interfaces using the native control sets of each target platform, ensuring an authentic user experience.">Native UI:</strong> Renders native controls on each platform for authentic look and feel.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="User interfaces can be defined using XAML (a declarative markup language) or programmatically using C#.">XAML and C#:</strong> Define UI using XAML markup or C# code-behind. <a href="https://learn.microsoft.com/en-us/dotnet/maui/xaml/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: XAML in .NET MAUI">XAML Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET MAUI provides cross-platform abstractions for common device features (like camera, GPS) and also allows direct invocation of native platform APIs.">Access to Native APIs:</strong> Provides abstractions for common device features and allows direct platform API access. <a href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Platform Integration in .NET MAUI">Native APIs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A development feature that allows immediate reflection of XAML and C# code changes in the running application without needing a full rebuild and redeploy.">Hot Reload:</strong> See XAML and C# code changes reflected live in running app. <a href="https://learn.microsoft.com/en-us/dotnet/maui/xaml/hot-reload" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: XAML Hot Reload in .NET MAUI">Hot Reload</a></li> - </ul> - <h6>Targets</h6> - <p>iOS, Android, Windows (WinUI 3), macOS (via Mac Catalyst).</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-crossplatform" id="card-wpf"> - <div class="card-body"> - <h5><i class="bi bi-window-desktop" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Windows Desktop App Icon"></i> WPF <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Initially part of .NET Framework 3.0, WPF is also supported on modern .NET (Core) 3.0 and later for Windows desktop development.">.NET Fx 3.0+ | .NET Core 3.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary"><span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A UI framework for building Windows desktop applications with rich graphical capabilities, XAML-based UI design, data binding, and multimedia integration.">Windows Presentation Foundation</span>. A UI framework for creating desktop client applications on Windows with rich user interfaces. <a href="https://learn.microsoft.com/en-us/dotnet/desktop/wpf/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: WPF Documentation">WPF Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWpf" aria-expanded="false" aria-controls="collapseWpf" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about WPF"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseWpf"> - <h6>Purpose</h6> - <p>Build visually rich, interactive desktop applications for Windows.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Extensible Application Markup Language: A declarative XML-based language used for defining UI elements, data binding, and styling in WPF.">XAML:</strong> Declarative markup language for UI definition.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A powerful mechanism in WPF that creates a connection between the application's UI and its data (business logic), allowing automatic synchronization.">Data Binding:</strong> Powerful mechanism for synchronizing UI and data.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Features that allow extensive customization of the appearance, layout, and behavior of UI controls.">Styles and Templates:</strong> Customize appearance and behavior of controls.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="WPF provides comprehensive support for integrating 2D and 3D graphics, animations, audio, and video into applications.">Graphics and Multimedia:</strong> Rich support for 2D/3D graphics, animation, audio, and video.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-crossplatform" id="card-winforms"> - <div class="card-body"> - <h5><i class="bi bi-app-indicator" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Windows Forms App Icon"></i> Windows Forms <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Initially part of .NET Framework 1.0, Windows Forms is also supported on modern .NET (Core) 3.0 and later for Windows desktop development.">.NET Fx 1.0+ | .NET Core 3.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">A framework for creating Windows desktop applications with a rich set of UI controls and a visual designer. <a href="https://learn.microsoft.com/en-us/dotnet/desktop/winforms/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Windows Forms Documentation">Windows Forms Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWinforms" aria-expanded="false" aria-controls="collapseWinforms" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Windows Forms"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseWinforms"> - <h6>Purpose</h6> - <p>Rapid application development (RAD) for Windows desktop applications.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A feature in IDEs like Visual Studio that allows developers to design UIs by dragging and dropping controls onto a form.">Visual Designer:</strong> Drag-and-drop interface for UI construction.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A comprehensive library of standard UI elements (buttons, text boxes, lists, etc.) for building application interfaces.">Rich Control Set:</strong> Wide variety of pre-built UI controls.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A programming paradigm where the flow of the program is determined by events such as user actions (mouse clicks, key presses) or system messages.">Event-Driven Programming:</strong> Responds to user interactions and system events.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Windows Forms has a long history, resulting in a stable platform with extensive documentation and community resources.">Mature Technology:</strong> Long history and extensive community support.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-general" id="card-console"> - <div class="card-body"> - <h5><i class="bi bi-terminal" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Console/Terminal Icon"></i> Console Applications <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Available since the original .NET Framework 1.0 and fully supported in all .NET Core and modern .NET versions.">.NET Fx 1.0+ | .NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Command-line applications that run in a text-based console window, ideal for utilities and background tasks. <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/top-level-templates" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Console Application Documentation (.NET Top-Level Templates)">Console App Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConsole" aria-expanded="false" aria-controls="collapseConsole" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Console Applications"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseConsole"> - <h6>Purpose</h6> - <p>Build lightweight tools, scripts, and backend processes that don't require a graphical user interface.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET console applications can be built and run on Windows, Linux, and macOS.">Cross-Platform:</strong> Can run on Windows, Linux, and macOS.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Console applications can receive input parameters from the command line when they are launched.">Command-Line Arguments:</strong> Easily parse input parameters.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Refers to the standard input (keyboard), standard output (screen display), and standard error streams used for interaction.">Standard I/O:</strong> Interact via console input, output, and error streams.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A C# 9+ feature that simplifies the Program.cs file by allowing code to exist outside of a Main method and class structure for simple programs.">Top-level statements <span class="version-tag">C# 9+</span>:</strong> Simplified syntax for `Program.cs` in modern C#.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-web" id="card-worker-services"> - <div class="card-body"> - <h5><i class="bi bi-hdd-stack" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Background Service Icon"></i> Worker Services <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this template and hosting model were introduced with .NET Core 3.0 and are available in subsequent versions.">.NET Core 3.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Framework for creating long-running background services, message queue processors, or other non-UI tasks. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Worker Services and Hosted Services Documentation">Worker Services Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWorkerServices" aria-expanded="false" aria-controls="collapseWorkerServices" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Worker Services"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseWorkerServices"> - <h6>Purpose</h6> - <p>Ideal for microservices, scheduled tasks, and processing data from queues or other sources without direct user interaction.</p> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The IHostedService interface provides a way to define and manage long-running background tasks within a .NET application.">Hosted Services (`IHostedService`):</strong> Core abstraction for background tasks.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET's generic host provides standardized functionalities like dependency injection, configuration, and logging for non-HTTP applications.">Generic Host:</strong> Leverages .NET's generic host for logging, configuration, DI.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Worker services support mechanisms for cooperative cancellation, allowing them to clean up resources and shut down properly when requested.">Graceful Shutdown:</strong> Supports cooperative cancellation.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Worker services can be deployed as Windows Services or Linux daemons, enabling them to run on various operating systems.">Cross-Platform:</strong> Can run as services on Windows or daemons on Linux.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-web" id="card-cloud-native"> <!-- Updated from card-cloud-native to card-web for category consistency --> - <div class="card-body"> - <h5><i class="bi bi-cloud-arrow-up" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Cloud Native Application Icon"></i> .NET Aspire <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this stack was introduced with .NET 8 and is designed for building cloud-native applications.">.NET 8+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">An opinionated, cloud-ready stack for building observable, production-ready, distributed applications. <a href="https://learn.microsoft.com/en-us/dotnet/aspire/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Aspire Documentation">.NET Aspire Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCloudNative" aria-expanded="false" aria-controls="collapseCloudNative" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET Aspire"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCloudNative"> - <h6>Purpose</h6> - <p>Simplifies building and running cloud-native applications by providing tools and patterns for service discovery, telemetry, resilience, and configuration.</p> - <h6>Key Components</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A project in .NET Aspire that defines and orchestrates the various services, databases, and other resources that make up a distributed application.">App Host Project:</strong> Orchestrates application resources and services.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Pre-configured settings and extensions in .NET Aspire for common concerns like telemetry (logging, metrics, tracing) and resilience patterns.">Service Defaults:</strong> Common configurations for telemetry, resilience, etc.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A web-based interface provided by .NET Aspire for local development, allowing developers to view logs, traces, metrics, and environment configurations for their application.">Dashboard:</strong> Local developer dashboard for observing logs, traces, and metrics.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Curated NuGet packages provided by .NET Aspire that simplify integration with common backing services like Redis, PostgreSQL, RabbitMQ, etc.">Components:</strong> NuGet packages for integrating with various services (e.g., Redis, PostgreSQL).</li> - </ul> - </div> - </div> - </div> - </div> <!-- /.row --> - </div> <!-- /.schema-container --> - - - <!-- IV. KEY LIBRARIES & TECHNOLOGIES --> - <div class="schema-container section-data" data-section-id="section-key-libs" data-section-name="Libraries & Tech"> - <h2 class="section-title" id="section-key-libs-title">Key Libraries & Technologies</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-data" id="card-efcore"> - <div class="card-body"> - <h5><i class="bi bi-server" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Database / ORM Icon"></i> Entity Framework Core <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Indicates this ORM was introduced with .NET Core 1.0 and is the modern data access technology for .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Modern, cross-platform <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Object-Relational Mapper: A programming technique for converting data between incompatible type systems using object-oriented programming languages.">Object-Relational Mapper (ORM)</span>. Enables developers to work with databases using .NET objects. <a href="https://learn.microsoft.com/en-us/ef/core/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Entity Framework Core Documentation">EF Core Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseEfcore" aria-expanded="false" aria-controls="collapseEfcore" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Entity Framework Core"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseEfcore"> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Allows developers to write database queries using LINQ syntax directly in C# or VB.NET, which EF Core then translates into SQL.">LINQ to Entities:</strong> Query databases using Language Integrated Query. <a href="https://learn.microsoft.com/en-us/ef/core/querying/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Querying Data with EF Core">Querying Data</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A feature that allows developers to evolve the database schema over time as the application's data model changes, using code-based definitions.">Migrations:</strong> Manage database schema changes over time. <a href="https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: EF Core Migrations Documentation">Migrations Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="EF Core supports a variety of database systems through provider libraries, enabling it to work with different database backends.">Database Providers:</strong> Supports SQL Server, SQLite, PostgreSQL, MySQL, Cosmos DB, and more. <a href="https://learn.microsoft.com/en-us/ef/core/providers/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: EF Core Database Providers">Providers Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The process by which EF Core keeps track of the state of entities (e.g., added, modified, deleted) to generate appropriate database commands.">Change Tracking:</strong> Automatically tracks changes to entities for updates. <a href="https://learn.microsoft.com/en-us/ef/core/change-tracking/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: EF Core Change Tracking">Change Tracking Docs</a></li> - </ul> - <h6>Use Cases</h6> - <p>Simplifies data access logic in applications requiring interaction with relational or document databases.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-data" id="card-dapper"> - <div class="card-body"> - <h5><i class="bi bi-braces-asterisk" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Micro ORM / SQL Helper Icon"></i> Dapper</h5> - <div class="card-content-wrapper"> - <p class="summary">A simple object mapper for .NET, focusing on performance. Often used as a "micro-ORM". <a href="https://github.com/DapperLib/Dapper" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Dapper GitHub Repository">Dapper GitHub</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDapper" aria-expanded="false" aria-controls="collapseDapper" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Dapper"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseDapper"> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Dapper is known for its high speed in executing queries and mapping results to objects, due to its lightweight nature.">Performance:</strong> Extremely fast due to its minimal overhead.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Dapper extends the IDbConnection interface, making it easy to integrate with existing ADO.NET database connection code.">Extension Methods for IDbConnection:</strong> Easy to use with existing ADO.NET connections.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Dapper is designed for developers who prefer to write their own SQL queries rather than relying on an ORM to generate them.">Raw SQL:</strong> Primarily works with raw SQL queries.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Dapper efficiently maps the results of SQL queries to Plain Old CLR Objects (simple classes).">POCO Mapping:</strong> Maps query results to Plain Old CLR Objects.</li> - </ul> - <h6>Use Cases</h6> - <p>Scenarios where high performance data retrieval is critical, and developers are comfortable writing SQL.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-networking"> - <div class="card-body"> - <h5><i class="bi bi-hdd-network" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Network Communication Icon"></i> Networking (HTTP, gRPC) <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Core networking capabilities have always been part of .NET, with modern enhancements like HttpClientFactory and gRPC support in .NET Core.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">.NET provides rich libraries for network communication, including <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A modern .NET class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.">HttpClient</span> for HTTP requests and support for <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="gRPC (Remote Procedure Call): A high-performance, open-source universal RPC framework.">gRPC</span>. <a href="https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Networking Overview">Networking Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNetworking" aria-expanded="false" aria-controls="collapseNetworking" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Networking in .NET"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseNetworking"> - <h6>Key Libraries/Technologies</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Core classes in System.Net.Http for making HTTP requests. IHttpClientFactory (from .NET Core 2.1+) is recommended for managing HttpClient instances.">`HttpClient` & `HttpRequestMessage`:</strong> For making HTTP requests and handling responses. (Consider `IHttpClientFactory` <span class="version-tag">.NET Core 2.1+</span>) <a href="https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: HttpClient Class Documentation">HttpClient Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A modern, high-performance RPC framework that can run in any environment. .NET provides first-class support for building gRPC services and clients.">gRPC for .NET <span class="version-tag">.NET Core 3.0+</span>:</strong> High-performance, cross-platform RPC framework. <a href="https://learn.microsoft.com/en-us/aspnet/core/grpc/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: gRPC for .NET Documentation">gRPC for .NET Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Provides classes for network access using TCP/IP sockets, enabling lower-level network communication.">`System.Net.Sockets`:</strong> Low-level socket programming. <a href="https://learn.microsoft.com/en-us/dotnet/api/system.net.sockets" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: System.Net.Sockets Namespace">Sockets Docs</a></li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-security-libs"> - <div class="card-body"> - <h5><i class="bi bi-shield-lock" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Security Icon"></i> Security Libraries <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Core security features are fundamental to .NET, with continuous enhancements in .NET Core and modern .NET.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Built-in libraries for cryptography, authentication, authorization, and data protection. <a href="https://learn.microsoft.com/en-us/dotnet/standard/security/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Security Documentation">.NET Security Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSecurityLibs" aria-expanded="false" aria-controls="collapseSecurityLibs" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET Security Libraries"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseSecurityLibs"> - <h6>Key Areas</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET provides APIs for common cryptographic operations like creating hashes, encrypting/decrypting data, and managing digital signatures.">Cryptography:</strong> Hashing, encryption, digital signatures. <a href="https://learn.microsoft.com/en-us/dotnet/standard/security/cryptography-model" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Cryptography Model">Cryptography Model</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A framework in ASP.NET Core for managing user identities, including registration, login, roles, and claims-based authorization.">ASP.NET Core Identity:</strong> User authentication and authorization. <a href="https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Identity">ASP.NET Core Identity</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="APIs in .NET for protecting sensitive data, such as connection strings or API keys, often used for data encryption at rest.">Data Protection APIs:</strong> For protecting data at rest. <a href="https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/introduction" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Data Protection">Data Protection</a></li> - <li><strong>Secure Coding Guidelines:</strong> Practices to avoid common vulnerabilities.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-configuration"> - <div class="card-body"> - <h5><i class="bi bi-gear" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Configuration Settings Icon"></i> Configuration <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="The flexible configuration system was introduced with .NET Core 1.0 and is a key part of modern .NET applications.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Flexible system for managing application settings from various sources (JSON, XML, environment variables, command-line). <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Configuration Documentation">Configuration Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConfiguration" aria-expanded="false" aria-controls="collapseConfiguration" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET Configuration"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseConfiguration"> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET configuration supports loading settings from multiple sources, allowing for flexible setup in different environments.">Providers:</strong> JSON, XML, INI, environment variables, command-line arguments, Azure Key Vault, etc.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The Options pattern allows binding configuration settings to strongly-typed Plain Old CLR Objects (POCOs), making them easier and safer to consume in code.">Strongly-typed Configuration (Options Pattern):</strong> Bind configuration to POCOs. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Options Pattern in ASP.NET Core">Options Pattern</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Configuration values from different providers are combined, with later providers overriding values from earlier ones, forming a single hierarchical view of settings.">Hierarchical Configuration:</strong> Values from different providers are layered.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-logging"> - <div class="card-body"> - <h5><i class="bi bi-journal-text" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Logging / Diagnostics Icon"></i> Logging <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="The logging API was introduced with .NET Core 1.0, providing a standard way to log application events.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Built-in logging API with providers for console, debug output, EventSource, EventLog, and third-party systems. <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/logging" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Logging Documentation">Logging Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseLogging" aria-expanded="false" aria-controls="collapseLogging" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET Logging"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseLogging"> - <h6>Key Features</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The primary interface used for writing log messages in .NET applications.">`ILogger` Interface:</strong> Core abstraction for logging.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET logging supports various providers that direct log output to different destinations (e.g., console, files, Azure Application Insights).">Logging Providers:</strong> Console, Debug, EventSource, EventLog, ApplicationInsights, Serilog, NLog, etc.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Categorize log messages by severity (e.g., Information, Warning, Error) to control verbosity and filter output.">Log Levels:</strong> Trace, Debug, Information, Warning, Error, Critical.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Logging messages with key-value pairs or structured data, rather than just plain text, to facilitate easier querying and analysis.">Structured Logging:</strong> Log messages with semantic content.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-di"> - <div class="card-body"> - <h5><i class="bi bi-diagram-3" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Dependency Injection Icon"></i> Dependency Injection (DI) <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Dependency Injection support was built into .NET Core 1.0 and is integral to modern .NET development.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">First-class support for DI, promoting loose coupling and testability. Manages object lifecycles and dependencies. <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Dependency Injection Documentation">DI Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDi" aria-expanded="false" aria-controls="collapseDi" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Dependency Injection"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseDi"> - <h6>Key Concepts</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Define how long an injected service instance should live: Singleton (one instance for the app), Scoped (one instance per request/scope), Transient (new instance each time requested).">Service Lifetimes:</strong> Singleton, Scoped, Transient.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The process of adding service types and their implementations to the DI container (IServiceCollection).">Service Registration:</strong> Adding services to the `IServiceCollection`.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The DI container provides instances of registered services, typically through constructor injection or by resolving from IServiceProvider.">Service Resolution:</strong> Injecting services via constructors or `IServiceProvider`.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Dependency Injection is a standard practice in modern .NET, especially in frameworks like ASP.NET Core.">Conventions:</strong> Widely used in ASP.NET Core and other frameworks.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-libraries" id="card-testing"> - <div class="card-body"> - <h5><i class="bi bi-clipboard2-check" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Testing & QA Icon"></i> Testing <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title=".NET Core 1.0 provided foundational support for testing, which has expanded with frameworks and tools.">.NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Support for unit testing, integration testing, and web application testing using frameworks like MSTest, NUnit, xUnit. <a href="https://learn.microsoft.com/en-us/dotnet/core/testing/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Testing Documentation">.NET Testing Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTesting" aria-expanded="false" aria-controls="collapseTesting" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about .NET Testing"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseTesting"> - <h6>Frameworks & Tools</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Popular frameworks for writing and running automated tests for individual units of code (methods, classes).">Unit Testing:</strong> MSTest, NUnit, xUnit.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="WebApplicationFactory (from .NET Core 2.1+) helps create an in-memory test server for ASP.NET Core applications, enabling testing of multiple components together.">Integration Testing:</strong> `WebApplicationFactory` for ASP.NET Core <span class="version-tag">.NET Core 2.1+</span>. <a href="https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Integration Testing">Integration Testing</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Libraries used to create mock objects (test doubles) that simulate the behavior of real dependencies, isolating the code under test.">Mocking:</strong> Libraries like Moq, NSubstitute.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Tools for discovering and executing tests, such as the 'dotnet test' command-line utility and the Test Explorer in Visual Studio.">Test Runners:</strong> `dotnet test` CLI, Visual Studio Test Explorer.</li> - </ul> - </div> - </div> - </div> - </div> <!-- /.row --> - </div> <!-- /.schema-container --> - - - <!-- V. TOOLING & ECOSYSTEM --> - <div class="schema-container section-tooling" data-section-id="section-tooling-eco" data-section-name="Tooling"> - <h2 class="section-title" id="section-tooling-eco-title">Tooling & Ecosystem</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-tooling" id="card-ides"> - <div class="card-body"> - <h5><i class="bi bi-laptop" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Development Environment Icon"></i> IDEs & Editors</h5> - <div class="card-content-wrapper"> - <p class="summary">Integrated Development Environments and code editors for .NET. <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Microsoft's flagship Integrated Development Environment for .NET and other languages, offering comprehensive tools for coding, debugging, testing, and deployment.">Visual Studio</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A lightweight, cross-platform source code editor developed by Microsoft, highly extensible with excellent .NET support via extensions like C# Dev Kit.">VS Code</span>, and <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A cross-platform .NET IDE from JetBrains, known for its intelligent code analysis, refactoring capabilities, and performance.">JetBrains Rider</span> are prominent. </p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseIdes" aria-expanded="false" aria-controls="collapseIdes" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about IDEs & Editors"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseIdes"> - <h6>Popular Choices</h6> - <ul> - <li><strong>Visual Studio:</strong> Full-featured IDE for Windows, also available for Mac (with MAUI/Xamarin focus). Extensive debugging, profiling, and project management. <a href="https://visualstudio.microsoft.com/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Visual Studio Official Page">Visual Studio</a></li> - <li><strong>Visual Studio Code (VS Code):</strong> Lightweight, extensible code editor with excellent .NET support via C# Dev Kit and other extensions. Cross-platform. <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Visual Studio Code Official Page">VS Code</a></li> - <li><strong>JetBrains Rider:</strong> Cross-platform .NET IDE known for its powerful code analysis, refactoring tools, and performance. <a href="https://www.jetbrains.com/rider/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: JetBrains Rider Official Page">Rider</a></li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-tooling" id="card-nuget"> - <div class="card-body"> - <h5><i class="bi bi-box" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Package Manager Icon"></i> NuGet</h5> - <div class="card-content-wrapper"> - <p class="summary">The package manager for .NET. Allows developers to create, share, and consume reusable libraries (packages). <a href="https://learn.microsoft.com/en-us/nuget/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: NuGet Documentation">NuGet Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNuget" aria-expanded="false" aria-controls="collapseNuget" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about NuGet"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseNuget"> - <h6>Key Aspects</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="The primary public repository for NuGet packages, hosting a vast collection of open-source and commercial libraries.">`nuget.org`:</strong> The central public repository for NuGet packages. <a href="https://www.nuget.org/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: nuget.org Official Site">nuget.org</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="NuGet packages can be managed (added, updated, removed) using the .NET CLI, Visual Studio's UI, or the Package Manager Console.">Package Management:</strong> Via .NET CLI (`dotnet add package`), Visual Studio UI, or Package Manager Console.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="NuGet provides tools and specifications for developers to package their own libraries into shareable .nupkg files.">Package Creation:</strong> Tools for packaging libraries for distribution.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="NuGet automatically handles dependencies between packages, ensuring that all required libraries (and their versions) are correctly installed.">Dependency Resolution:</strong> Manages transitive dependencies.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-tooling" id="card-source-control"> - <div class="card-body"> - <h5><i class="bi bi-git" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Git Version Control Icon"></i> Source Control</h5> - <div class="card-content-wrapper"> - <p class="summary"><span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A distributed version control system widely used for tracking changes in source code during software development.">Git</span> is the de facto standard for version control. Platforms like <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A web-based hosting service for version control using Git, popular for open-source projects and private repositories, offering collaboration features.">GitHub</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A service within Azure DevOps that provides Git repositories and Team Foundation Version Control (TFVC) for source code management.">Azure Repos</span>, and GitLab provide hosting and collaboration. <a href="https://git-scm.com/doc" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Git Official Documentation">Git Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSourceControl" aria-expanded="false" aria-controls="collapseSourceControl" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Source Control"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseSourceControl"> - <h6>Key Platforms</h6> - <ul> - <li><strong>GitHub:</strong> Popular for open-source and private projects. <a href="https://docs.github.com/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: GitHub Documentation">GitHub Docs</a></li> - <li><strong>Azure Repos:</strong> Part of Azure DevOps, offers Git repositories. <a href="https://learn.microsoft.com/en-us/azure/devops/repos/get-started/what-is-repos" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Azure Repos Documentation">Azure Repos</a></li> - </ul> - <p>Effective branching strategies (e.g., GitFlow, GitHub Flow) and commit practices are crucial.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-tooling" id="card-ci-cd"> - <div class="card-body"> - <h5><i class="bi bi-rocket-takeoff" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="CI/CD Pipeline Icon"></i> Build & CI/CD</h5> - <div class="card-content-wrapper"> - <p class="summary">Automated build, test, and deployment pipelines using tools like <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="An automation platform integrated with GitHub for building, testing, and deploying code directly from repositories.">GitHub Actions</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A service in Azure DevOps that enables continuous integration and continuous delivery (CI/CD) for applications.">Azure Pipelines</span>, Jenkins. <a href="https://learn.microsoft.com/en-us/dotnet/devops/get-started" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET DevOps Get Started Guide">.NET DevOps</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCiCd" aria-expanded="false" aria-controls="collapseCiCd" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Build & CI/CD"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseCiCd"> - <h6>Popular Tools</h6> - <ul> - <li><strong>GitHub Actions:</strong> Automate workflows directly within GitHub. <a href="https://docs.github.com/en/actions" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: GitHub Actions Documentation">GitHub Actions Docs</a></li> - <li><strong>Azure Pipelines:</strong> CI/CD service within Azure DevOps. <a href="https://learn.microsoft.com/en-us/azure/devops/pipelines/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Azure Pipelines Documentation">Azure Pipelines Docs</a></li> - </ul> - <p data-bs-toggle="tooltip" data-bs-placement="top" title="MSBuild (Microsoft Build Engine) is the build platform for .NET and Visual Studio, responsible for compiling code and packaging applications.">MSBuild is the underlying build engine for .NET projects.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-tooling" id="card-diagnostics"> - <div class="card-body"> - <h5><i class="bi bi-activity" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Performance Monitoring Icon"></i> Performance & Diagnostics <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Cross-platform CLI diagnostic tools became prominent with .NET Core 3.0 and later.">.NET Core 3.0+ (CLI Tools)</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Tools and APIs for profiling, debugging, and monitoring .NET applications. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Diagnostics Overview">Diagnostics Overview</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDiagnostics" aria-expanded="false" aria-controls="collapseDiagnostics" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Performance & Diagnostics"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseDiagnostics"> - <h6>Key Tools & Techniques</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Integrated tools in Visual Studio for analyzing application performance, including CPU usage, memory allocation, and event tracing.">Visual Studio Profiler:</strong> CPU usage, memory allocation, performance traces. <a href="https://learn.microsoft.com/en-us/visualstudio/profiling/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Visual Studio Profiling Tools">VS Profiler</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A suite of command-line tools for .NET diagnostics, including dotnet-trace for collecting traces, dotnet-counters for monitoring performance counters, and dotnet-dump for collecting and analyzing memory dumps.">`dotnet-trace`, `dotnet-counters`, `dotnet-dump`:</strong> Cross-platform CLI diagnostic tools. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/tools-overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET CLI Diagnostic Tools Overview">CLI Tools</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Powerful debugging environments in Visual Studio and VS Code for inspecting code execution, variables, and call stacks.">Debugging:</strong> Visual Studio Debugger, VS Code Debugger.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="An Application Performance Management (APM) service in Azure for monitoring live web applications, detecting issues, diagnosing crashes, and tracking usage.">Application Insights:</strong> APM service for monitoring live applications. <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Azure Application Insights Overview">App Insights</a></li> - </ul> - </div> - </div> - </div> + <!-- /.row --> + </div> + <!-- /.schema-container --> + <!-- II. C# LANGUAGE FEATURES --> + <div class="schema-container section-csharp" data-section-id="section-csharp-features" data-section-name="C# Language"> + <h2 class="section-title" id="section-csharp-features-title"> + C# Language Features + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-overview"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-code-slash" data-bs-placement="top" data-bs-toggle="tooltip" title="C# Code Icon"> + </i> + C# Language + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="C# is an evolving language, currently up to version 13."> + C# 1.0 - 13 + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + A modern, object-oriented, and type-safe programming language. Key to .NET development, offering powerful features for building diverse applications. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/" rel="noopener noreferrer" target="_blank" title="External link: Official C# Guide"> + C# Guide + </a> + </p> + <button aria-controls="collapseCsharpOverview" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpOverview" data-bs-toggle="tooltip" title="Show/hide more details about the C# Language" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpOverview"> + <h6> + Purpose + </h6> + <p> + The primary language for developing applications on the .NET platform, designed for productivity, performance, and robustness. + </p> + <h6> + Core Characteristics + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Supports principles like encapsulation, inheritance, and polymorphism for building modular and reusable software."> + Object-Oriented: + </strong> + Supports encapsulation, inheritance, and polymorphism. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The language enforces that operations are performed on compatible types, preventing many common programming errors at compile-time or runtime."> + Type-Safe: + </strong> + Prevents type errors that could lead to insecure or unstable code. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Designed to facilitate the creation and use of self-contained, reusable software components."> + Component-Oriented: + </strong> + Based on software components with properties, methods, and events. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="All types, including primitive types, inherit from a single root 'object' type, providing consistency."> + Unified Type System: + </strong> + All C# types inherit from a single root `object` type. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Automatic memory management frees developers from manual memory allocation and deallocation."> + Garbage Collection: + </strong> + Automatic memory management simplifies development. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="C# is continuously updated with new features and improvements to enhance developer productivity and program capabilities."> + Evolving Language: + </strong> + Regularly updated with new features to enhance productivity and capabilities (e.g., .NET 9 / C# 13). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-13" rel="noopener noreferrer" target="_blank" title="External link: What's New in C# 13"> + What's New in C# 13 + </a> + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-async"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-lightning" data-bs-placement="top" data-bs-toggle="tooltip" title="Asynchronous Operation Icon"> + </i> + Async (async/await) + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with C# 5 and is available in subsequent versions."> + C# 5+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Simplifies writing non-blocking code using + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A C# keyword that modifies a method, lambda expression, or anonymous method to indicate it's asynchronous. Such methods can use 'await' to pause execution without blocking the thread."> + async + </span> + and + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A C# keyword used within an async method to pause its execution until an awaited Task completes. While paused, control is returned to the caller, allowing other operations to run."> + await + </span> + keywords, crucial for responsive UIs and scalable services. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/async" rel="noopener noreferrer" target="_blank" title="External link: Asynchronous Programming with async/await Overview"> + Async Overview + </a> + </p> + <button aria-controls="collapseCsharpAsync" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpAsync" data-bs-toggle="tooltip" title="Show/hide more details about async/await" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpAsync"> + <h6> + Purpose + </h6> + <p> + Manages I/O-bound and CPU-bound asynchronous operations without complex callback structures, improving application performance and responsiveness. + </p> + <h6> + Key Concepts + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Declares that a method, lambda, or anonymous method is asynchronous and allows the use of the 'await' keyword within it."> + `async` Modifier: + </strong> + Marks a method as asynchronous. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Suspends the execution of an async method until the awaited asynchronous operation (typically a Task) completes."> + `await` Operator: + </strong> + Suspends execution until an awaited `Task` or `Task + <t> + ` completes. + </t> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Represent an asynchronous operation. Task<T> represents an operation that returns a value of type T."> + `Task` and `Task + <t> + `: + </t> + </strong> + Represent ongoing asynchronous operations. + </li> + <li> + <strong> + Exception Handling: + </strong> + `try-catch` blocks work seamlessly with async operations. + </li> + </ul> + <h6> + Use Cases + </h6> + <p> + Web service calls, database queries, file I/O, long-running computations that shouldn't block the main thread. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-linq"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-funnel" data-bs-placement="top" data-bs-toggle="tooltip" title="Data Query / Filter Icon"> + </i> + LINQ + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with C# 3 and is available in subsequent versions."> + C# 3+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Provides powerful, SQL-like query capabilities directly within C# for collections, databases (via EF Core), XML, and other data sources. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/linq/" rel="noopener noreferrer" target="_blank" title="External link: Language Integrated Query (LINQ) Documentation"> + LINQ Docs + </a> + </p> + <button aria-controls="collapseCsharpLinq" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpLinq" data-bs-toggle="tooltip" title="Show/hide more details about LINQ" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpLinq"> + <h6> + Purpose + </h6> + <p> + Offers a consistent model for working with data across various sources and formats, reducing complexity and improving code readability. + </p> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="LINQ offers two ways to write queries: a declarative SQL-like syntax and a fluent method-based syntax using extension methods."> + Query Syntax & Method Syntax: + </strong> + Two ways to write LINQ queries. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A set of predefined extension methods (e.g., Where, Select, OrderBy, GroupBy) that form the core of LINQ."> + Standard Query Operators: + </strong> + A rich set of methods like `Where`, `Select`, `OrderBy`, `GroupBy`. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="LINQ queries are often not executed until their results are actually iterated over, allowing for more efficient data processing."> + Deferred Execution: + </strong> + Queries are executed only when results are enumerated. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="LINQ queries are checked by the C# compiler for type errors before runtime."> + Type Safety: + </strong> + Queries are checked at compile time. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Implementations of LINQ that allow querying different data sources (e.g., in-memory objects, SQL databases, XML documents)."> + Providers: + </strong> + LINQ to Objects, LINQ to Entities (EF Core), LINQ to XML, etc. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-pattern-matching"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-grid-3x3-gap" data-bs-placement="top" data-bs-toggle="tooltip" title="Pattern Matching Icon"> + </i> + Pattern Matching + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Pattern matching features have been progressively added from C# 7 through C# 13 and beyond."> + C# 7-13+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Enhanced control flow based on the "shape" of data using + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="C# expression used for type testing, often combined with pattern matching to declare a new variable of the tested type if the match succeeds."> + is + </span> + expressions and + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Control flow constructs that allow branching based on matching an input expression against various patterns."> + switch expressions/statements + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/pattern-matching" rel="noopener noreferrer" target="_blank" title="External link: Pattern Matching in C#"> + Pattern Matching + </a> + </p> + <button aria-controls="collapseCsharpPatternMatching" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpPatternMatching" data-bs-toggle="tooltip" title="Show/hide more details about Pattern Matching" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpPatternMatching"> + <h6> + Purpose + </h6> + <p> + Provides more concise and readable syntax for conditional logic based on data characteristics, type checks, and value comparisons. + </p> + <h6> + Types of Patterns + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Checks if an expression's runtime type matches a given type, and can cast it to that type."> + Type Pattern: + </strong> + Checks if an expression can be converted to a specified type (`obj is string s`). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Matches an expression based on the values of its properties or fields."> + Property Pattern: + </strong> + Matches an expression against properties of an object (`obj is { Length: > 0 }`). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Compares an input value with a constant using relational operators (e.g., <, >, <=, >=)."> + Relational Patterns: + </strong> + Compare values (`> 10`, `< 50`). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Combines other patterns using logical operators like 'and', 'or', and 'not'."> + Logical Patterns: + </strong> + Combine patterns (`and`, `or`, `not`). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Matches sequences of elements in arrays or lists, allowing checks for length and specific element values or patterns."> + List Patterns: + </strong> + Match elements in arrays or lists (`[1, 2, ..]`). (C# 11+) + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A concise, expression-based form of the switch statement that returns a value from the matched arm."> + Switch Expressions: + </strong> + Concise switch-like construct returning a value. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-records"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-journal-bookmark" data-bs-placement="top" data-bs-toggle="tooltip" title="Record Type Icon"> + </i> + Records + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with C# 9 and is available in subsequent versions."> + C# 9+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Concise syntax for creating immutable reference types ( + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A reference type in C# that provides concise syntax for creating immutable data-centric objects with value-based equality."> + record class + </span> + ) or value types ( + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A value type in C# that provides concise syntax for creating data-centric objects, often immutable, with value-based equality."> + record struct + </span> + ) ideal for data transfer objects (DTOs). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record" rel="noopener noreferrer" target="_blank" title="External link: C# Records Documentation"> + Records Docs + </a> + </p> + <button aria-controls="collapseCsharpRecords" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpRecords" data-bs-toggle="tooltip" title="Show/hide more details about C# Records" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpRecords"> + <h6> + Purpose + </h6> + <p> + Simplify the creation of data-centric types, promote immutability, and provide built-in functionality for value-based equality and display. + </p> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Record properties are typically 'init-only', meaning they can only be set during object initialization."> + Immutability by Default: + </strong> + Properties are typically init-only. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Two record instances are considered equal if all their property values are equal, rather than comparing their memory references."> + Value-based Equality: + </strong> + Instances are compared based on their data, not reference. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Allow creating a new record instance by copying an existing one and modifying specified properties (non-destructive mutation)."> + `with` Expressions: + </strong> + Create copies with modified properties (non-destructive mutation). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Records automatically provide a 'ToString()' method that displays the type name and public property values."> + Built-in Formatting: + </strong> + Sensible `ToString()` overrides. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Allows easily extracting property values from a record instance into separate variables."> + Deconstruction: + </strong> + Easily extract property values. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A concise syntax where properties are defined via constructor parameters, and corresponding deconstructor and init-only properties are auto-generated."> + Positional Records: + </strong> + Concise syntax for defining properties via constructor parameters. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-csharp" id="card-csharp-nullable-types"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-question-circle" data-bs-placement="top" data-bs-toggle="tooltip" title="Nullable Reference Type Icon"> + </i> + Nullable Ref Types + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with C# 8 and is available in subsequent versions."> + C# 8+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Helps prevent + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A common runtime error that occurs when trying to access a member of a variable that currently holds a null reference."> + NullReferenceException + </span> + at runtime by distinguishing between nullable and non-nullable reference types through compiler analysis. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references" rel="noopener noreferrer" target="_blank" title="External link: Nullable Reference Types Documentation"> + Nullable Types + </a> + </p> + <button aria-controls="collapseCsharpNullableTypes" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCsharpNullableTypes" data-bs-toggle="tooltip" title="Show/hide more details about Nullable Reference Types" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCsharpNullableTypes"> + <h6> + Purpose + </h6> + <p> + Improves code safety by making the intent regarding nullability explicit, allowing the compiler to issue warnings about potential null dereferences. + </p> + <h6> + Mechanism + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Nullable reference types are enabled project-wide or per-file, allowing gradual adoption."> + Opt-in Feature: + </strong> + Enabled via project settings (` + <nullable> + enable + </nullable> + `) or `#nullable` directives. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="'string?' explicitly declares that a variable of type string can hold a null value, while 'string' implies it should not (by default, when the feature is enabled)."> + `string?` vs `string`: + </strong> + `string?` indicates a reference type that can be null; `string` indicates it should not be null. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The C# compiler analyzes code and issues warnings if a non-nullable reference type might be assigned null, or if a nullable type is dereferenced without a null check."> + Compiler Warnings: + </strong> + Alerts for potential null assignments or dereferences. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="An operator used to suppress a nullable warning when the developer is certain that an expression will not be null at that point, even if the compiler cannot prove it."> + Null-Forgiving Operator (`!`): + </strong> + Suppresses warnings when a developer asserts an expression is not null. + </li> + </ul> + <h6> + Impact + </h6> + <p> + Encourages more robust code by forcing developers to consider nullability throughout their codebase. + </p> + </div> + </div> + </div> </div> - - <!-- VI. ADVANCED & ARCHITECTURAL CONCEPTS --> - <div class="schema-container section-advanced" data-section-id="section-advanced-concepts" data-section-name="Advanced Concepts"> - <h2 class="section-title" id="section-advanced-concepts-title">Advanced & Architectural Concepts</h2> - <div class="row"> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-native-aot"> - <div class="card-body"> - <h5><i class="bi bi-lightning-charge-fill" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Native Compilation Icon"></i> Native AOT <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Native Ahead-of-Time compilation was significantly enhanced and promoted starting with .NET 7.">.NET 7+</span></h5> - <div class="card-content-wrapper"> - <p class="summary"><span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Ahead-of-Time (AOT) compilation process that compiles .NET code directly into native machine code during the build process, eliminating the need for JIT compilation at runtime.">Ahead-of-Time</span> compilation that compiles .NET code directly to native machine code for faster startup, smaller deployments, and reduced memory. <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Native AOT Deployment Documentation">Native AOT Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNativeAot" aria-expanded="false" aria-controls="collapseNativeAot" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Native AOT"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseNativeAot"> - <h6>Benefits</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Applications start more quickly because the code is already compiled to native instructions, avoiding the JIT compilation step at launch.">Faster Startup Time:</strong> No JIT compilation needed at runtime.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Native AOT, often combined with trimming, can produce smaller, self-contained executables that include only the necessary code.">Smaller Deployments:</strong> Can produce self-contained executables with only necessary code (trimming).</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Native AOT applications typically use less memory as they don't require the JIT compiler or extensive metadata at runtime.">Reduced Memory Footprint:</strong> Less overhead compared to JIT-compiled applications.</li> - </ul> - <h6>Trade-offs & Considerations</h6> - <ul> - <li><strong>Longer Build Times:</strong> AOT compilation is more time-consuming.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Some dynamic C# features like reflection, or dependencies that rely heavily on it, may have limitations or require specific configurations to work with trimming and Native AOT.">Reflection Limitations:</strong> Dynamic features like reflection might require workarounds or be limited. <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/prepare-libraries-for-trimming" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Prepare .NET libraries for trimming">Trimming/Reflection</a></li> - <li><strong>Platform Specificity:</strong> Output is native to the target platform.</li> - </ul> - <h6>Use Cases</h6> - <p>Serverless functions, CLI tools, containerized applications, scenarios where startup performance and deployment size are critical.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-modularity"> - <div class="card-body"> - <h5><i class="bi bi-puzzle" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Modular Design Icon"></i> Modularity & Libraries <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title=".NET Standard was introduced to facilitate library sharing across .NET Framework and .NET Core/modern .NET.">.NET Standard 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Designing systems with well-defined <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Reusable units of code (typically DLLs) that encapsulate specific functionalities and can be shared across multiple projects or applications.">class libraries</span> and understanding <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="A formal specification of .NET APIs that are intended to be available on all .NET implementations. Used for creating libraries portable across different .NET runtimes (e.g., .NET Framework, .NET Core).">.NET Standard</span> (for older library compatibility). <a href="https://learn.microsoft.com/en-us/dotnet/standard/class-libraries" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Class Libraries Overview">Class Libraries</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseModularity" aria-expanded="false" aria-controls="collapseModularity" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Modularity & Libraries"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseModularity"> - <h6>Key Concepts</h6> - <ul> - <li><strong>Class Libraries:</strong> Package reusable code into DLLs.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title=".NET Standard is a specification of APIs. Libraries targeting a .NET Standard version can be used by any .NET implementation (like .NET Framework, .NET Core, Mono/Xamarin) that supports that version or higher. It's less critical for new libraries targeting only modern .NET.">.NET Standard (Legacy):</strong> A formal specification of .NET APIs intended to be available on all .NET implementations. Useful for libraries targeting multiple .NET runtimes (e.g., .NET Framework and .NET Core). <a href="https://learn.microsoft.com/en-us/dotnet/standard/net-standard" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Standard Documentation">.NET Standard Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="For libraries intended only for modern .NET (e.g., .NET 6, .NET 7, .NET 8, .NET 9), targeting a specific .NET version (e.g., 'net9.0') is the recommended approach, providing access to the latest APIs.">Modern .NET Targeting:</strong> For new libraries, targeting `netX.Y` (e.g., `net9.0`) is often sufficient.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-interop"> - <div class="card-body"> - <h5><i class="bi bi-link-45deg" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Interoperability Icon"></i> Interoperability <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Interoperability features have been part of .NET since its inception, allowing interaction with native code.">.NET Fx 1.0+ | .NET Core 1.0+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Interacting with non-.NET code, such as native C/C++ libraries (<span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Platform Invocation Services: A technology that enables managed .NET code to call unmanaged functions implemented in native DLLs (e.g., Win32 API, custom C/C++ libraries).">P/Invoke</span>) or COM components. <a href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Native Interoperability">Native Interop</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseInterop" aria-expanded="false" aria-controls="collapseInterop" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Interoperability"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseInterop"> - <h6>Mechanisms</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Allows managed .NET code to call functions residing in unmanaged (native) DLLs.">Platform Invoke (P/Invoke):</strong> Call functions in unmanaged DLLs. <a href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: P/Invoke Documentation">P/Invoke Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Enables .NET applications to use COM components and expose .NET components to COM clients.">COM Interop:</strong> Interact with Component Object Model components. <a href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/cominterop" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: COM Interoperability Documentation">COM Interop Docs</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="A set of language extensions for C++ that allows mixing managed (.NET) and unmanaged C++ code, primarily for Windows development.">C++/CLI:</strong> For tighter integration with C++ code (Windows-specific).</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-source-generators"> - <div class="card-body"> - <h5><i class="bi bi-magic" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Code Generation Icon"></i> Source Generators <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title="Source Generators were introduced with C# 9 and the .NET 5 SDK, leveraging the Roslyn compiler.">C# 9+</span></h5> - <div class="card-content-wrapper"> - <p class="summary">A Roslyn compiler feature that lets C# developers inspect user code and generate new C# source files during compilation. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/source-generators-overview" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Source Generators Overview">Source Generators Docs</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSourceGenerators" aria-expanded="false" aria-controls="collapseSourceGenerators" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Source Generators"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseSourceGenerators"> - <h6>Purpose</h6> - <p>Automate boilerplate code, improve performance by avoiding runtime reflection, and enforce coding conventions.</p> - <h6>Use Cases</h6> - <ul> - <li><strong>INotifyPropertyChanged Implementation:</strong> Auto-generate property change notifications.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Source generators can create optimized code for serializing and deserializing objects (e.g., for JSON), improving performance compared to reflection-based approaches.">Serialization Helpers:</strong> Generate optimized serialization/deserialization code (e.g., System.Text.Json).</li> - <li><strong>Builder Pattern Generation:</strong> Create fluent builder APIs.</li> - </ul> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-observability"> - <div class="card-body"> - <h5><i class="bi bi-graph-up-arrow" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="System Monitoring Icon"></i> Observability <span class="version-tag" data-bs-toggle="tooltip" data-bs-placement="top" title=".NET 5 introduced dedicated APIs for metrics and tracing, enhancing observability capabilities, often integrated with OpenTelemetry.">.NET 5+ (Metrics/Tracing APIs)</span></h5> - <div class="card-content-wrapper"> - <p class="summary">Designing systems to provide insights into their behavior through <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Recording discrete events, errors, and informational messages from an application.">logging, metrics, and tracing</span>. Often using <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="An open-source observability framework for instrumenting, generating, collecting, and exporting telemetry data (metrics, logs, and traces).">OpenTelemetry</span>. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/observability-with-otel" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Observability with OpenTelemetry in .NET">OpenTelemetry with .NET</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseObservability" aria-expanded="false" aria-controls="collapseObservability" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Observability"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseObservability"> - <h6>Three Pillars of Observability</h6> - <ul> - <li><strong>Logging:</strong> Capturing discrete events and errors. (Covered in Key Libraries)</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Collecting and aggregating numerical data that measures system performance and behavior over time (e.g., request counts, error rates, durations).">Metrics:</strong> Aggregated numerical data about system performance (e.g., request rates, error counts). <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/metrics" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Metrics Documentation">.NET Metrics</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Tracking the flow of a single request or operation as it passes through multiple services or components in a distributed system.">Distributed Tracing:</strong> Tracking requests as they flow through multiple services. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Distributed Tracing">Distributed Tracing</a></li> - </ul> - <p>OpenTelemetry is an open-source standard for collecting and exporting telemetry data.</p> - </div> - </div> - </div> - <div class="col-lg-4 col-md-6"> - <div class="info-card card-advanced" id="card-api-design"> - <div class="card-body"> - <h5><i class="bi bi-bricks" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="API Architecture Icon"></i> API Design</h5> - <div class="card-content-wrapper"> - <p class="summary">Principles for designing robust, maintainable, and usable APIs, especially for <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Web services that adhere to REST (Representational State Transfer) architectural constraints, typically using HTTP methods (GET, POST, PUT, DELETE) and standard status codes.">RESTful web services</span>. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/best-practices" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Best Practices">ASP.NET Core Best Practices</a></p> - <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseApiDesign" aria-expanded="false" aria-controls="collapseApiDesign" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about API Design"> - Details <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseApiDesign"> - <h6>Key Considerations</h6> - <ul> - <li><strong>Consistency:</strong> Naming conventions, URL structure, request/response formats.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Implementing strategies (e.g., URL versioning, header versioning) to manage changes to an API over time without breaking existing client applications.">Versioning:</strong> Strategies for evolving APIs without breaking clients. <a href="https://learn.microsoft.com/en-us/aspnet/core/web-api/versioning" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: API Versioning in ASP.NET Core">API Versioning</a></li> - <li><strong>Error Handling:</strong> Clear and consistent error responses.</li> - <li><strong>Security:</strong> Authentication, authorization, input validation.</li> - <li><strong>Performance:</strong> Caching, pagination, efficient data retrieval.</li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Describing API endpoints, request/response formats, and authentication methods using standards like OpenAPI (formerly Swagger) to facilitate understanding and integration.">Documentation:</strong> Using tools like Swagger/OpenAPI. <a href="https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Swagger/OpenAPI with Swashbuckle in ASP.NET Core">Swagger/OpenAPI</a></li> - </ul> - </div> - </div> - </div> + <!-- /.row --> + </div> + <!-- /.schema-container --> + <!-- III. APPLICATION MODELS & FRAMEWORKS --> + <div class="schema-container section-web" data-section-id="section-app-models" data-section-name="App Models"> + <h2 class="section-title" id="section-app-models-title"> + Application Models & Frameworks + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-web" id="card-aspnetcore"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-globe2" data-bs-placement="top" data-bs-toggle="tooltip" title="Web Application Icon"> + </i> + ASP.NET Core + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this feature was introduced with .NET Core 1.0 and is available in subsequent versions, including modern .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Modern, cross-platform framework for building + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Applications accessed via a web browser, APIs (Application Programming Interfaces) for service communication, and small, independent microservices."> + web apps, APIs, and microservices + </span> + . High-performance and modular. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Documentation"> + ASP.NET Core Docs + </a> + </p> + <button aria-controls="collapseAspnetcore" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseAspnetcore" data-bs-toggle="tooltip" title="Show/hide more details about ASP.NET Core" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseAspnetcore"> + <h6> + Key Sub-Frameworks/Patterns + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A streamlined approach introduced in .NET 6 for creating HTTP APIs with minimal code and configuration."> + Minimal APIs + <span class="version-tag"> + .NET 6+ + </span> + : + </strong> + Lightweight syntax for creating HTTP APIs. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis" rel="noopener noreferrer" target="_blank" title="External link: Minimal APIs Documentation"> + Minimal APIs Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A design pattern separating application concerns into Model (data), View (UI), and Controller (request handling)."> + MVC (Model-View-Controller): + </strong> + Pattern for building web UIs and APIs. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/mvc/overview" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core MVC Documentation"> + MVC Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A page-focused framework for building dynamic web UIs, where each page has its own logic and UI markup."> + Razor Pages: + </strong> + Page-centric model for building web UIs. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/razor-pages/" rel="noopener noreferrer" target="_blank" title="External link: Razor Pages Documentation"> + Razor Pages Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A framework for building interactive client-side web UIs with C# instead of JavaScript, supporting server-side, client-side (WebAssembly), and hybrid execution models."> + Blazor: + </strong> + Build interactive client-side web UIs with C#. (Server, WebAssembly, Hybrid). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/blazor/" rel="noopener noreferrer" target="_blank" title="External link: Blazor Documentation"> + Blazor Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A comprehensive framework within ASP.NET Core for creating RESTful HTTP services that expose data and functionality."> + Web APIs: + </strong> + Robust framework for building RESTful HTTP services. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/web-api/" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Web API Documentation"> + Web API Docs + </a> + </li> + </ul> + <h6> + Core Features + </h6> + <p> + Middleware pipeline, routing, dependency injection, configuration, logging, Kestrel web server. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/kestrel" rel="noopener noreferrer" target="_blank" title="External link: Kestrel Web Server Documentation"> + Kestrel Docs + </a> + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-crossplatform" id="card-maui"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-phone-vibrate" data-bs-placement="top" data-bs-toggle="tooltip" title="Mobile/Desktop App Icon"> + </i> + .NET MAUI + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this framework was introduced with .NET 6 and is available in subsequent versions."> + .NET 6+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title=".NET Multi-platform App UI: A cross-platform framework for creating native mobile and desktop apps with C# and XAML from a single shared codebase."> + Multi-platform App UI + </span> + . Build native mobile and desktop apps from a single C# codebase for iOS, Android, Windows, and macOS. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/maui/" rel="noopener noreferrer" target="_blank" title="External link: .NET MAUI Documentation"> + .NET MAUI Docs + </a> + </p> + <button aria-controls="collapseMaui" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseMaui" data-bs-toggle="tooltip" title="Show/hide more details about .NET MAUI" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseMaui"> + <h6> + Purpose + </h6> + <p> + Evolve Xamarin.Forms to provide a single project structure and unified API for creating native UIs across multiple platforms. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A unified project system that simplifies managing code, resources, and platform-specific configurations for all targeted platforms."> + Single Project: + </strong> + Manage code, resources, and platform-specific assets in one project. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/single-project" rel="noopener noreferrer" target="_blank" title="External link: .NET MAUI Single Project"> + Single Project + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET MAUI renders user interfaces using the native control sets of each target platform, ensuring an authentic user experience."> + Native UI: + </strong> + Renders native controls on each platform for authentic look and feel. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="User interfaces can be defined using XAML (a declarative markup language) or programmatically using C#."> + XAML and C#: + </strong> + Define UI using XAML markup or C# code-behind. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/maui/xaml/" rel="noopener noreferrer" target="_blank" title="External link: XAML in .NET MAUI"> + XAML Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET MAUI provides cross-platform abstractions for common device features (like camera, GPS) and also allows direct invocation of native platform APIs."> + Access to Native APIs: + </strong> + Provides abstractions for common device features and allows direct platform API access. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/" rel="noopener noreferrer" target="_blank" title="External link: Platform Integration in .NET MAUI"> + Native APIs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A development feature that allows immediate reflection of XAML and C# code changes in the running application without needing a full rebuild and redeploy."> + Hot Reload: + </strong> + See XAML and C# code changes reflected live in running app. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/maui/xaml/hot-reload" rel="noopener noreferrer" target="_blank" title="External link: XAML Hot Reload in .NET MAUI"> + Hot Reload + </a> + </li> + </ul> + <h6> + Targets + </h6> + <p> + iOS, Android, Windows (WinUI 3), macOS (via Mac Catalyst). + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-crossplatform" id="card-wpf"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-window-desktop" data-bs-placement="top" data-bs-toggle="tooltip" title="Windows Desktop App Icon"> + </i> + WPF + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Initially part of .NET Framework 3.0, WPF is also supported on modern .NET (Core) 3.0 and later for Windows desktop development."> + .NET Fx 3.0+ | .NET Core 3.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A UI framework for building Windows desktop applications with rich graphical capabilities, XAML-based UI design, data binding, and multimedia integration."> + Windows Presentation Foundation + </span> + . A UI framework for creating desktop client applications on Windows with rich user interfaces. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/desktop/wpf/" rel="noopener noreferrer" target="_blank" title="External link: WPF Documentation"> + WPF Docs + </a> + </p> + <button aria-controls="collapseWpf" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseWpf" data-bs-toggle="tooltip" title="Show/hide more details about WPF" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseWpf"> + <h6> + Purpose + </h6> + <p> + Build visually rich, interactive desktop applications for Windows. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Extensible Application Markup Language: A declarative XML-based language used for defining UI elements, data binding, and styling in WPF."> + XAML: + </strong> + Declarative markup language for UI definition. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A powerful mechanism in WPF that creates a connection between the application's UI and its data (business logic), allowing automatic synchronization."> + Data Binding: + </strong> + Powerful mechanism for synchronizing UI and data. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Features that allow extensive customization of the appearance, layout, and behavior of UI controls."> + Styles and Templates: + </strong> + Customize appearance and behavior of controls. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="WPF provides comprehensive support for integrating 2D and 3D graphics, animations, audio, and video into applications."> + Graphics and Multimedia: + </strong> + Rich support for 2D/3D graphics, animation, audio, and video. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-crossplatform" id="card-winforms"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-app-indicator" data-bs-placement="top" data-bs-toggle="tooltip" title="Windows Forms App Icon"> + </i> + Windows Forms + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Initially part of .NET Framework 1.0, Windows Forms is also supported on modern .NET (Core) 3.0 and later for Windows desktop development."> + .NET Fx 1.0+ | .NET Core 3.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + A framework for creating Windows desktop applications with a rich set of UI controls and a visual designer. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/desktop/winforms/" rel="noopener noreferrer" target="_blank" title="External link: Windows Forms Documentation"> + Windows Forms Docs + </a> + </p> + <button aria-controls="collapseWinforms" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseWinforms" data-bs-toggle="tooltip" title="Show/hide more details about Windows Forms" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> </div> + </div> + <div class="collapse collapse-content" id="collapseWinforms"> + <h6> + Purpose + </h6> + <p> + Rapid application development (RAD) for Windows desktop applications. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A feature in IDEs like Visual Studio that allows developers to design UIs by dragging and dropping controls onto a form."> + Visual Designer: + </strong> + Drag-and-drop interface for UI construction. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A comprehensive library of standard UI elements (buttons, text boxes, lists, etc.) for building application interfaces."> + Rich Control Set: + </strong> + Wide variety of pre-built UI controls. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A programming paradigm where the flow of the program is determined by events such as user actions (mouse clicks, key presses) or system messages."> + Event-Driven Programming: + </strong> + Responds to user interactions and system events. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Windows Forms has a long history, resulting in a stable platform with extensive documentation and community resources."> + Mature Technology: + </strong> + Long history and extensive community support. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-general" id="card-console"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-terminal" data-bs-placement="top" data-bs-toggle="tooltip" title="Console/Terminal Icon"> + </i> + Console Applications + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Available since the original .NET Framework 1.0 and fully supported in all .NET Core and modern .NET versions."> + .NET Fx 1.0+ | .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Command-line applications that run in a text-based console window, ideal for utilities and background tasks. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/top-level-templates" rel="noopener noreferrer" target="_blank" title="External link: Console Application Documentation (.NET Top-Level Templates)"> + Console App Docs + </a> + </p> + <button aria-controls="collapseConsole" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseConsole" data-bs-toggle="tooltip" title="Show/hide more details about Console Applications" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseConsole"> + <h6> + Purpose + </h6> + <p> + Build lightweight tools, scripts, and backend processes that don't require a graphical user interface. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET console applications can be built and run on Windows, Linux, and macOS."> + Cross-Platform: + </strong> + Can run on Windows, Linux, and macOS. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Console applications can receive input parameters from the command line when they are launched."> + Command-Line Arguments: + </strong> + Easily parse input parameters. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Refers to the standard input (keyboard), standard output (screen display), and standard error streams used for interaction."> + Standard I/O: + </strong> + Interact via console input, output, and error streams. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A C# 9+ feature that simplifies the Program.cs file by allowing code to exist outside of a Main method and class structure for simple programs."> + Top-level statements + <span class="version-tag"> + C# 9+ + </span> + : + </strong> + Simplified syntax for `Program.cs` in modern C#. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-web" id="card-worker-services"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-hdd-stack" data-bs-placement="top" data-bs-toggle="tooltip" title="Background Service Icon"> + </i> + Worker Services + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this template and hosting model were introduced with .NET Core 3.0 and are available in subsequent versions."> + .NET Core 3.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Framework for creating long-running background services, message queue processors, or other non-UI tasks. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services" rel="noopener noreferrer" target="_blank" title="External link: Worker Services and Hosted Services Documentation"> + Worker Services Docs + </a> + </p> + <button aria-controls="collapseWorkerServices" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseWorkerServices" data-bs-toggle="tooltip" title="Show/hide more details about Worker Services" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseWorkerServices"> + <h6> + Purpose + </h6> + <p> + Ideal for microservices, scheduled tasks, and processing data from queues or other sources without direct user interaction. + </p> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The IHostedService interface provides a way to define and manage long-running background tasks within a .NET application."> + Hosted Services (`IHostedService`): + </strong> + Core abstraction for background tasks. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET's generic host provides standardized functionalities like dependency injection, configuration, and logging for non-HTTP applications."> + Generic Host: + </strong> + Leverages .NET's generic host for logging, configuration, DI. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Worker services support mechanisms for cooperative cancellation, allowing them to clean up resources and shut down properly when requested."> + Graceful Shutdown: + </strong> + Supports cooperative cancellation. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Worker services can be deployed as Windows Services or Linux daemons, enabling them to run on various operating systems."> + Cross-Platform: + </strong> + Can run as services on Windows or daemons on Linux. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-web" id="card-cloud-native"> + <!-- Updated from card-cloud-native to card-web for category consistency --> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-cloud-arrow-up" data-bs-placement="top" data-bs-toggle="tooltip" title="Cloud Native Application Icon"> + </i> + .NET Aspire + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this stack was introduced with .NET 8 and is designed for building cloud-native applications."> + .NET 8+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + An opinionated, cloud-ready stack for building observable, production-ready, distributed applications. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/aspire/" rel="noopener noreferrer" target="_blank" title="External link: .NET Aspire Documentation"> + .NET Aspire Docs + </a> + </p> + <button aria-controls="collapseCloudNative" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCloudNative" data-bs-toggle="tooltip" title="Show/hide more details about .NET Aspire" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCloudNative"> + <h6> + Purpose + </h6> + <p> + Simplifies building and running cloud-native applications by providing tools and patterns for service discovery, telemetry, resilience, and configuration. + </p> + <h6> + Key Components + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A project in .NET Aspire that defines and orchestrates the various services, databases, and other resources that make up a distributed application."> + App Host Project: + </strong> + Orchestrates application resources and services. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Pre-configured settings and extensions in .NET Aspire for common concerns like telemetry (logging, metrics, tracing) and resilience patterns."> + Service Defaults: + </strong> + Common configurations for telemetry, resilience, etc. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A web-based interface provided by .NET Aspire for local development, allowing developers to view logs, traces, metrics, and environment configurations for their application."> + Dashboard: + </strong> + Local developer dashboard for observing logs, traces, and metrics. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Curated NuGet packages provided by .NET Aspire that simplify integration with common backing services like Redis, PostgreSQL, RabbitMQ, etc."> + Components: + </strong> + NuGet packages for integrating with various services (e.g., Redis, PostgreSQL). + </li> + </ul> + </div> + </div> + </div> </div> - - <!-- VII. KEY CONSIDERATIONS FOR ARCHITECTS --> - <div class="schema-container section-general" data-section-id="section-arch-considerations" data-section-name="Architecture"> - <h2 class="section-title" id="section-arch-considerations-title">Key Considerations for Architects</h2> - <div class="row"> - <div class="col-12"> - <div class="info-card card-general" id="card-arch-summary"> - <div class="card-body"> - <h5 class="text-center"><i class="bi bi-building-gear" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="Architectural Planning Icon"></i> Architectural Decision Points</h5> - <div class="card-content-wrapper"> - <p class="summary text-center">When designing .NET systems, architects must weigh <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="The ability of a system to handle increasing amounts of load or work.">scalability</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="The ability of a system to withstand failures and continue operating, often involving redundancy and fault tolerance mechanisms.">resilience</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Protecting the system and its data from unauthorized access, use, disclosure, alteration, or destruction.">security</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="The ease with which a system can be modified, repaired, and enhanced over its lifecycle.">maintainability</span>, <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="The processes and tools used to package, distribute, and run the application in various environments (development, staging, production).">deployment strategies</span>, and <span class="term" data-bs-toggle="tooltip" data-bs-placement="top" title="Managing and reducing the financial costs associated with developing, deploying, and operating the system.">cost optimization</span>. Choosing the right application models and libraries is crucial. <a href="https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Architecture Guides for Modern Web Apps on Azure">.NET Architecture Guides</a></p> - <button class="btn btn-sm details-toggle mx-auto" type="button" data-bs-toggle="collapse" data-bs-target="#collapseArchConsiderations" aria-expanded="false" aria-controls="collapseArchConsiderations" data-bs-toggle="tooltip" data-bs-placement="top" title="Show/hide more details about Architectural Considerations"> - Explore Further <i class="bi bi-chevron-down" aria-hidden="true"></i> - </button> - </div> - </div> - <div class="collapse collapse-content" id="collapseArchConsiderations"> - <h6>Core Tenets</h6> - <ul> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Designing systems to handle growth in users, data, or transaction volume, often by using patterns like microservices, load balancing, and distributed caching.">Scalability:</strong> Design for growth. Consider patterns like microservices, load balancing, and caching. <a href="https://learn.microsoft.com/en-us/dotnet/architecture/microservices/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Microservices Architecture Guide">Microservices Architecture</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Building applications that can gracefully handle failures and continue functioning, using techniques like retries, circuit breakers (e.g., with Polly), and health checks.">Resilience & Fault Tolerance:</strong> Implement patterns like retries, circuit breakers (e.g., using <a href="https://github.com/App-vNext/Polly" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Polly Resilience Framework">Polly</a>), and health checks. <a href="https://learn.microsoft.com/en-us/dotnet/core/resilience/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: Resilient Cloud-Native Applications Guide">Resilient Apps</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Integrating security considerations and practices into every phase of the software development lifecycle, from design to deployment and operation.">Security by Design:</strong> Incorporate security throughout the lifecycle. <a href="https://learn.microsoft.com/en-us/aspnet/core/security/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: ASP.NET Core Security Documentation">ASP.NET Core Security</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Writing clean, well-structured, and modular code that is easy to understand, modify, and test. Using practices like Dependency Injection and comprehensive testing.">Maintainability & Testability:</strong> Clean, modular code. Employ DI, unit/integration tests. <a href="https://learn.microsoft.com/en-us/dotnet/core/testing/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Testing Documentation">.NET Testing</a></li> - <li><strong data-bs-toggle="tooltip" data-bs-placement="top" title="Choosing appropriate methods and platforms for deploying applications, such as containerization (Docker, Kubernetes), serverless computing (Azure Functions), or Platform-as-a-Service (Azure App Service).">Deployment Strategies:</strong> Containers (Docker, Kubernetes), serverless (Azure Functions), PaaS (Azure App Service). <a href="https://learn.microsoft.com/en-us/dotnet/architecture/host-deploy/" target="_blank" rel="noopener noreferrer" data-bs-toggle="tooltip" data-bs-placement="top" title="External link: .NET Hosting and Deployment Guide">Hosting & Deployment</a></li> - <li><strong>Cost Optimization:</strong> Monitor resource usage, choose appropriate service tiers, and optimize for efficiency.</li> - <li><strong>Observability:</strong> Implement robust logging, metrics, and tracing. (Covered in Advanced Concepts)</li> - </ul> - <p>The choice of .NET frameworks and libraries should align with these architectural goals and the specific requirements of the project.</p> - </div> - </div> - </div> - </div> <!-- /.row --> - </div> <!-- /.schema-container --> - -</div> <!-- /container#main-container --> - -<footer class="container text-center pb-3"> - <p class="mb-1">© <span id="currentYear"></span> David Veksler Cheatsheets</p> - <p class="mb-2" style="font-size: 0.8em;">Last Updated: <span id="lastUpdatedDate">May 10, 2025</span></p> - <div> - <a href="https://learn.microsoft.com/en-us/dotnet/" title="External link: Official .NET Documentation" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary" data-bs-toggle="tooltip" data-bs-placement="top"> - <i class="bi bi-book" aria-hidden="true"></i> .NET Docs - </a> - <a href="https://learn.microsoft.com/en-us/dotnet/csharp/" title="External link: Official C# Documentation" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary" data-bs-toggle="tooltip" data-bs-placement="top"> - <i class="bi bi-filetype-cs" aria-hidden="true"></i> C# Docs - </a> - <a href="https://dotnet.microsoft.com/en-us/learn/architecture" title="External link: .NET Architecture Center" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary" data-bs-toggle="tooltip" data-bs-placement="top"> - <i class="bi bi-diagram-2" aria-hidden="true"></i> .NET Architecture Center - </a> + <!-- /.row --> + </div> + <!-- /.schema-container --> + <!-- IV. KEY LIBRARIES & TECHNOLOGIES --> + <div class="schema-container section-data" data-section-id="section-key-libs" data-section-name="Libraries & Tech"> + <h2 class="section-title" id="section-key-libs-title"> + Key Libraries & Technologies + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-data" id="card-efcore"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-server" data-bs-placement="top" data-bs-toggle="tooltip" title="Database / ORM Icon"> + </i> + Entity Framework Core + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Indicates this ORM was introduced with .NET Core 1.0 and is the modern data access technology for .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Modern, cross-platform + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Object-Relational Mapper: A programming technique for converting data between incompatible type systems using object-oriented programming languages."> + Object-Relational Mapper (ORM) + </span> + . Enables developers to work with databases using .NET objects. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/ef/core/" rel="noopener noreferrer" target="_blank" title="External link: Entity Framework Core Documentation"> + EF Core Docs + </a> + </p> + <button aria-controls="collapseEfcore" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseEfcore" data-bs-toggle="tooltip" title="Show/hide more details about Entity Framework Core" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseEfcore"> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Allows developers to write database queries using LINQ syntax directly in C# or VB.NET, which EF Core then translates into SQL."> + LINQ to Entities: + </strong> + Query databases using Language Integrated Query. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/ef/core/querying/" rel="noopener noreferrer" target="_blank" title="External link: Querying Data with EF Core"> + Querying Data + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A feature that allows developers to evolve the database schema over time as the application's data model changes, using code-based definitions."> + Migrations: + </strong> + Manage database schema changes over time. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/" rel="noopener noreferrer" target="_blank" title="External link: EF Core Migrations Documentation"> + Migrations Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="EF Core supports a variety of database systems through provider libraries, enabling it to work with different database backends."> + Database Providers: + </strong> + Supports SQL Server, SQLite, PostgreSQL, MySQL, Cosmos DB, and more. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/ef/core/providers/" rel="noopener noreferrer" target="_blank" title="External link: EF Core Database Providers"> + Providers Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The process by which EF Core keeps track of the state of entities (e.g., added, modified, deleted) to generate appropriate database commands."> + Change Tracking: + </strong> + Automatically tracks changes to entities for updates. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/ef/core/change-tracking/" rel="noopener noreferrer" target="_blank" title="External link: EF Core Change Tracking"> + Change Tracking Docs + </a> + </li> + </ul> + <h6> + Use Cases + </h6> + <p> + Simplifies data access logic in applications requiring interaction with relational or document databases. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-data" id="card-dapper"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-braces-asterisk" data-bs-placement="top" data-bs-toggle="tooltip" title="Micro ORM / SQL Helper Icon"> + </i> + Dapper + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + A simple object mapper for .NET, focusing on performance. Often used as a "micro-ORM". + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://github.com/DapperLib/Dapper" rel="noopener noreferrer" target="_blank" title="External link: Dapper GitHub Repository"> + Dapper GitHub + </a> + </p> + <button aria-controls="collapseDapper" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseDapper" data-bs-toggle="tooltip" title="Show/hide more details about Dapper" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseDapper"> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Dapper is known for its high speed in executing queries and mapping results to objects, due to its lightweight nature."> + Performance: + </strong> + Extremely fast due to its minimal overhead. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Dapper extends the IDbConnection interface, making it easy to integrate with existing ADO.NET database connection code."> + Extension Methods for IDbConnection: + </strong> + Easy to use with existing ADO.NET connections. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Dapper is designed for developers who prefer to write their own SQL queries rather than relying on an ORM to generate them."> + Raw SQL: + </strong> + Primarily works with raw SQL queries. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Dapper efficiently maps the results of SQL queries to Plain Old CLR Objects (simple classes)."> + POCO Mapping: + </strong> + Maps query results to Plain Old CLR Objects. + </li> + </ul> + <h6> + Use Cases + </h6> + <p> + Scenarios where high performance data retrieval is critical, and developers are comfortable writing SQL. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-networking"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-hdd-network" data-bs-placement="top" data-bs-toggle="tooltip" title="Network Communication Icon"> + </i> + Networking (HTTP, gRPC) + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Core networking capabilities have always been part of .NET, with modern enhancements like HttpClientFactory and gRPC support in .NET Core."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + .NET provides rich libraries for network communication, including + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A modern .NET class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI."> + HttpClient + </span> + for HTTP requests and support for + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="gRPC (Remote Procedure Call): A high-performance, open-source universal RPC framework."> + gRPC + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/overview" rel="noopener noreferrer" target="_blank" title="External link: .NET Networking Overview"> + Networking Overview + </a> + </p> + <button aria-controls="collapseNetworking" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseNetworking" data-bs-toggle="tooltip" title="Show/hide more details about Networking in .NET" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseNetworking"> + <h6> + Key Libraries/Technologies + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Core classes in System.Net.Http for making HTTP requests. IHttpClientFactory (from .NET Core 2.1+) is recommended for managing HttpClient instances."> + `HttpClient` & `HttpRequestMessage`: + </strong> + For making HTTP requests and handling responses. (Consider `IHttpClientFactory` + <span class="version-tag"> + .NET Core 2.1+ + </span> + ) + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient" rel="noopener noreferrer" target="_blank" title="External link: HttpClient Class Documentation"> + HttpClient Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A modern, high-performance RPC framework that can run in any environment. .NET provides first-class support for building gRPC services and clients."> + gRPC for .NET + <span class="version-tag"> + .NET Core 3.0+ + </span> + : + </strong> + High-performance, cross-platform RPC framework. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/grpc/" rel="noopener noreferrer" target="_blank" title="External link: gRPC for .NET Documentation"> + gRPC for .NET Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Provides classes for network access using TCP/IP sockets, enabling lower-level network communication."> + `System.Net.Sockets`: + </strong> + Low-level socket programming. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/api/system.net.sockets" rel="noopener noreferrer" target="_blank" title="External link: System.Net.Sockets Namespace"> + Sockets Docs + </a> + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-security-libs"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-shield-lock" data-bs-placement="top" data-bs-toggle="tooltip" title="Security Icon"> + </i> + Security Libraries + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Core security features are fundamental to .NET, with continuous enhancements in .NET Core and modern .NET."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Built-in libraries for cryptography, authentication, authorization, and data protection. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/security/" rel="noopener noreferrer" target="_blank" title="External link: .NET Security Documentation"> + .NET Security Docs + </a> + </p> + <button aria-controls="collapseSecurityLibs" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseSecurityLibs" data-bs-toggle="tooltip" title="Show/hide more details about .NET Security Libraries" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseSecurityLibs"> + <h6> + Key Areas + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET provides APIs for common cryptographic operations like creating hashes, encrypting/decrypting data, and managing digital signatures."> + Cryptography: + </strong> + Hashing, encryption, digital signatures. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/security/cryptography-model" rel="noopener noreferrer" target="_blank" title="External link: .NET Cryptography Model"> + Cryptography Model + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A framework in ASP.NET Core for managing user identities, including registration, login, roles, and claims-based authorization."> + ASP.NET Core Identity: + </strong> + User authentication and authorization. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Identity"> + ASP.NET Core Identity + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="APIs in .NET for protecting sensitive data, such as connection strings or API keys, often used for data encryption at rest."> + Data Protection APIs: + </strong> + For protecting data at rest. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/introduction" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Data Protection"> + Data Protection + </a> + </li> + <li> + <strong> + Secure Coding Guidelines: + </strong> + Practices to avoid common vulnerabilities. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-configuration"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-gear" data-bs-placement="top" data-bs-toggle="tooltip" title="Configuration Settings Icon"> + </i> + Configuration + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="The flexible configuration system was introduced with .NET Core 1.0 and is a key part of modern .NET applications."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Flexible system for managing application settings from various sources (JSON, XML, environment variables, command-line). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration" rel="noopener noreferrer" target="_blank" title="External link: .NET Configuration Documentation"> + Configuration Docs + </a> + </p> + <button aria-controls="collapseConfiguration" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseConfiguration" data-bs-toggle="tooltip" title="Show/hide more details about .NET Configuration" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseConfiguration"> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET configuration supports loading settings from multiple sources, allowing for flexible setup in different environments."> + Providers: + </strong> + JSON, XML, INI, environment variables, command-line arguments, Azure Key Vault, etc. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The Options pattern allows binding configuration settings to strongly-typed Plain Old CLR Objects (POCOs), making them easier and safer to consume in code."> + Strongly-typed Configuration (Options Pattern): + </strong> + Bind configuration to POCOs. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options" rel="noopener noreferrer" target="_blank" title="External link: Options Pattern in ASP.NET Core"> + Options Pattern + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Configuration values from different providers are combined, with later providers overriding values from earlier ones, forming a single hierarchical view of settings."> + Hierarchical Configuration: + </strong> + Values from different providers are layered. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-logging"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-journal-text" data-bs-placement="top" data-bs-toggle="tooltip" title="Logging / Diagnostics Icon"> + </i> + Logging + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="The logging API was introduced with .NET Core 1.0, providing a standard way to log application events."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Built-in logging API with providers for console, debug output, EventSource, EventLog, and third-party systems. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/extensions/logging" rel="noopener noreferrer" target="_blank" title="External link: .NET Logging Documentation"> + Logging Docs + </a> + </p> + <button aria-controls="collapseLogging" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseLogging" data-bs-toggle="tooltip" title="Show/hide more details about .NET Logging" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseLogging"> + <h6> + Key Features + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The primary interface used for writing log messages in .NET applications."> + `ILogger` Interface: + </strong> + Core abstraction for logging. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET logging supports various providers that direct log output to different destinations (e.g., console, files, Azure Application Insights)."> + Logging Providers: + </strong> + Console, Debug, EventSource, EventLog, ApplicationInsights, Serilog, NLog, etc. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Categorize log messages by severity (e.g., Information, Warning, Error) to control verbosity and filter output."> + Log Levels: + </strong> + Trace, Debug, Information, Warning, Error, Critical. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Logging messages with key-value pairs or structured data, rather than just plain text, to facilitate easier querying and analysis."> + Structured Logging: + </strong> + Log messages with semantic content. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-di"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-diagram-3" data-bs-placement="top" data-bs-toggle="tooltip" title="Dependency Injection Icon"> + </i> + Dependency Injection (DI) + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Dependency Injection support was built into .NET Core 1.0 and is integral to modern .NET development."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + First-class support for DI, promoting loose coupling and testability. Manages object lifecycles and dependencies. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection" rel="noopener noreferrer" target="_blank" title="External link: .NET Dependency Injection Documentation"> + DI Docs + </a> + </p> + <button aria-controls="collapseDi" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseDi" data-bs-toggle="tooltip" title="Show/hide more details about Dependency Injection" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseDi"> + <h6> + Key Concepts + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Define how long an injected service instance should live: Singleton (one instance for the app), Scoped (one instance per request/scope), Transient (new instance each time requested)."> + Service Lifetimes: + </strong> + Singleton, Scoped, Transient. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The process of adding service types and their implementations to the DI container (IServiceCollection)."> + Service Registration: + </strong> + Adding services to the `IServiceCollection`. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The DI container provides instances of registered services, typically through constructor injection or by resolving from IServiceProvider."> + Service Resolution: + </strong> + Injecting services via constructors or `IServiceProvider`. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Dependency Injection is a standard practice in modern .NET, especially in frameworks like ASP.NET Core."> + Conventions: + </strong> + Widely used in ASP.NET Core and other frameworks. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-libraries" id="card-testing"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-clipboard2-check" data-bs-placement="top" data-bs-toggle="tooltip" title="Testing & QA Icon"> + </i> + Testing + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title=".NET Core 1.0 provided foundational support for testing, which has expanded with frameworks and tools."> + .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Support for unit testing, integration testing, and web application testing using frameworks like MSTest, NUnit, xUnit. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/testing/" rel="noopener noreferrer" target="_blank" title="External link: .NET Testing Documentation"> + .NET Testing Docs + </a> + </p> + <button aria-controls="collapseTesting" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseTesting" data-bs-toggle="tooltip" title="Show/hide more details about .NET Testing" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseTesting"> + <h6> + Frameworks & Tools + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Popular frameworks for writing and running automated tests for individual units of code (methods, classes)."> + Unit Testing: + </strong> + MSTest, NUnit, xUnit. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="WebApplicationFactory (from .NET Core 2.1+) helps create an in-memory test server for ASP.NET Core applications, enabling testing of multiple components together."> + Integration Testing: + </strong> + `WebApplicationFactory` for ASP.NET Core + <span class="version-tag"> + .NET Core 2.1+ + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Integration Testing"> + Integration Testing + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Libraries used to create mock objects (test doubles) that simulate the behavior of real dependencies, isolating the code under test."> + Mocking: + </strong> + Libraries like Moq, NSubstitute. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Tools for discovering and executing tests, such as the 'dotnet test' command-line utility and the Test Explorer in Visual Studio."> + Test Runners: + </strong> + `dotnet test` CLI, Visual Studio Test Explorer. + </li> + </ul> + </div> + </div> + </div> </div> - - <div> - <a href="https://www.linkedin.com/in/davidveksler/" title="External link: David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary" data-bs-toggle="tooltip" data-bs-placement="top"> - <i class="bi bi-linkedin" aria-hidden="true"></i> LinkedIn + <!-- /.row --> + </div> + <!-- /.schema-container --> + <!-- V. TOOLING & ECOSYSTEM --> + <div class="schema-container section-tooling" data-section-id="section-tooling-eco" data-section-name="Tooling"> + <h2 class="section-title" id="section-tooling-eco-title"> + Tooling & Ecosystem + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-tooling" id="card-ides"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-laptop" data-bs-placement="top" data-bs-toggle="tooltip" title="Development Environment Icon"> + </i> + IDEs & Editors + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Integrated Development Environments and code editors for .NET. + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Microsoft's flagship Integrated Development Environment for .NET and other languages, offering comprehensive tools for coding, debugging, testing, and deployment."> + Visual Studio + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A lightweight, cross-platform source code editor developed by Microsoft, highly extensible with excellent .NET support via extensions like C# Dev Kit."> + VS Code + </span> + , and + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A cross-platform .NET IDE from JetBrains, known for its intelligent code analysis, refactoring capabilities, and performance."> + JetBrains Rider + </span> + are prominent. + </p> + <button aria-controls="collapseIdes" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseIdes" data-bs-toggle="tooltip" title="Show/hide more details about IDEs & Editors" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseIdes"> + <h6> + Popular Choices + </h6> + <ul> + <li> + <strong> + Visual Studio: + </strong> + Full-featured IDE for Windows, also available for Mac (with MAUI/Xamarin focus). Extensive debugging, profiling, and project management. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://visualstudio.microsoft.com/" rel="noopener noreferrer" target="_blank" title="External link: Visual Studio Official Page"> + Visual Studio + </a> + </li> + <li> + <strong> + Visual Studio Code (VS Code): + </strong> + Lightweight, extensible code editor with excellent .NET support via C# Dev Kit and other extensions. Cross-platform. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://code.visualstudio.com/" rel="noopener noreferrer" target="_blank" title="External link: Visual Studio Code Official Page"> + VS Code + </a> + </li> + <li> + <strong> + JetBrains Rider: + </strong> + Cross-platform .NET IDE known for its powerful code analysis, refactoring tools, and performance. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://www.jetbrains.com/rider/" rel="noopener noreferrer" target="_blank" title="External link: JetBrains Rider Official Page"> + Rider + </a> + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-tooling" id="card-nuget"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-box" data-bs-placement="top" data-bs-toggle="tooltip" title="Package Manager Icon"> + </i> + NuGet + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + The package manager for .NET. Allows developers to create, share, and consume reusable libraries (packages). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/nuget/" rel="noopener noreferrer" target="_blank" title="External link: NuGet Documentation"> + NuGet Docs + </a> + </p> + <button aria-controls="collapseNuget" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseNuget" data-bs-toggle="tooltip" title="Show/hide more details about NuGet" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseNuget"> + <h6> + Key Aspects + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="The primary public repository for NuGet packages, hosting a vast collection of open-source and commercial libraries."> + `nuget.org`: + </strong> + The central public repository for NuGet packages. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://www.nuget.org/" rel="noopener noreferrer" target="_blank" title="External link: nuget.org Official Site"> + nuget.org + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="NuGet packages can be managed (added, updated, removed) using the .NET CLI, Visual Studio's UI, or the Package Manager Console."> + Package Management: + </strong> + Via .NET CLI (`dotnet add package`), Visual Studio UI, or Package Manager Console. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="NuGet provides tools and specifications for developers to package their own libraries into shareable .nupkg files."> + Package Creation: + </strong> + Tools for packaging libraries for distribution. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="NuGet automatically handles dependencies between packages, ensuring that all required libraries (and their versions) are correctly installed."> + Dependency Resolution: + </strong> + Manages transitive dependencies. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-tooling" id="card-source-control"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-git" data-bs-placement="top" data-bs-toggle="tooltip" title="Git Version Control Icon"> + </i> + Source Control + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A distributed version control system widely used for tracking changes in source code during software development."> + Git + </span> + is the de facto standard for version control. Platforms like + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A web-based hosting service for version control using Git, popular for open-source projects and private repositories, offering collaboration features."> + GitHub + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A service within Azure DevOps that provides Git repositories and Team Foundation Version Control (TFVC) for source code management."> + Azure Repos + </span> + , and GitLab provide hosting and collaboration. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://git-scm.com/doc" rel="noopener noreferrer" target="_blank" title="External link: Git Official Documentation"> + Git Docs + </a> + </p> + <button aria-controls="collapseSourceControl" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseSourceControl" data-bs-toggle="tooltip" title="Show/hide more details about Source Control" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseSourceControl"> + <h6> + Key Platforms + </h6> + <ul> + <li> + <strong> + GitHub: + </strong> + Popular for open-source and private projects. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://docs.github.com/" rel="noopener noreferrer" target="_blank" title="External link: GitHub Documentation"> + GitHub Docs + </a> + </li> + <li> + <strong> + Azure Repos: + </strong> + Part of Azure DevOps, offers Git repositories. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/azure/devops/repos/get-started/what-is-repos" rel="noopener noreferrer" target="_blank" title="External link: Azure Repos Documentation"> + Azure Repos + </a> + </li> + </ul> + <p> + Effective branching strategies (e.g., GitFlow, GitHub Flow) and commit practices are crucial. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-tooling" id="card-ci-cd"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-rocket-takeoff" data-bs-placement="top" data-bs-toggle="tooltip" title="CI/CD Pipeline Icon"> + </i> + Build & CI/CD + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Automated build, test, and deployment pipelines using tools like + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="An automation platform integrated with GitHub for building, testing, and deploying code directly from repositories."> + GitHub Actions + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A service in Azure DevOps that enables continuous integration and continuous delivery (CI/CD) for applications."> + Azure Pipelines + </span> + , Jenkins. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/devops/get-started" rel="noopener noreferrer" target="_blank" title="External link: .NET DevOps Get Started Guide"> + .NET DevOps + </a> + </p> + <button aria-controls="collapseCiCd" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseCiCd" data-bs-toggle="tooltip" title="Show/hide more details about Build & CI/CD" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseCiCd"> + <h6> + Popular Tools + </h6> + <ul> + <li> + <strong> + GitHub Actions: + </strong> + Automate workflows directly within GitHub. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://docs.github.com/en/actions" rel="noopener noreferrer" target="_blank" title="External link: GitHub Actions Documentation"> + GitHub Actions Docs + </a> + </li> + <li> + <strong> + Azure Pipelines: + </strong> + CI/CD service within Azure DevOps. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/azure/devops/pipelines/" rel="noopener noreferrer" target="_blank" title="External link: Azure Pipelines Documentation"> + Azure Pipelines Docs + </a> + </li> + </ul> + <p data-bs-placement="top" data-bs-toggle="tooltip" title="MSBuild (Microsoft Build Engine) is the build platform for .NET and Visual Studio, responsible for compiling code and packaging applications."> + MSBuild is the underlying build engine for .NET projects. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-tooling" id="card-diagnostics"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-activity" data-bs-placement="top" data-bs-toggle="tooltip" title="Performance Monitoring Icon"> + </i> + Performance & Diagnostics + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Cross-platform CLI diagnostic tools became prominent with .NET Core 3.0 and later."> + .NET Core 3.0+ (CLI Tools) + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Tools and APIs for profiling, debugging, and monitoring .NET applications. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/" rel="noopener noreferrer" target="_blank" title="External link: .NET Diagnostics Overview"> + Diagnostics Overview + </a> + </p> + <button aria-controls="collapseDiagnostics" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseDiagnostics" data-bs-toggle="tooltip" title="Show/hide more details about Performance & Diagnostics" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseDiagnostics"> + <h6> + Key Tools & Techniques + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Integrated tools in Visual Studio for analyzing application performance, including CPU usage, memory allocation, and event tracing."> + Visual Studio Profiler: + </strong> + CPU usage, memory allocation, performance traces. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/visualstudio/profiling/" rel="noopener noreferrer" target="_blank" title="External link: Visual Studio Profiling Tools"> + VS Profiler + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A suite of command-line tools for .NET diagnostics, including dotnet-trace for collecting traces, dotnet-counters for monitoring performance counters, and dotnet-dump for collecting and analyzing memory dumps."> + `dotnet-trace`, `dotnet-counters`, `dotnet-dump`: + </strong> + Cross-platform CLI diagnostic tools. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/tools-overview" rel="noopener noreferrer" target="_blank" title="External link: .NET CLI Diagnostic Tools Overview"> + CLI Tools + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Powerful debugging environments in Visual Studio and VS Code for inspecting code execution, variables, and call stacks."> + Debugging: + </strong> + Visual Studio Debugger, VS Code Debugger. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="An Application Performance Management (APM) service in Azure for monitoring live web applications, detecting issues, diagnosing crashes, and tracking usage."> + Application Insights: + </strong> + APM service for monitoring live applications. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview" rel="noopener noreferrer" target="_blank" title="External link: Azure Application Insights Overview"> + App Insights + </a> + </li> + </ul> + </div> + </div> + </div> + </div> + </div> + <!-- VI. ADVANCED & ARCHITECTURAL CONCEPTS --> + <div class="schema-container section-advanced" data-section-id="section-advanced-concepts" data-section-name="Advanced Concepts"> + <h2 class="section-title" id="section-advanced-concepts-title"> + Advanced & Architectural Concepts + </h2> + <div class="row"> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-native-aot"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-lightning-charge-fill" data-bs-placement="top" data-bs-toggle="tooltip" title="Native Compilation Icon"> + </i> + Native AOT + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Native Ahead-of-Time compilation was significantly enhanced and promoted starting with .NET 7."> + .NET 7+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Ahead-of-Time (AOT) compilation process that compiles .NET code directly into native machine code during the build process, eliminating the need for JIT compilation at runtime."> + Ahead-of-Time + </span> + compilation that compiles .NET code directly to native machine code for faster startup, smaller deployments, and reduced memory. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" rel="noopener noreferrer" target="_blank" title="External link: Native AOT Deployment Documentation"> + Native AOT Docs + </a> + </p> + <button aria-controls="collapseNativeAot" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseNativeAot" data-bs-toggle="tooltip" title="Show/hide more details about Native AOT" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseNativeAot"> + <h6> + Benefits + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Applications start more quickly because the code is already compiled to native instructions, avoiding the JIT compilation step at launch."> + Faster Startup Time: + </strong> + No JIT compilation needed at runtime. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Native AOT, often combined with trimming, can produce smaller, self-contained executables that include only the necessary code."> + Smaller Deployments: + </strong> + Can produce self-contained executables with only necessary code (trimming). + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Native AOT applications typically use less memory as they don't require the JIT compiler or extensive metadata at runtime."> + Reduced Memory Footprint: + </strong> + Less overhead compared to JIT-compiled applications. + </li> + </ul> + <h6> + Trade-offs & Considerations + </h6> + <ul> + <li> + <strong> + Longer Build Times: + </strong> + AOT compilation is more time-consuming. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Some dynamic C# features like reflection, or dependencies that rely heavily on it, may have limitations or require specific configurations to work with trimming and Native AOT."> + Reflection Limitations: + </strong> + Dynamic features like reflection might require workarounds or be limited. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/prepare-libraries-for-trimming" rel="noopener noreferrer" target="_blank" title="External link: Prepare .NET libraries for trimming"> + Trimming/Reflection + </a> + </li> + <li> + <strong> + Platform Specificity: + </strong> + Output is native to the target platform. + </li> + </ul> + <h6> + Use Cases + </h6> + <p> + Serverless functions, CLI tools, containerized applications, scenarios where startup performance and deployment size are critical. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-modularity"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-puzzle" data-bs-placement="top" data-bs-toggle="tooltip" title="Modular Design Icon"> + </i> + Modularity & Libraries + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title=".NET Standard was introduced to facilitate library sharing across .NET Framework and .NET Core/modern .NET."> + .NET Standard 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Designing systems with well-defined + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Reusable units of code (typically DLLs) that encapsulate specific functionalities and can be shared across multiple projects or applications."> + class libraries + </span> + and understanding + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="A formal specification of .NET APIs that are intended to be available on all .NET implementations. Used for creating libraries portable across different .NET runtimes (e.g., .NET Framework, .NET Core)."> + .NET Standard + </span> + (for older library compatibility). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/class-libraries" rel="noopener noreferrer" target="_blank" title="External link: .NET Class Libraries Overview"> + Class Libraries + </a> + </p> + <button aria-controls="collapseModularity" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseModularity" data-bs-toggle="tooltip" title="Show/hide more details about Modularity & Libraries" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseModularity"> + <h6> + Key Concepts + </h6> + <ul> + <li> + <strong> + Class Libraries: + </strong> + Package reusable code into DLLs. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title=".NET Standard is a specification of APIs. Libraries targeting a .NET Standard version can be used by any .NET implementation (like .NET Framework, .NET Core, Mono/Xamarin) that supports that version or higher. It's less critical for new libraries targeting only modern .NET."> + .NET Standard (Legacy): + </strong> + A formal specification of .NET APIs intended to be available on all .NET implementations. Useful for libraries targeting multiple .NET runtimes (e.g., .NET Framework and .NET Core). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/net-standard" rel="noopener noreferrer" target="_blank" title="External link: .NET Standard Documentation"> + .NET Standard Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="For libraries intended only for modern .NET (e.g., .NET 6, .NET 7, .NET 8, .NET 9), targeting a specific .NET version (e.g., 'net9.0') is the recommended approach, providing access to the latest APIs."> + Modern .NET Targeting: + </strong> + For new libraries, targeting `netX.Y` (e.g., `net9.0`) is often sufficient. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-interop"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-link-45deg" data-bs-placement="top" data-bs-toggle="tooltip" title="Interoperability Icon"> + </i> + Interoperability + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Interoperability features have been part of .NET since its inception, allowing interaction with native code."> + .NET Fx 1.0+ | .NET Core 1.0+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Interacting with non-.NET code, such as native C/C++ libraries ( + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Platform Invocation Services: A technology that enables managed .NET code to call unmanaged functions implemented in native DLLs (e.g., Win32 API, custom C/C++ libraries)."> + P/Invoke + </span> + ) or COM components. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/" rel="noopener noreferrer" target="_blank" title="External link: .NET Native Interoperability"> + Native Interop + </a> + </p> + <button aria-controls="collapseInterop" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseInterop" data-bs-toggle="tooltip" title="Show/hide more details about Interoperability" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseInterop"> + <h6> + Mechanisms + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Allows managed .NET code to call functions residing in unmanaged (native) DLLs."> + Platform Invoke (P/Invoke): + </strong> + Call functions in unmanaged DLLs. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke" rel="noopener noreferrer" target="_blank" title="External link: P/Invoke Documentation"> + P/Invoke Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Enables .NET applications to use COM components and expose .NET components to COM clients."> + COM Interop: + </strong> + Interact with Component Object Model components. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/cominterop" rel="noopener noreferrer" target="_blank" title="External link: COM Interoperability Documentation"> + COM Interop Docs + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="A set of language extensions for C++ that allows mixing managed (.NET) and unmanaged C++ code, primarily for Windows development."> + C++/CLI: + </strong> + For tighter integration with C++ code (Windows-specific). + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-source-generators"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-magic" data-bs-placement="top" data-bs-toggle="tooltip" title="Code Generation Icon"> + </i> + Source Generators + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title="Source Generators were introduced with C# 9 and the .NET 5 SDK, leveraging the Roslyn compiler."> + C# 9+ + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + A Roslyn compiler feature that lets C# developers inspect user code and generate new C# source files during compilation. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/source-generators-overview" rel="noopener noreferrer" target="_blank" title="External link: Source Generators Overview"> + Source Generators Docs + </a> + </p> + <button aria-controls="collapseSourceGenerators" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseSourceGenerators" data-bs-toggle="tooltip" title="Show/hide more details about Source Generators" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseSourceGenerators"> + <h6> + Purpose + </h6> + <p> + Automate boilerplate code, improve performance by avoiding runtime reflection, and enforce coding conventions. + </p> + <h6> + Use Cases + </h6> + <ul> + <li> + <strong> + INotifyPropertyChanged Implementation: + </strong> + Auto-generate property change notifications. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Source generators can create optimized code for serializing and deserializing objects (e.g., for JSON), improving performance compared to reflection-based approaches."> + Serialization Helpers: + </strong> + Generate optimized serialization/deserialization code (e.g., System.Text.Json). + </li> + <li> + <strong> + Builder Pattern Generation: + </strong> + Create fluent builder APIs. + </li> + </ul> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-observability"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-graph-up-arrow" data-bs-placement="top" data-bs-toggle="tooltip" title="System Monitoring Icon"> + </i> + Observability + <span class="version-tag" data-bs-placement="top" data-bs-toggle="tooltip" title=".NET 5 introduced dedicated APIs for metrics and tracing, enhancing observability capabilities, often integrated with OpenTelemetry."> + .NET 5+ (Metrics/Tracing APIs) + </span> + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Designing systems to provide insights into their behavior through + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Recording discrete events, errors, and informational messages from an application."> + logging, metrics, and tracing + </span> + . Often using + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="An open-source observability framework for instrumenting, generating, collecting, and exporting telemetry data (metrics, logs, and traces)."> + OpenTelemetry + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/observability-with-otel" rel="noopener noreferrer" target="_blank" title="External link: Observability with OpenTelemetry in .NET"> + OpenTelemetry with .NET + </a> + </p> + <button aria-controls="collapseObservability" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseObservability" data-bs-toggle="tooltip" title="Show/hide more details about Observability" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseObservability"> + <h6> + Three Pillars of Observability + </h6> + <ul> + <li> + <strong> + Logging: + </strong> + Capturing discrete events and errors. (Covered in Key Libraries) + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Collecting and aggregating numerical data that measures system performance and behavior over time (e.g., request counts, error rates, durations)."> + Metrics: + </strong> + Aggregated numerical data about system performance (e.g., request rates, error counts). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/metrics" rel="noopener noreferrer" target="_blank" title="External link: .NET Metrics Documentation"> + .NET Metrics + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Tracking the flow of a single request or operation as it passes through multiple services or components in a distributed system."> + Distributed Tracing: + </strong> + Tracking requests as they flow through multiple services. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing" rel="noopener noreferrer" target="_blank" title="External link: .NET Distributed Tracing"> + Distributed Tracing + </a> + </li> + </ul> + <p> + OpenTelemetry is an open-source standard for collecting and exporting telemetry data. + </p> + </div> + </div> + </div> + <div class="col-lg-4 col-md-6"> + <div class="info-card card-advanced" id="card-api-design"> + <div class="card-body"> + <h5> + <i aria-hidden="true" class="bi bi-bricks" data-bs-placement="top" data-bs-toggle="tooltip" title="API Architecture Icon"> + </i> + API Design + </h5> + <div class="card-content-wrapper"> + <p class="summary"> + Principles for designing robust, maintainable, and usable APIs, especially for + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Web services that adhere to REST (Representational State Transfer) architectural constraints, typically using HTTP methods (GET, POST, PUT, DELETE) and standard status codes."> + RESTful web services + </span> + . + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/best-practices" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Best Practices"> + ASP.NET Core Best Practices + </a> + </p> + <button aria-controls="collapseApiDesign" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-placement="top" data-bs-target="#collapseApiDesign" data-bs-toggle="tooltip" title="Show/hide more details about API Design" type="button"> + Details + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseApiDesign"> + <h6> + Key Considerations + </h6> + <ul> + <li> + <strong> + Consistency: + </strong> + Naming conventions, URL structure, request/response formats. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Implementing strategies (e.g., URL versioning, header versioning) to manage changes to an API over time without breaking existing client applications."> + Versioning: + </strong> + Strategies for evolving APIs without breaking clients. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/web-api/versioning" rel="noopener noreferrer" target="_blank" title="External link: API Versioning in ASP.NET Core"> + API Versioning + </a> + </li> + <li> + <strong> + Error Handling: + </strong> + Clear and consistent error responses. + </li> + <li> + <strong> + Security: + </strong> + Authentication, authorization, input validation. + </li> + <li> + <strong> + Performance: + </strong> + Caching, pagination, efficient data retrieval. + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Describing API endpoints, request/response formats, and authentication methods using standards like OpenAPI (formerly Swagger) to facilitate understanding and integration."> + Documentation: + </strong> + Using tools like Swagger/OpenAPI. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle" rel="noopener noreferrer" target="_blank" title="External link: Swagger/OpenAPI with Swashbuckle in ASP.NET Core"> + Swagger/OpenAPI + </a> + </li> + </ul> + </div> + </div> + </div> + </div> + </div> + <!-- VII. KEY CONSIDERATIONS FOR ARCHITECTS --> + <div class="schema-container section-general" data-section-id="section-arch-considerations" data-section-name="Architecture"> + <h2 class="section-title" id="section-arch-considerations-title"> + Key Considerations for Architects + </h2> + <div class="row"> + <div class="col-12"> + <div class="info-card card-general" id="card-arch-summary"> + <div class="card-body"> + <h5 class="text-center"> + <i aria-hidden="true" class="bi bi-building-gear" data-bs-placement="top" data-bs-toggle="tooltip" title="Architectural Planning Icon"> + </i> + Architectural Decision Points + </h5> + <div class="card-content-wrapper"> + <p class="summary text-center"> + When designing .NET systems, architects must weigh + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="The ability of a system to handle increasing amounts of load or work."> + scalability + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="The ability of a system to withstand failures and continue operating, often involving redundancy and fault tolerance mechanisms."> + resilience + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Protecting the system and its data from unauthorized access, use, disclosure, alteration, or destruction."> + security + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="The ease with which a system can be modified, repaired, and enhanced over its lifecycle."> + maintainability + </span> + , + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="The processes and tools used to package, distribute, and run the application in various environments (development, staging, production)."> + deployment strategies + </span> + , and + <span class="term" data-bs-placement="top" data-bs-toggle="tooltip" title="Managing and reducing the financial costs associated with developing, deploying, and operating the system."> + cost optimization + </span> + . Choosing the right application models and libraries is crucial. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/" rel="noopener noreferrer" target="_blank" title="External link: .NET Architecture Guides for Modern Web Apps on Azure"> + .NET Architecture Guides + </a> + </p> + <button aria-controls="collapseArchConsiderations" aria-expanded="false" class="btn btn-sm details-toggle mx-auto" data-bs-placement="top" data-bs-target="#collapseArchConsiderations" data-bs-toggle="tooltip" title="Show/hide more details about Architectural Considerations" type="button"> + Explore Further + <i aria-hidden="true" class="bi bi-chevron-down"> + </i> + </button> + </div> + </div> + <div class="collapse collapse-content" id="collapseArchConsiderations"> + <h6> + Core Tenets + </h6> + <ul> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Designing systems to handle growth in users, data, or transaction volume, often by using patterns like microservices, load balancing, and distributed caching."> + Scalability: + </strong> + Design for growth. Consider patterns like microservices, load balancing, and caching. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/architecture/microservices/" rel="noopener noreferrer" target="_blank" title="External link: .NET Microservices Architecture Guide"> + Microservices Architecture + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Building applications that can gracefully handle failures and continue functioning, using techniques like retries, circuit breakers (e.g., with Polly), and health checks."> + Resilience & Fault Tolerance: + </strong> + Implement patterns like retries, circuit breakers (e.g., using + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://github.com/App-vNext/Polly" rel="noopener noreferrer" target="_blank" title="External link: Polly Resilience Framework"> + Polly + </a> + ), and health checks. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/resilience/" rel="noopener noreferrer" target="_blank" title="External link: Resilient Cloud-Native Applications Guide"> + Resilient Apps + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Integrating security considerations and practices into every phase of the software development lifecycle, from design to deployment and operation."> + Security by Design: + </strong> + Incorporate security throughout the lifecycle. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/aspnet/core/security/" rel="noopener noreferrer" target="_blank" title="External link: ASP.NET Core Security Documentation"> + ASP.NET Core Security + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Writing clean, well-structured, and modular code that is easy to understand, modify, and test. Using practices like Dependency Injection and comprehensive testing."> + Maintainability & Testability: + </strong> + Clean, modular code. Employ DI, unit/integration tests. + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/core/testing/" rel="noopener noreferrer" target="_blank" title="External link: .NET Testing Documentation"> + .NET Testing + </a> + </li> + <li> + <strong data-bs-placement="top" data-bs-toggle="tooltip" title="Choosing appropriate methods and platforms for deploying applications, such as containerization (Docker, Kubernetes), serverless computing (Azure Functions), or Platform-as-a-Service (Azure App Service)."> + Deployment Strategies: + </strong> + Containers (Docker, Kubernetes), serverless (Azure Functions), PaaS (Azure App Service). + <a data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/architecture/host-deploy/" rel="noopener noreferrer" target="_blank" title="External link: .NET Hosting and Deployment Guide"> + Hosting & Deployment + </a> + </li> + <li> + <strong> + Cost Optimization: + </strong> + Monitor resource usage, choose appropriate service tiers, and optimize for efficiency. + </li> + <li> + <strong> + Observability: + </strong> + Implement robust logging, metrics, and tracing. (Covered in Advanced Concepts) + </li> + </ul> + <p> + The choice of .NET frameworks and libraries should align with these architectural goals and the specific requirements of the project. + </p> + </div> + </div> + </div> + </div> + <!-- /.row --> + </div> + <!-- /.schema-container --> + </div> + <!-- /container#main-container --> + <footer class="container text-center pb-3"> + <p class="mb-1"> + © + <span id="currentYear"> + </span> + David Veksler Cheatsheets + </p> + <p class="mb-2" style="font-size: 0.8em;"> + Last Updated: + <span id="lastUpdatedDate"> + May 10, 2025 + </span> + </p> + <div> + <a class="mx-2 link-secondary" data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/" rel="noopener noreferrer" target="_blank" title="External link: Official .NET Documentation"> + <i aria-hidden="true" class="bi bi-book"> + </i> + .NET Docs </a> - <a href="https://cheatsheets.davidveksler.com/" title="External link: Browse All Cheatsheets by David Veksler" class="mx-2 link-secondary" data-bs-toggle="tooltip" data-bs-placement="top"> - <i class="bi bi-collection" aria-hidden="true"></i> All Cheatsheets + <a class="mx-2 link-secondary" data-bs-placement="top" data-bs-toggle="tooltip" href="https://learn.microsoft.com/en-us/dotnet/csharp/" rel="noopener noreferrer" target="_blank" title="External link: Official C# Documentation"> + <i aria-hidden="true" class="bi bi-filetype-cs"> + </i> + C# Docs </a> - </div> -</footer> - -<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> -<script> -document.addEventListener('DOMContentLoaded', () => { + <a class="mx-2 link-secondary" data-bs-placement="top" data-bs-toggle="tooltip" href="https://dotnet.microsoft.com/en-us/learn/architecture" rel="noopener noreferrer" target="_blank" title="External link: .NET Architecture Center"> + <i aria-hidden="true" class="bi bi-diagram-2"> + </i> + .NET Architecture Center + </a> + </div> + <div> + <a class="mx-2 link-secondary" data-bs-placement="top" data-bs-toggle="tooltip" href="https://www.linkedin.com/in/davidveksler/" rel="noopener noreferrer" target="_blank" title="External link: David Veksler on LinkedIn"> + <i aria-hidden="true" class="bi bi-linkedin"> + </i> + LinkedIn + </a> + <a class="mx-2 link-secondary" data-bs-placement="top" data-bs-toggle="tooltip" href="https://cheatsheets.davidveksler.com/" title="External link: Browse All Cheatsheets by David Veksler"> + <i aria-hidden="true" class="bi bi-collection"> + </i> + All Cheatsheets + </a> + </div> + </footer> + <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"> + </script> + <script> + document.addEventListener('DOMContentLoaded', () => { const mainContainer = document.getElementById('main-container'); const searchBox = document.getElementById('search-box'); const categoryFiltersContainer = document.getElementById('category-filters'); @@ -1588,6 +3510,6 @@ document.addEventListener('DOMContentLoaded', () => { initializeFiltersAndSearch(); // Initialize search and filters applyFiltersAndSearch(); // Apply initial filter (All) }); -</script> -</body> -</html> \ No newline at end of file + </script> + </body> +</html>