All Projects → jgauffin → dotnetcqs

jgauffin / dotnetcqs

Licence: Apache-2.0 license
Command/Query separation for .NET

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to dotnetcqs

Kekkonen
A remote (CQRS) API library for Clojure.
Stars: ✭ 201 (+1335.71%)
Mutual labels:  cqrs, messaging
psr-container-messenger
Message bus and queue for Mezzio with Symfony Messenger + Enqueue
Stars: ✭ 24 (+71.43%)
Mutual labels:  cqrs, messaging
Netdevpack
A smart set of common classes and implementations to improve your development productivity.
Stars: ✭ 220 (+1471.43%)
Mutual labels:  cqrs, messaging
Service Bus
PHP Lightweight Message Bus supporting CQRS.
Stars: ✭ 431 (+2978.57%)
Mutual labels:  cqrs, messaging
microservice framework version 6
A Java framework to support applications utilising CQRS and Event Sourcing architectures
Stars: ✭ 25 (+78.57%)
Mutual labels:  cqrs, messaging
interview-cookbook
A playground for learning DataStructures, Algorithms, and Object-Oriented Concepts.
Stars: ✭ 25 (+78.57%)
Mutual labels:  queues
iron
Iron Java in-memory database
Stars: ✭ 13 (-7.14%)
Mutual labels:  cqrs
chekov
A CQRS/ES framework for building application in Rust
Stars: ✭ 21 (+50%)
Mutual labels:  cqrs
microq
Micro job queue built on mongo
Stars: ✭ 67 (+378.57%)
Mutual labels:  messaging
SimpleSockets
Asynchronous TCP .NET library with reliable transmission and receipt of data, with an ssl implementation.
Stars: ✭ 74 (+428.57%)
Mutual labels:  messaging
aspnetcore-authentication-apikey
Easy to use and very light weight Microsoft style API Key Authentication Implementation for ASP.NET Core. It can be setup so that it can accept API Key in Header, Authorization Header, QueryParams or HeaderOrQueryParams.
Stars: ✭ 215 (+1435.71%)
Mutual labels:  netstandard20
RebelChat
Rebel Chat 💬 - is a modern way to keep in touch with any team, and keep your messaging under control right in your editor.
Stars: ✭ 19 (+35.71%)
Mutual labels:  messaging
microservice workshop
Microservices Architecture Workshop focuses on helping the developers / architects to understand the key Architecture paradigms with hands on section. The course helps the developers from Monolithic App mindset to a Microservices based App development. It also helps the developers with hands on development experience with key Microservices infra…
Stars: ✭ 69 (+392.86%)
Mutual labels:  cqrs
scion-microfrontend-platform
SCION Microfrontend Platform is a TypeScript-based open-source library that helps to implement a microfrontend architecture using iframes.
Stars: ✭ 51 (+264.29%)
Mutual labels:  messaging
paypal-messaging-components
PayPal JavaScript SDK - messaging components
Stars: ✭ 24 (+71.43%)
Mutual labels:  messaging
Totem
Knowledge work at play
Stars: ✭ 56 (+300%)
Mutual labels:  cqrs
centrifuge-ios
Swift client to communicate with Centrifugo v1 from iOS over WebSocket (not maintained anymore)
Stars: ✭ 28 (+100%)
Mutual labels:  messaging
nodemessage
interact with your local iMessage database
Stars: ✭ 39 (+178.57%)
Mutual labels:  messaging
CleanArchitecture
Clean Architecture Solution for .NET 5
Stars: ✭ 18 (+28.57%)
Mutual labels:  cqrs
extension-springcloud
Axon Framework extension for Spring Cloud's Discovery mechanism integration to distribute Command messages.
Stars: ✭ 22 (+57.14%)
Mutual labels:  messaging

Asynchronous Command/Query library

This library contains interfaces used to be able to use messaging (commands, queries and events) in applications without tightly coupling it to a specific implementation.

Example

Define a message:

public class ActivateAccount
{
	public int AccountId {get; set; }
	public string ActivationKey { get; set; }
}

Invoke it:

var msg = new ActivateAccount { AccountId = 35, ActivationKey = "dfkldsie93kcn22" };
await _messageBus.SendAsync(msg);

Handle it:

public class ActivateAccountHandler : IMessageHandler<ActivateAccount>
{
    private readonly IAccountRepository _repository;
	
	public ActivateAccountHandler(IAccountRepository repository)
	{
		if (repository == null) throw new ArgumentNullException(repository);
		
		_repository = repository;
	}
	
	public async Task HandleAsync(IMessageContext context, ActivateAccount message)
	{
		var user = await _repository.Get(message.AccountId);
		user.Activate(message.ActivationKey);
		await _repository.UpdateAsync(user);
		
		await context.SendAsync(new AccountActivated(message.AccountId));
	}
}

Message handlers are fully isolated from the rest of the specification and therefore easy to test and maintain.

Implementations

The following implementations exist.

Bus

The MessageBus and QueryBus currently have the following implementations:

  • DependenyInjection: Use your favorite container to execute and queue messages.
  • Microsoft.Extensions.DependencyInjection: Currently under implementation
  • Griffin.Container: Currently under implementation

Queues

  • ADO.NET: Uses a table in your database to enqueue and dequeue messages (to get persistance).
  • Azure ServiceBus: Under development
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].