The TCP client for .NET release extends the auto-compatibility functionality introduced in v5.0.10 to allow it to work with Gossip Seeds as well as ClusterDNS. We hope that this will simplify the upgrade process from v5 to v20.

You can get the packages from NuGet here: EventStore TCP Clientopen in new window.

dotnet add package EventStore.Client --version 5.0.11
1

Changes

Auto-Compatibility Mode

In the previous v5 release we mentioned that we wanted to make the upgrade from version 5 of EventStoreDB to version 20 less disruptive. As part of that, we introduced auto-compatibility mode for ClusterDNS discovery in the TCP client.

This release extends that feature to make it easier for more configurations.

First, auto-compatibility mode now works for gossip seeds. If auto-compatibility mode is enabled and a gossip seed is specified, the client will attempt to discover whether it should gossip over HTTP or HTTPS.

Second, auto-compatibility mode will also discover whether to use secure or insecure TCP based on the response from the server. This means that you won’t need to explicitly set UseSslConnection in the connection settings.

Please note that auto-compatibility mode does not enable Server Certificate Validation by default. As such, we recommend that you enable this explicitly in your connection settings

Using Auto-Compatibility Mode

You can enable auto-compatibility mode with

CompatibilityMode=auto
1

in the connection string, or with

.SetCompatibilityMode("auto")
1

in the connection settings.

You can connect to a cluster running insecure v5, insecure v20, or secure v20 with the following configurations:

Connection String:

ConnectTo=discover://{dns_address}:2113;TargetHost={dns_address};CompatibilityMode=auto;ValidateServer=true;
GossipSeeds={node1}:2113,{node2}:2113,{node3}:2113;CompatibilityMode=auto;ValidateServer=true;
1
2

Connection Settings:

var connectionSettings = ConnectionSettings.Create()
    .SetCompatibilityMode("auto");
var clusterSettings = ClusterSettings.Create()
    .DiscoverClusterViaDns()
    .SetClusterDns({dns_address})
    .SetClusterGossipPort(2113);
var connectionSettings = ConnectionSettings.Create()
    .SetGossipSeedEndPoints(gossipSeeds)
    .SetCompatibilityMode("auto");
1
2
3
4
5
6
7
8
9

Documentation

Documentation for .NET TCP Client can be found hereopen in new window.

If you have any questions that aren't covered in these release notes or the docs, please feel free to reach out on discuss, GitHub or slack.

Providing Feedback

If you encounter any issues, please don’t hesitate to open an issue on GitHubopen in new window if there isn’t one already.

Additionally, there is a fairly active Discussopen in new window community forum, and an #eventstore channel on the DDD-CQRS-ESopen in new window Slack community.

Last Updated:
Contributors: Mathew McLoughlin