Skip to content

Command Query Separation for 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions

License

Notifications You must be signed in to change notification settings

hlaueriksson/CommandQuery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CommandQuery

Build status CodeFactor

CommandQuery CommandQuery.Abstractions CommandQuery.AspNet.WebApi CommandQuery.AspNetCore CommandQuery.AWSLambda CommandQuery.AzureFunctions CommandQuery.Client

Introduction

Command Query Separation (CQS) for .NET Framework and .NET Core

  • Build services that separate the responsibility of commands and queries
  • Focus on implementing the handlers for commands and queries
  • Create APIs with less boilerplate code

Available for:

🌐 ASP.NET Web API 2
🌐 ASP.NET Core
⚡ AWS Lambda
⚡ Azure Functions

Command Query Separation?

Queries: Return a result and do not change the observable state of the system (are free of side effects).

Commands: Change the state of a system but do not return a value.

Martin Fowler

In other words:

  • Commands
    • Writes (Create, Update, Delete) data
  • Queries
    • Reads and returns data

The dogmatic approach to commands, that they do not return a value, can be inconvenient. CommandQuery has a more pragmatic take and supports commands with result.

Inspired by:

Packages

README Platform NuGet Sample
CommandQuery .NET Framework and .NET Standard NuGet NuGet CommandQuery.Sample.Contracts, CommandQuery.Sample.Handlers
CommandQuery.AspNet.WebApi ASP.NET Web API 2 NuGet NuGet CommandQuery.Sample.AspNet.WebApi
CommandQuery.AspNetCore ASP.NET Core NuGet NuGet CommandQuery.Sample.AspNetCore.V3
CommandQuery.AWSLambda AWS Lambda NuGet NuGet CommandQuery.Sample.AWSLambda
CommandQuery.AzureFunctions Azure Functions NuGet NuGet CommandQuery.Sample.AzureFunctions.Vs3
CommandQuery.Client .NET Framework and .NET Standard NuGet NuGet CommandQuery.Sample.Client