/KSociety.Base

.NET 6.0 framework ideal for Domain Driven Design (DDD), Command Query Responsibilty Segragation (CQRS) and Event Sourcing.

Primary LanguageC#OtherNOASSERTION

Build status

KSociety.Base - Framework for microservices

K-Society Base is a full stack framework for .NET 6 application, ideal for implementing microservices.

Introduction

KSociety.Base is a .NET 6.0 framework that can be used to create a clean design by enforcing single responsibility and separation of concerns. Its advanced features are ideal for Domain Driven Design (DDD), Command Query Responsibilty Segragation (CQRS) and Event Sourcing, is an open sourse .NET framework and represents the basic infrastructure. The whole framework is divided into layers listed below.

Architecture

Image of Architecture

0. Install (KSociety.Base.)

The install utility library.

GitHub Repository NuGet Download
InstallAction NuGet NuGet

1. Presentation (KSociety.Base.Pre.)

The presentation layer.

GitHub Repository NuGet Download
Model NuGet NuGet

1.1 Presentation - Form (KSociety.Base.Pre.Form.)

GitHub Repository NuGet Download
View NuGet NuGet
Presenter NuGet NuGet

2. Service (KSociety.Base.Srv.)

The service layer.

GitHub Repository NuGet Download
Agent NuGet NuGet
Behavior NuGet NuGet
Contract NuGet NuGet
Dto NuGet NuGet
Shared NuGet NuGet

2.1 Service - Host (KSociety.Base.Srv.Host.)

Contains the autofac modules.

GitHub Repository NuGet Download
Shared NuGet NuGet

3. Application (KSociety.Base.App.)

The application layer, abstraction on the command handler library. Contains the abstraction of the request handlers.

GitHub Repository NuGet Download
Shared NuGet NuGet

4. Business

GitHub Repository NuGet Download

5. Domain (KSociety.Base.Domain.)

The domain layer.

GitHub Repository NuGet Download
Shared NuGet NuGet

6. Infrastructure (KSociety.Base.Infra.)

The infrastructure layer, data access layer (DAL). It also contains the implementation of the UnitOfWork. Supported databases:

  1. SqlServer
  2. Sqlite
  3. MySql
  4. PostgreSQL
GitHub Repository NuGet Download
Shared NuGet NuGet

EventBus (KSociety.Base.)

The event bus abstraction and RbbitMQ implementation.

GitHub Repository NuGet Download
EventBus NuGet NuGet
EventBusRabbitMQ NuGet NuGet

InfrastructureSub (KSociety.Base.InfraSub.)

The generic shared library.

GitHub Repository NuGet Download
Shared NuGet NuGet

License

The project is under Microsoft Reciprocal License (MS-RL)

Dependencies

List of technologies, frameworks and libraries used for implementation:

  • .NET 6 (platform). Note for Visual Studio users: VS 2022 is required.
  • Autofac (Inversion of Control Container)
  • AutoMapper (A convention-based object-object mapper)
  • CsvHelper (A .NET library for reading and writing CSV files)
  • Grpc.Net.Client (.NET client for gRPC)
  • MediatR (mediator implementation)
  • Polly (Resilience and transient-fault-handling library)
  • protobuf-net (protobuf-net is a contract based serializer for .NET code)
  • Quartz.NET (background processing)
  • RabbitMQ.Client (The RabbitMQ .NET client is an implementation of an AMQP 0-9-1 client library for C#)
  • Serilog (structured logging)