A .NET library for building real-time apps with transparent caching and automatic dependency tracking, requiring minimal extra code for live updates.
Fusion is a .NET library that enables developers to build real-time applications with minimal extra code by implementing Distributed REActive Memoization (DREAM). It transparently caches method results, tracks dependencies automatically, and ensures consistent state across clients and servers, solving hard problems like cache invalidation and live updates.
.NET developers building real-time web applications, especially those using Blazor for UI, and teams dealing with complex state management across microservices or requiring high-performance APIs.
Fusion eliminates the need for manual caching, event-driven invalidation, and client-side state management libraries by providing a unified abstraction that guarantees eventual consistency and drastically reduces network chattiness and latency.
Build real-time apps (Blazor included) with less than 1% of extra code responsible for real-time updates. Host 10-1000x faster APIs relying on transparent and nearly 100% consistent caching. We call it DREAM, or Distributed REActive Memoization, and it's here to turn real-time on!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically memoizes method results in memory, eliminating redundant computations and database hits, as shown in benchmarks where it speeds up API calls by thousands of times.
Captures dependencies between computed methods for precise invalidation when data changes, similar to build systems, ensuring consistent state without manual event handling.
Delivers live updates to clients without manual WebSocket management, using a custom RPC protocol that notifies clients of invalidations, as demonstrated in the Blazor chat sample.
Abstracts service placement, allowing the same code to run locally or remotely with minimal network overhead, making proxies non-chatty by default.
Provides seamless real-time UI updates for Blazor Server and WebAssembly with simple component patterns like ComputedStateComponent, enabling high code reuse across hosting modes.
The Distributed REActive Memoization abstraction is novel and complex, requiring developers to rethink state management, which can be a significant barrier to entry despite extensive documentation.
Heavily tied to the .NET ecosystem, especially Blazor for UI, making it unsuitable for projects using other frameworks or languages, limiting its versatility.
Caches all observed state in memory, which can lead to high memory usage for applications with large, frequently accessed data sets, potentially impacting scalability on resource-constrained servers.
Requires specific annotations like [ComputeMethod] and virtual methods, along with careful service registration, which can be error-prone and adds boilerplate compared to simpler caching solutions.