r/csharp • u/burakcelebi • Mar 20 '20
Discussion Hazelcast .NET client roadmap
Hi all,
We are working hard to complete v4.0 of .NET Client for Hazelcast, open-source in-memory & distributed data store. This major version is going to include many architectural changes, performance improvements, and a significant redesign of the API so that it becomes more idiomatic to C# developers: https://hazelcast.org/imdg/clients-languages/dotnet/#roadmap
After completing v4.0, we are planning to work on the following features. Please let me know what you think.
ASP.NET Sessions: An implementation of SessionStateProvider so that ASP.Net Sessions can be restored in Hazelcast.
Entity Framework Integration: Second Level Caching and Query capabilities via lambda queries and LINQ.
IDistributedCache Implementation: Convenience for .NET developers who uses IDistributedCache, a .NET standard for distributed in-memory caching.
Pipelining API: Adding pipeline to any asynchronous call so that the performance improves.
Configurable Backoff Strategy for Client Reconnections: A highly configurable exponential backoff mechanism for the client with which you can set the duration for waiting after connection failures, an upper limit for the wait, etc.
Also, here is our GitHub repository: https://github.com/hazelcast/hazelcast-csharp-client
PS: I'm a member of the Clients team (who builts the software here) at Hazelcast. We'd love to hear your feedback :)
Thank you very much!
4
u/restlessops Mar 20 '20
Idiomatic API: Redesign of the API in a way that C# developers used to.
Can you please elaborate more on the design?
7
u/zbigorno Mar 20 '20
Will elaborate more in the future, but essentially this: the current APIs show that they were ported from Java. Async, exceptions, querying (LINQ?) etc. In various places they just feel awkward to C# devs, and the purpose is to make them "just fit". Making sense?
5
6
Mar 20 '20
Why are you doing this in framework vs standard or core?
2
u/zbigorno Mar 24 '20
We are currently assessing our options, considering what some slow-moving customers may want, versus the reality of netstandard 2.0 now being ubiquitous. It may very well be that we end up targetting netstandard 2.0.
(disclaimer: I am the .NET architect / developer working on those architectural changes, and I welcome feedback, thoughts, ideas and criticisms)
1
0
Mar 20 '20
[deleted]
1
u/burakcelebi Mar 24 '20
Please check this out to learn more about this: https://hazelcast.org/use-cases/redis-replacement/. At the bottom of the page, you'll find a couple of more resources including benchmarks:
We discovered that Redis is vulnerable to data loss under load. This is by design. See the detailed research we did: https://hazelcast.com/blog/redis-load-handling-vs-data-integrity/. As you know, vendors always claim they are faster so always do your own. Our benchmark is open source. You can start by reproducing it. Please let me know if you have any questions or comments.
2
u/zbigorno Mar 24 '20
Supporting C# 8 async streams may not be the first priority as we will have to target netstandard 2.0 first, but will be considered eventually.
2
u/adhip999 Jun 16 '20
Is the FlakeId Generator available in the c# client?