Backend Technology Stack¶
General¶
- ASP.NET Core Documentation: The official ASP.NET Core documentation site.
- .NET Core Documentation: Home of the technical documentation for .NET Core, C#, F#, and Visual Basic, including getting started instructions, tutorials, and samples.
- .NET Core SDK: A general-purpose development platform maintained by Microsoft and the .NET community.
- .NET Platform Standard: Explanation of the differences between old and new .NET versions.
- Dotnet Core Extensions: Libraries to create production-ready applications, initially developed for services like Microsoft Teams.
Frameworks, Libraries, and Tools¶
Extensions to the .NET Runtime Libraries¶
Logging¶
- Microsoft.Extensions.Logging: .NET supports high performance, structured logging via the ILogger API to help monitor application behavior and diagnose issues. Logs can be written to different destinations by configuring different logging providers. Basic logging providers are built-in and there are many third-party providers available as well.
- Microsoft.Extensions.Logging.Abstractions:
Microsoft.Extensions.Logging.Abstractionsprovides abstractions of logging. Interfaces defined in this package are implemented by classes inMicrosoft.Extensions.Loggingand other logging packages. - Microsoft.Extensions.Logging.Console:
Microsoft.Extensions.Logging.Consoleprovides a Console logger provider implementation forMicrosoft.Extensions.Logging. - Microsoft.Extensions.Logging.Debug:
Microsoft.Extensions.Logging.Debugprovides a Debug output logger provider implementation forMicrosoft.Extensions.Logging. - Microsoft.Extensions.Logging.EventSource: EventSource/EventListener logger provider implementation for
Microsoft.Extensions.Logging. - Microsoft.Extensions.Logging.ApplicationInsights:
ILoggeradapter to integrate with Azure Application Insights.
- Microsoft.Extensions.Logging.Abstractions:
Configuration¶
- Microsoft.Extensions.Configuration: .NET supports the concept of configuration builders, which are responsible for creating configuration key-value pairs from a given source. Configuration providers are responsible for reading configuration key-value pairs from their source and loading them into configuration builders.
- Microsoft.Extensions.Configuration.Abstractions: Provides the core configuration interfaces and types.
- Microsoft.Extensions.Configuration.FileExtensions: Provides a base class for file-based configuration providers used with
Microsoft.Extensions.Configurationand extension methods for configuring them. - Microsoft.Extensions.Configuration.Json: JSON configuration provider implementation for
Microsoft.Extensions.Configuration. - Microsoft.Extensions.Configuration.EnvironmentVariables: Environment variables configuration provider implementation for
Microsoft.Extensions.Configuration. This package enables you to read configuration parameters from environment variables. - Microsoft.Extensions.Configuration.CommandLine: Command-line configuration provider implementation for
Microsoft.Extensions.Configuration. This package enables you to read configuration parameters from the command line. - Microsoft.Extensions.Configuration.AzureAppConfiguration: Centralized configuration management using Azure App Configuration.
- Microsoft.Azure.AppConfiguration.AspNetCore: -
Microsoft.Azure.AppConfiguration.AspNetCoreallows developers to useMicrosoft Azure App Configurationservice as a configuration source in their applications. This package adds additional features for ASP.NET Core applications to the existing packageMicrosoft.Extensions.Configuration.AzureAppConfiguration. - Microsoft.Extensions.Configuration.UserSecrets: User secrets configuration provider implementation for
Microsoft.Extensions.Configuration. This package enables you to store sensitive data during development. - Azure.Security.KeyVault.Secrets: -
Azure.Security.KeyVault.Secretsprovides a client library for interacting with the Key Vault service and use as configuration provider.
Options¶
- Microsoft.Extensions.Options: .NET supports the concept of options pattern, which is a way to configure an object graph from configuration sources. The options pattern uses classes to represent a group of related settings. These classes are named options classes and are typically named with the suffix
Options.- Microsoft.Extensions.Options.DataAnnotations: DataAnnotations validation support for
Microsoft.Extensions.Options.
- Microsoft.Extensions.Options.DataAnnotations: DataAnnotations validation support for
File Providers¶
- Microsoft.Extensions.FileSystemGlobbing: This assembly provides support for matching file system names/paths using glob patterns.
Dependency Injection (DI)¶
- Microsoft.Extensions.DependencyInjection: Dependency Injection (DI) design pattern in .NET.
- Microsoft.Extensions.DependencyInjection.Abstractions: Provides abstractions for dependency injection.
- Microsoft.Extensions.DependencyInjection.AutoActivation: Instantiates singletons during startup.
Artificial Intelligence¶
- OpenAI .NET API Library: Access OpenAI's REST API from .NET applications.
- Azure.AI.OpenAI: The Azure OpenAI client library for .NET is a companion to the official OpenAI client library for .NET. The Azure OpenAI library configures a client for use with Azure OpenAI and provides additional strongly typed extension support for request and response models specific to Azure OpenAI scenarios.
- Microsoft.SemanticKernel: Semantic Kernel core orchestration, runtime and functions. This package is automatically installed by
Microsoft.SemanticKernelpackage with other useful packages. Install this package manually only if you are selecting individual Semantic Kernel components.- Microsoft.SemanticKernel.Abstractions: Semantic Kernel interfaces and abstractions. This package is automatically installed by Semantic Kernel packages if needed.
- Microsoft.SemanticKernel.Core: Semantic Kernel core orchestration, runtime and functions. This package is automatically installed by
Microsoft.SemanticKernelpackage with other useful packages. Install this package manually only if you are selecting individual Semantic Kernel components. - Microsoft.SemanticKernel.Plugins.Core: Semantic Kernel core plug-ins.
- Microsoft.SemanticKernel.Plugins.OpenApi: Semantic Kernel OpenAPI plug-ins.
- Microsoft.SemanticKernel.Plugins.Web: Semantic Kernel web plug-ins: search the web, download files, etc.
- Microsoft.SemanticKernel.Plugins.MsGraph: Semantic Kernel Microsoft Graph plug-ins: access your tenant data, schedule meetings, send emails, etc.
- Microsoft.SemanticKernel.Plugins.Document: Semantic Kernel memory plug-ins.
- Microsoft.SemanticKernel.Plugins.Grpc: Semantic Kernel gRPC plug-ins.
- Microsoft.SemanticKernel.Plugins.Memory: Semantic Kernel memory plug-ins: store and retrieve data.
- Microsoft.SemanticKernel.Connectors.OpenAI: Semantic Kernel connectors for OpenAI. Contains clients for chat completion, embedding and DALL-E text to image.
- Microsoft.SemanticKernel.Connectors.AzureOpenAI: Semantic Kernel connectors for Azure OpenAI. Contains clients for chat completion, embedding and DALL-E text to image.
- Microsoft.SemanticKernel.Connectors.AzureAISearch: Azure AI Search Semantic Memory connector for Semantic Kernel.
- Microsoft.SemanticKernel.Connectors.HuggingFace: Semantic Kernel connectors for Hugging Face. Contains clients for hugging face models.
- Microsoft.SemanticKernel.Connectors.AzureAIInference: Azure AI Inference connector for Semantic Kernel. This connector is specially designed on top of the published Azure AI Inference SDK and is targeted to allow easy access to a comprehensive suite of AI models in the Azure AI Model Catalog for inferencing for use in your Semantic Kernel projects.
- Microsoft.SemanticKernel.Connectors.Ollama: Ollama connector for Semantic Kernel. This connector is specially designed to allow easy access to a comprehensive suite of AI models in the Ollama Model Catalog for inferencing for use in your Semantic Kernel projects.
- Microsoft.SemanticKernel.Connectors.Google: Semantic Kernel Google AI connector for Google models (e.g., Gemini).
- Microsoft.SemanticKernel.Connectors.SqlServer: Semantic Kernel SQL Server connector for Semantic Kernel.
- Microsoft.SemanticKernel.Yaml: Provides support for serializing prompts using YAML files.
- Microsoft.SemanticKernel.PromptTemplates.Handlebars: Enables the use of Handlebars templates for prompts.
- Microsoft.SemanticKernel.Markdown: Provides support for Markdown prompts.
- Microsoft.SemanticKernel.Agents.Abstractions: Provides abstractions for creating agents.
- Microsoft.SemanticKernel.Agents.Core: Provides core functionality for agents.
- Microsoft.SemanticKernel.Agents.OpenAI: Provides support for Assistant API agents.
- Microsoft.SemanticKernel.Planners.Handlebars: Semantic Kernel Handlebars planner.
- Microsoft.SemanticKernel.Planners.OpenAI: Semantic Kernel OpenAI planner.
API¶
- Swashbuckle: Seamlessly adds a swagger to WebApi/grpc projects.
- Swashbuckle.AspNetCore.Swagger: Middleware to expose Swagger JSON endpoints from APIs built on ASP.NET Core.
- Swashbuckle.AspNetCore.SwaggerGen: Swagger Generator for APIs built on ASP.NET Core.
- Swashbuckle.AspNetCore.SwaggerUI: Middleware to expose an embedded version of the swagger-ui from an ASP.NET Core application.
- Swashbuckle.AspNetCore.Annotations: Enrich generated Swagger using custom attributes.
- Microsoft.Extensions.ApiDescription.Server: MSBuild tasks and targets for build-time Swagger and OpenApi document generation.
- Microsoft.AspNetCore.HeaderPropagation: ASP.NET Core middleware to propagate HTTP headers from the incoming request to the outgoing HTTP client requests.
Application Frameworks¶
MassTransit¶
- MassTransit: A developer-focused platform for building distributed applications without complexity. Key NuGet packages:
- MassTransit.Abstractions:
MassTransit.Abstractionsprovides the core interfaces and types for MassTransit. - Transports: MassTransit supports a variety of message transports, including RabbitMQ, Azure Service Bus, Amazon SQS, and more.
- MassTransit.RabbitMQ: RabbitMQ transport support.
- MassTransit.Azure.ServiceBus.Core: Azure Service Bus transport support.
- MassTransit.SqlTransport.SqlServer:
MassTransit.SqlTransport.SqlServerprovides a SQL Server transport for MassTransit.
- Persistence: MassTransit supports a variety of persistence stores, including In-Memory, MongoDB, Entity Framework, and more.
- MassTransit.EntityFrameworkCore:
MassTransit.EntityFrameworkCoreprovides an Entity Framework Core persistence for MassTransit. - MassTransit.MongoDb:
MassTransit.MongoDbprovides a MongoDB persistence for MassTransit. - MassTransit.Azure.Cosmos:
MassTransit.Azure.Cosmosprovides an Azure Cosmos persistence for MassTransit. - MassTransit.NHibernate:
MassTransit.NHibernateprovides an NHibernate persistence for MassTransit.
- MassTransit.EntityFrameworkCore:
- Riders: MassTransit supports a variety of riders, including Kafka and Azure Event Hub.
- MassTransit.Kafka: Kafka is supported as a Rider, and supports consuming and producing messages from/to Kafka topics. The Confluent .NET client is used, and has been tested with the community edition (running in Docker).
- MassTransit.EventHub: Azure Event Hub is supported as a Rider, and supports consuming and producing messages from/to Event Hub.
- MassTransit.TestFramework:
MassTransit.TestFrameworkprovides a testing framework for MassTransit. The MassTransit Test Harness is a framework for extending your existing IOC registrations with a testable bus instance.
- MassTransit.Abstractions:
gRPC¶
- gRPC for .NET: Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.
- Grpc.Tools: gRPC and Protocol Buffer compiler for C# projects.
- Grpc.AspnetCore.Server: gRPC server library for .NET (gRPC support for ASP.NET Core).
- Grpc.AspNetCore.Server.Reflection: Automatic discovery of services contracts for
Grpc.Reflection. - Grpc.AspNetCore.Web:
Grpc.AspNetCore.Webprovides middleware that enables ASP.NET Core gRPC services to accept gRPC-Web calls. - Grpc.Reflection:
Grpc.Reflectioncontains the reference implementation of gRPC reflection service (gRPC C# Server Reflection). - Grpc.StatusProto: This is a prototype NuGet package providing C# and .NET client and server side support for the gRPC richer error model.
- Grpc.Net.Client: gRPC client library for .NET.
- Grpc.Net.ClientFactory: gRPC integration with HttpClientFactory offers a centralized way to create gRPC clients. It can be used as an alternative to configuring stand-alone gRPC client instances.
- Grpc.HealthCheck:
Grpc.HealthCheckcontains the reference implementation of gRPC health check service. - ServiceModel.Grpc:
ServiceModel.Grpcenables applications to communicate with gRPC services using a code-first approach (no .proto files), helps to get around limitations of gRPC protocol like "only reference types", "exact one input", "no nulls", "no value-types". Provides exception handling. Helps to migrate existing WCF solution to gRPC with minimum effort. - ServiceModel.Grpc.AspNetCore:
ServiceModel.Grpc.AspNetCoreextensions. - ServiceModel.Grpc.AspNetCore.Swashbuckle: Swagger integration, based on
Swashbuckle.AspNetCore.
WCF Core¶
- CoreWCF: A port of Windows Communication Foundation to .NET Core.
- WCF - Windows Communication Foundation Client Libraries: Key NuGet packages:
- System.ServiceModel.Primitives: Provides the common types used by all of the WCF libraries.
- System.ServiceModel.Http: Provides the types that permit SOAP messages to be exchanged using Http (example: BasicHttpBinding).
- System.ServiceModel.NetTcp: The
System.ServiceModel.NetTcpprovides the types that permit SOAP messages to be exchanged using TCP (example: NetTcpBinding). - System.ServiceModel.Federation: Provides the types that allow security communications with SOAP messages using WS-Federation.
- System.ServiceModel.NetNamedPipe: Provides the types that permit SOAP messages to be exchanged using TCP (example: NetTcpBinding).
Authentication and Authorization¶
- OpenIddict: OpenID Connect server for .NET Core - versatile OpenID Connect stack for .NET.
- OpenIddict.Core: OpenIddict's core components, used to manage the applications, authorizations, scopes and tokens stored in the database.
- OpenIddict.Abstractions Abstractions and primitives used by the OpenIddict components.
- OpenIddict.AspNetCore Versatile OpenID Connect stack for ASP.NET Core.
- OpenIddict.Server.AspNetCore: ASP.NET Core integration package for the OpenIddict server services.
- OpenIddict.Validation.AspNetCore ASP.NET Core integration package for the OpenIddict validation services.
- OpenIddict.Client.AspNetCore ASP.NET Core integration package for the OpenIddict client services.
- AspNetCore.Authentication.ApiKey: Lightweight API key authentication for ASP.NET Core.
Caching¶
- Microsoft.Extensions.Caching.Abstractions: Provides interfaces to create and use in-memory and distributed caching. Key NuGet packages:
- Microsoft.Extensions.Caching.Memory: In-memory caching implementation.
- Microsoft.Extensions.Caching.StackExchangeRedis: Distributed cache using Redis.
- Microsoft.Extensions.Caching.SqlServer: Distributed cache using Microsoft SQL Server.
Code Analysis¶
- awesome-static-analysis: A curated list of static analysis tools, linters, and code quality checkers for various programming languages.
- StyleCop.Analyzers: Implements StyleCop rules using the .NET Compiler Platform (Roslyn).
- SonarAnalyzer.CSharp: Enables static analysis for C# and VB.NET in SonarQube, SonarCloud, and SonarLint.
- AsyncFixer: Identifies and corrects common async/await anti-patterns.
- Meziantou.Analyzer: Enforces good practices in C# related to design, performance, and security.
- Microsoft.VisualStudio.Threading.Analyzers: Analyzes threading and async usage to detect common mistakes.
Code Coverage¶
- coverlet: A cross-platform code coverage library for .NET Core, supporting integration with build and CI tools.
Compression¶
- System.IO.Compression: Native .NET library for handling compressed files (e.g., ZIP).
- SharpCompress: A fully managed library for working with various archive formats (e.g., ZIP, RAR, TAR).
Compilers, Transpilers, and Languages¶
- Roslyn: The .NET Compiler Platform providing C# and Visual Basic compilers along with rich code analysis APIs.
CRM¶
- SalesForce Integration: Explore options for integrating Salesforce with .NET applications, including REST API and event-based mechanisms.
- NetCoreForce: A Salesforce REST API toolkit and wrapper for .NET Core.
Exception Handling¶
- Error Handling in ASP.NET Core: Official guidelines for handling errors in ASP.NET Core Web APIs.
- Hellang.Middleware.ProblemDetails: Middleware for standardized problem details responses using RFC7807.
Databases¶
Drivers¶
- MongoDB.Driver: Official MongoDB .NET Driver with BSON serialization support.
- MongoDB.Bson: Library for BSON serialization and deserialization.
Migrations¶
- FluentMigrator: A migration framework for .NET, allowing fluent syntax for database schema changes.
- MongoDBMigrations: A library for handling migrations in MongoDB with fluent syntax and CI/CD integration.
Diagnostics¶
- Microsoft.Extensions.Diagnostics: Includes implementations for resource monitoring, Kubernetes probes, and telemetry testing.
- Microsoft.Extensions.Diagnostics.ResourceMonitoring: APIs for monitoring resource utilization.
- Microsoft.Extensions.Diagnostics.Probes: Handles Kubernetes liveness and readiness probes.
- Microsoft.AspNetCore.Diagnostics.Middleware: Middleware for HTTP diagnostics.
Distributed Computing¶
- Orleans: A cross-platform framework for building robust, scalable distributed applications. Key NuGet packages:
- Microsoft.Orleans.Core: Core library for Orleans, used on both client and server sides.
- Microsoft.Orleans.Runtime: Runtime library that hosts and executes grains within a silo.
- Microsoft.Orleans.Persistence.Memory: In-memory persistence for Orleans.
- Microsoft.Orleans.Serialization: A fast and flexible serializer for .NET.
- OrleansDashboard: A dashboard providing metrics and insights into Orleans applications.
Features Management¶
- Microsoft.FeatureManagement: A library for enabling feature flag scenarios in .NET applications.
- Microsoft.FeatureManagement.AspNetCore: Integration for ASP.NET Core and MVC applications to enable common feature toggling.
Graphics¶
- SixLabors.ImageSharp: A fully managed, cross-platform 2D graphics API for .NET.
- SixLabors.ImageSharp.Drawing: Extensions for polygon manipulation and drawing APIs.
Health Checks¶
- Microsoft.Extensions.Diagnostics.HealthChecks: Provides middleware and libraries for reporting the health of application infrastructure.
- AspNetCore.Diagnostics.HealthChecks: Enterprise health checks for common services like SQL Server, Redis, and RabbitMQ.
- AspNetCore.HealthChecks.SqlServer: Health check integration for SQL Server.
- AspNetCore.HealthChecks.Redis: Redis health check package.
- AspNetCore.HealthChecks.UI: Minimal UI interface for monitoring health check results.
- AspNetCore.Diagnostics.HealthChecks: Enterprise health checks for common services like SQL Server, Redis, and RabbitMQ.
Logging¶
- Serilog: A structured logging framework for .NET. Key NuGet packages:
- Serilog.AspNetCore: ASP.NET Core integration for Serilog.
- Serilog.Sinks.Console: Logs events to the console.
- Serilog.Sinks.File: Logs events to text files.
- Serilog.Exceptions: Captures detailed exception data for structured logging.
- Log4Net: A port of the Apache log4j framework for the .NET runtime.
Localization¶
- Microsoft.Extensions.Localization: Provides localization services using ResourceManager to load localized assembly resources.
Metrics¶
- AppMetrics: Open-source .NET library for capturing application metrics and reporting health.
- Audit.NET: Framework for auditing executing operations.
- Audit.NET.SqlServer: Stores audit events in a SQL table.
Misc¶
- AutoMapper: Convention-based object-to-object mapper.
Validation¶
- FluentValidation: A validation library with a fluent interface for building rules.
- FluentValidation.AspNetCore: Integration for ASP.NET Core applications.
Monitoring¶
- Azure Application Insights: Application performance monitoring (APM) for live applications in Azure.
- Microsoft.ApplicationInsights.AspNetCore: Application Insights integration for ASP.NET Core applications.
- Microsoft.ApplicationInsights.WorkerService: SDK for non-HTTP workloads like background tasks.
- Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel: Telemetry channel for Windows Server applications.
- Prometheus.Net: .NET client library for Prometheus monitoring.
ORM¶
- NHibernate: A robust ORM for .NET. Key extensions:
- FluentNHibernate: Fluent, XML-less, convention-based mappings for NHibernate.
- NHibernate.Caches.StackExchangeRedis: Second-level cache provider using Redis.
- Dapper: Lightweight ORM for .NET offering fast object mapping.
PDF¶
- iText for .NET: A comprehensive SDK for creating, editing, and enhancing PDF documents.
- PdfPig: This project allows users to read and extract text and other content from PDF files. In addition the library can be used to create simple PDF documents containing text and geometrical shapes.
- Markdown2Pdf: .NET library for converting Markdown to PDF. Uses Markdig for converting markdown to HTML and then Puppeteer Sharp to convert that output to PDF.
Document and Barcode Handling¶
- ZXing.Net: A .NET port of the ZXing barcode scanning library.
- QRCoder: A pure C# implementation for generating QR codes.
Resiliency¶
- Microsoft.Extensions.Resilience: Provides resiliency mechanisms such as retries and circuit breakers.
- Microsoft.Extensions.Http.Resilience: Resiliency mechanisms for HttpClient.
- Polly: A .NET library for transient fault-handling, including retries, circuit breakers, and fallback strategies.
Scheduler and Background Tasks¶
- Hangfire: A library for fire-and-forget, delayed, and recurring tasks in ASP.NET applications.
- Quartz.NET: A full-featured, open-source job scheduling system for .NET applications.
Serialization¶
- Newtonsoft.Json: A popular high-performance JSON framework for .NET.
Serverless¶
- Azure Functions: Serverless compute platform for running code without infrastructure management.
Telemetry¶
- Microsoft.Extensions.Telemetry: Advanced logging and telemetry enrichment capabilities for .NET applications. Key NuGet packages:
- Microsoft.Extensions.Telemetry.Abstractions: Contains abstractions for telemetry primitives such as log enrichment and latency measurement.
- Microsoft.Extensions.Telemetry: Provides enhanced latency monitoring and logging features.
- OpenTelemetry: Open-source framework for distributed tracing and metrics.
- OpenTelemetry.Exporter.Console: Console exporter for logs, metrics, and traces.
- OpenTelemetry.Exporter.OpenTelemetryProtocol: Exporter for OTLP (OpenTelemetry Protocol).
- OpenTelemetry.Instrumentation.AspNetCore: Instruments ASP.NET Core to collect metrics and traces.
Testing¶
- SpecFlow: Pragmatic Behavior-Driven Development (BDD) framework for .NET.
- SpecFlow.MsTest: Integration with MSTest for writing and running tests.
- Microsoft.NET.Test.Sdk: Provides build targets and properties for .NET test projects.
- Asp.Net Core Testing: Comprehensive guide for testing ASP.NET Core applications.
- Microsoft.AspNetCore.Mvc.Testing: Infrastructure components for testing ASP.NET Core applications.
- Microsoft.AspNetCore.TestHost: Test server for integration testing.
Queue and Messaging¶
- MassTransit: A distributed application framework for .NET (see previous cycle for details).
- NServiceBus: Developer-friendly service bus for .NET. Key NuGet packages:
- NServiceBus.Transport.SqlServer: Implements message queuing using SQL Server.
- NServiceBus.RabbitMQ: Enables message queuing using RabbitMQ.
- NServiceBus.Extensions.Logging: Provides integration with Microsoft.Extensions.Logging.
- Azure Service Bus: Cloud messaging service for connecting applications and devices.
- Azure.Messaging.ServiceBus: Client library for Azure Service Bus.
Miscellaneous Libraries¶
- Fody: Extensible framework for weaving .NET assemblies.
- MethodDecorator.Fody: Provides method-level interception using attributes.
Workflows¶
- DurableTask: Framework for writing long-running, persistent workflows in C# using async/await patterns.