A .NET library implementing Command Query Separation (CQS) for ASP.NET Core, AWS Lambda, Azure Functions, and Google Cloud Functions.
CommandQuery is a .NET library that implements the Command Query Separation (CQS) architectural pattern. It provides a framework for building services where commands (write operations) and queries (read operations) are clearly separated, reducing boilerplate code and improving maintainability. It supports multiple hosting platforms including ASP.NET Core and major serverless providers.
.NET developers building backend services, APIs, or serverless functions who want to adopt a clean architecture with clear separation of commands and queries.
Developers choose CommandQuery because it provides a consistent, pragmatic implementation of CQS across multiple .NET platforms, significantly reduces repetitive infrastructure code, and comes with built-in support for popular cloud function providers.
Command Query Separation for 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides dedicated packages for ASP.NET Core, AWS Lambda, Azure Functions, and Google Cloud Functions, allowing consistent CQS implementation across diverse hosting environments as shown in the packages section.
Supports commands with or without return values, deviating from strict CQS for developer convenience, which is highlighted in the philosophy as a pragmatic take.
Includes a client package for easy consumption of CommandQuery-based APIs, reducing boilerplate on the client side as evidenced by the CommandQuery.Client package.
Focuses developers on implementing command and query handlers rather than infrastructure, streamlining service creation as stated in the introduction.
Upgrading between major versions, such as from 3.0.0 to 4.0.0, requires framework upgrades and method signature changes, adding migration effort as documented in the upgrading section.
Compared to more popular libraries like MediatR, it has fewer community-contributed middleware or plugins for features like validation, caching, or advanced logging, requiring custom implementations.
While multi-platform, using the dedicated packages for AWS Lambda or Azure Functions might tie code to those environments, limiting portability if cloud providers change.