pimbrouwers
Joined 6 years ago
Joined 6 years ago
There are a few drawbacks, depending on your perspective:
- compilation is slower than c# and hot reload isn't supported (it's in progress)
- there are very few opportunities to use it professionally
- hiring devs can be challenging
You are also thinking of this defensively, "x value cannot exist here if it doesn't exist in y store". Just think how you'd access this, and you'll realize at worst this creates a void of data which your app likely handles anyway.
If there are numerous associations required across these silos. You don't have the right silos yet.
Removing the network latency is a massive gain, especially for small/medium apps, which is most sites. And if you find yourself asking this, the answer is yes, it will work.
SQLite will force you to rethink your architecture a bit, don't forget it doesn't HAVE to be _one_ file. This alone helps you scale further.
There are some chafing points: 1. Schema migrations 2. Configuration, PRAGMA's applied at design time or during each connection
Obviously, implementing them was possible, but what would consumption be like? It turns out, it's amazing. There were already some open-source options available, but none of them had an API that I loved. They often allowed direct access to the internal value, which I felt defeated the purpose.
So, I decided to create Danom with a few key goals in mind:
- Opinionated Monads: Focus on Option and Result rather than a more generic Choice type.
- Exhaustive Matching: An API that enforces exhaustive matching to ensure all cases are handled.
- Fluent API: Designed for chaining operations seamlessly.
- Integration: Works well with ASP.NET Core and Fluent Validation.
The pattern has exceeded my expectations, making functional programming patterns in C# not only possible but enjoyable. If you’re interested in bringing some of the functional programming paradigms from F# into your C# projects, I’d love for you to check it out.
You can find the project here: https://github.com/pimbrouwers/danom.
Looking forward to your feedback and contributions!
github.com/pimbrouwers