FusionCache
FusionCache copied to clipboard
Feature: NATS Backplane
Added a NATS Backplane
I added a new project which uses NATS as a backplane for cache events. It's relatively straightforward
Reduced allocations for backplane messages
I also noticed some easy improvements that could be made to drastically reduce allocations for Backplane message, so I did a few things.
BackplaneMessageis now areadonly structinstead of a class which means it can be allocated on the stackBackplaneMessagenow has aTryParsestatic method which tries to deserialize aReadOnlySpan<byte>into aBackplaneMessageand now provides an instance methodWriteTowhich serializes theBackplaneMessageto anIBufferWriter<byte>with no allocations.
Made Backplane Tests easily extensible
I made the L1BackplaneTests and the L1L2BackplaneTests abstract classes which can easily be inherited and implement methods to provide the IFusionCacheBackplane and the IDistributedCache so tests for new backplane and Distributed Caches can easily be implemented.
This could be further improved by making these test classes perhaps take the Backplane and Distributed cache as parameters for parameterized tests. I might look at doing it like that to make it even easier.