Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/DumplingsDevs/Pipelines
The most flexible mediation implementation in the .NET ecosystem with your own types
https://github.com/DumplingsDevs/Pipelines
Last synced: 3 months ago
JSON representation
The most flexible mediation implementation in the .NET ecosystem with your own types
- Host: GitHub
- URL: https://github.com/DumplingsDevs/Pipelines
- Owner: DumplingsDevs
- License: apache-2.0
- Created: 2023-06-05T20:16:11.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-20T20:42:27.000Z (about 1 year ago)
- Last Synced: 2024-05-22T04:34:03.428Z (6 months ago)
- Language: C#
- Homepage:
- Size: 1.47 MB
- Stars: 44
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- RSCG_Examples - Pipelines
- csharp-source-generators - DumplingsDevs.Pipelines - ![stars](https://img.shields.io/github/stars/DumplingsDevs/Pipelines?style=flat-square&cacheSeconds=604800) ![last commit](https://img.shields.io/github/last-commit/DumplingsDevs/Pipelines?style=flat-square&cacheSeconds=604800) The most flexible mediation implementation in the .NET ecosystem with your own types. (Source Generators / Patterns)
README
[![CI-main](https://github.com/DumplingsDevs/Pipelines/actions/workflows/build-and-test.yml/badge.svg?branch=main)](https://github.com/DumplingsDevs/Pipelines/actions/workflows/build-and-test.yml)
[![NuGet](https://img.shields.io/nuget/v/DumplingsDevs.Pipelines.svg)](https://www.nuget.org/packages/DumplingsDevs.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](docs/quick_start.md) section will allow you to quickly create your first Pipeline.
If you prefer learning through real examples, please check out the examples below:
- [Multistep process](docs/process_pipeline.md)
- [Commands, Queries and Domain Events Dispatching](docs/command_queries_events_example.md)If you want to learn more, please read the articles below.
- [Main Concepts](docs/main_concepts.md)
- [Configuration](docs/configuration.md)
- [Pipeline Cookbook](docs/pipeline_cookbook.md)
- [Troubleshooting](docs/troubleshooting.md)
- [Proxy vs Generated Dispatcher](docs/dispatcher_source_generator.md)
- [Benchmarks](docs/benchmarks.md)
- [ADR](docs/adr.md)
- [Articles](docs/articles.md)----
# β οΈ 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.---