MichaCo / CacheManager

CacheManager is an open source caching abstraction layer for .NET written in C#. It supports various cache providers and implements many advanced features.
http://cachemanager.michaco.net
Apache License 2.0
2.35k stars 456 forks source link

Using System.Text.Json instead of Newtonsoft.Json #278

Open VahidN opened 5 years ago

VahidN commented 5 years ago

.NET Core 3x introduces the new built-in System.Text.Json namespace which has a higher performance than the Newtonsoft.Json dependency of CacheManager.Serialization.Json. It would be nice to add it later.

ndrwrbgs commented 4 years ago

It seems these don't have feature parity and could break if you upgraded to a new version of this library using System.Text.Json (Newtonsoft seems to handle your types better according to Microsoft) : https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to.

With this consideration would you still desire this feature as the default, or as a separate option that makes the change more obvious to the user (e.g. a SEPARATE json serializer)?

ndrwrbgs commented 4 years ago

Started to do this, but the different handling of JSON is scaring me too much [things like Newtonsoft allows comments in JSON but the new library does not by default].

I'd ship it as a completely separate serializer, which could be implemented within this library or externally to be promoted to first-class at a later date if usage warrants it. A transparent upgrade within CacheManager.Serialization.Json seems too risky especially in a distributed system where some old code and some new code would have to coexist for periods of time.

ndrwrbgs commented 4 years ago

@VahidN do you want to make a PR for a new serializer? @MichaCo I think this would be a feature-request rather than a "compatibility with netcore30" ask/issue

bbqchickenrobot commented 3 years ago

any news on this?

huseyingoztok commented 3 years ago

I am having similar problem. Can anyone suggest a solution?

MichaCo commented 3 years ago

It'll definitely be it's own package and incompatible with newtonsoft json serialized Keys, so don't mix it in your deployments 😎

And sure, I'd be happy to see a pr for that, @ndrwrbgs or any one else

huseyingoztok commented 3 years ago

That's how I solved the problem within the app.

Cachemanager1 Cachemanager2 Cachemanager3 Cachemanager4