Couchbase .NET SDK 2.3.5 Now Available!

Today we are releasing Couchbase .NET SDK 2.3.5 another bug-fix/maintenance release. In this we release we added a new, improved security model for passing credentials to the server: SCRAM-SHA1. We also added a few commits towards our goal of releasing a .NET Core compatible SDK in the near future. Expect a developer preview sometime in the next month or so!

New Features and Changes

SCRAM-SHA1 Support

With the release of Couchbase Server 4.5, we have a new, improved security feature called SCRAM-SHA. SCRAM stands for Salted Challenge Request Authentication Mechanism and SHA stands for the algorithm used to hash the password before its sent to the server. The server supports SHA-1, SHA-256 and SHA-512 (along with plain and CRAM-MD5 for older versions of the server). The higher SHA number, the more secure the hash – that being said the client only supports SHA1 as of this release. The reason for this, is that .NET only ships with SHA1 versions of PBKDF2, which is required part of the SCRAM process for salting the password. It's possible that in the future we will support SHA-256 and SHA-512 using a 3rd party library.

The best part about SCRAM-SHA1 from a client perspective, is that you do not need to make any changes in configuration! If the client detects the server supports SHA1, it will use it over CRAM-MD5 (which is less secure).

.NET Core Support – Update!

This release includes three commits aimed specifically at providing .NET Core support:

  • NCBC-1152: Net Core Doesn't Support Socket.BeginConnect
  • NCBC-1125: Switch SslStream to using Async TPL pattern
  • NCBC-1159: Async calls deadlock while running tests under NUnit 3

A special shout-out to Brant Burnett of Centeredge Software with helping out of the Couchbase SDK .Net Core project! Also, a big congratulations to him for being promoted to a Couchbase Expert as part of our Community contributor program!

Once again, expect a developer preview of the Couchbase .Net Core SDK in the near-future!

N1QL Query Timing

N1QL Query Timing is an addition to the SDK's logging infrastructure and is useful for diagnosing network issues between the client and the server. It's disabled by default and can be enabled by setting the EnableQueryTiming property to true on the ClientConfiguration class:

A big thanks to Mike Goldsmith for contributing this feature! Mike did a couple of fixes in this release as well and we predict he'll being doing more in the future!

SDK Convergence

One thing we on the SDK team at Couchbase have been particularly sensitive to, is ensuring consistency of the programming model across the various SDK's: Java, Go, Node.js, Python, PHP, Libcouchbase and .NET. While idiomatic differences across platforms makes this a difficult goal to achieve, we are always looking to improve here. In this release we added one commit NCBC-1170, which does two things:

  1. Ensures that each DocumentResult or OperationResult gets a copy of the document key in it's Id property.
  2. Adds the document to the DocumentResult when an Insert, Upsert, or Replace operation is executed

This should make it easier to progress to the next step in your application logic since the content (the document), the key and the CAS value will all be available in the DocumentResult.

Release Notes – Couchbase .NET client library – Version 2.3.5

  • [NCBC-1125] – Switch SslStream to using Async TPL pattern
  • [NCBC-1152] – Net Core Doesn't Support Socket.BeginConnect
  • [NCBC-1080] – Buckets get opened with a password provided for another in the config .NET SDK
  • [NCBC-1108] – Index Mgmt methods lack ContinueOnAnyContext and may deadlock
  • [NCBC-1157] – Queries fail if DefaultSerializer.ContractResolver is null
  • [NCBC-1158] – Exception for subdoc get during rb2out
  • [NCBC-1159] – Async calls deadlock while running tests under NUnit 3
  • [NCBC-1161] – Sub Document – MutateIn does not support POCO's
  • [NCBC-1162] – Make Observe fail-fast when document mutation is encountered
  • [NCBC-1163] – MUX IO – OperationTimeout when Enhanced Durability is enabled
  • [NCBC-1164] – Document mutation incorrectly indicated while performing CAS-based observe
  • [NCBC-1167] – ensure the README on github points clearly to current start using
  • [NCBC-1170] – Make Insert and Upsert return the Document – similar to Java SDK
  • [NCBC-1094] – Implement SCRAM-SHA1 Support
  • [NCBC-1160] – Add option to enable N1QL timing logging
  • [NCBC-1111] – Remove exp. backoff for NMV and replace with static 100ms backoff

How to get it

As always, the Couchbase .NET SDK is available on/by:


Posted by Jeff Morris, Senior Software Engineer, Couchbase

Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).

Leave a reply