DumplingsDevs / Pipelines

The most flexible mediation implementation in the .NET ecosystem with your own types

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CI-main NuGet


Pipelines Pipelines

📢 What is Pipelines?

We believe that a good library should adapt to the application, not the other way. That is why Pipelines grants you the freedom to create any number of mediators within your application. Each of them can be tailored to specific use cases, ensuring maximum flexibility in programming. This is possible because:

  • Pipelines does not expose its types - it does not require implementing an interface or inheriting from a class. You have absolute control over input data and operation results.
  • Each mediator built with Pipelines is independent and decoupled from the others.
  • To maintain the best performance, we utilized the Source Generator mechanism, which minimizes the use of reflection.
  • Decorator support allows you to add additional effects like validation, logging, or even using the Unit of Work pattern. Additionally, it enables the construction of the Chain of Responsibility pattern.

📦 Installation

dotnet add package DumplingsDevs.Pipelines
dotnet add package DumplingsDevs.Pipelines.WrapperDispatcherGenerator

📚 Documentation

The Quick Start section will allow you to quickly create your first Pipeline.

If you prefer learning through real examples, please check out the examples below:

If you want to learn more, please read the articles below.


⚠️ Limitations

  • Pipelines in which multiple handlers will be handled for one input must have a Task or void return type.
  • Cannot create a Pipeline that returns both generic and non-generic types.

🛤 Roadmap

  • ADR Documentation: Record key architectural decisions made during implementation using ADRs.
  • Code Cleanup: Refine and tidy up the codebase post-MVP, paving the way for new feature development.
  • Support for Nullable Results: Add functionality to handle nullable result types.
  • Multiple Inputs in Dispatcher: Enhance the dispatcher handle method to accept a list of inputs instead of just one.
  • Parallel Pipeline: Introduce a pipeline to facilitate parallel execution of multiple handlers.
  • Stream Pipeline: Implement support for streaming pipelines.
  • Decorator Performance Optimization: Improve performance, especially concerning the use of ActivatorUtilities.CreateInstance().

🥟💡 The Dumplings Behind the Magic

Hey there! We're Dumplings Devs, made up of Mateusz Wróblewski and Kamil Bytner. We're passionate about software and always up for a coding challenge.


DumplingsDevs DumplingsDevs

About

The most flexible mediation implementation in the .NET ecosystem with your own types

License:Apache License 2.0


Languages

Language:C# 100.0%