Hazelcast .NET Client 4.0 is Released!

The Hazelcast .NET Client, version 4.0, is now available!

This is a major release with important changes which aim at making the Hazelcast Client a true native .NET client. Where version 3.x of the client often showed its Java origins, version 4.0 has been refactored from the ground up to fully embrace the .NET ecosystem, providing a rich asynchronous programming model and access to standard abstractions for configuration, logging, or dependency-injection.

A complete description of changes is available in the Release Notes, but the rest of this post will detail the key evolutions.

Native .NET

Version 4.0 of the Hazelcast .NET Client has been refactored as a true .NET application using, for instance, real C# properties instead of get/set methods inherited from Java. Everything should just “feel” C# — and our code currently uses C# 8.

In addition, the API now fully embraces the C# asynchronous programming model, and therefore benefits from its threading and performance improvements, down to the low networking layer which re-uses optimized libraries from the fast Kestrel web server.

Finally, the client becomes a good .NET citizen by embracing standard abstractions such as Microsoft.Extensions.Logging or Microsoft.Extensions.Configuration for the most common tasks, thus integrating nicely into .NET applications, whether on .NET Framework or .NET Core.

The client is provided as a netstandard 2.0 library, supported on .NET Framework 4.6.2+ and .NET Core 2.1+, as well as a netstandard 2.1 library, supported on .NET Core 3.1+. Of course, .NET Core versions are supported on all platforms supporting .NET Core, including Linux. Although this version also runs on the new, unified .NET 5.0, official support will be provided in a near future.

Hazelcast 4.0

Of course, version 4.0 of the Hazelcast Client benefits from the improvements brought by version 4.0 of Hazelcast IMDG. Note that this means that the client supports IMDG 4.0+, but cannot connect to a 3.x member.

The .NET Client now relies on the Hazelcast Open Binary Client Protocol version 2.0, which brings a number of performances, robustness and serialization improvements. Version 4.0 clients are now “ownerless”: in Hazelcast 3.x, clients were implicitly assigned to an owner member responsible for cleaning up their resources after they leave the cluster. Ownership information had to be replicated to the whole cluster when a client joined the cluster. This “owner member” concept is now removed and the management of clients is simplified.

IMDG version 4.0 also brings a revisited CP subsystem for concurrent primitives, backup acknowledgment and other new features, which are not immediately supported by version 4.0 of the .NET Client but will be rolled out in a near future.

What’s next?

We believe that this release of the Hazelcast .NET Client is the first step in making Hazelcast a great component of .NET applications. We are already working in bringing the latest Hazelcast 4.x features to .NET (see above), as well as integrating Hazelcast further into the .NET ecosystem by providing, for instance, ASP.NET Providers for sessions or distributed caches.

The Hazelcast .NET Client is available on NuGet with documentation available online. We look forward to hearing your feedback on our community channels (e.g. Slack, Stack Overflow, Google Groups…). The Client is open to contribution, please visit our GitHub repository!