Skip to content

Differences Between C# and Java driver

Brian Chavez edited this page Sep 3, 2016 · 28 revisions

There are very few differences between the official Java and C# driver. The minor differences are outlined here:

Naming Conventions

The C# driver follows .NET naming conventions when composing and running ReQL queries. The following example shows some casing differences:

//Java
r.table("marvel").getAll("man_of_steel").optArg("index", "code_name")
                 .run(conn);
//C#
R.Table("marvel").GetAll("man_of_steel").OptArg("index", "code_name")
                 .Run(conn);

Internal Architecture Differences

This section mostly only pertains to contributors and driver developers.

Serialization

The only major difference internally between the C# and Java driver is the serialization and deserialization process. The C# driver uses the industry standard Newtonsoft Json.NET library. The C# Converter class is mostly used as a configuration hub for the Newtonsoft serializer whereas the Java Converter class is directly involved in converting ReQL pseudo types.

Networking

Most of the networking code relies on an async/await pattern for processing responses from the RethinkDB server. The Java driver does not have these constructs. The internal design notes for these details are outlined here in the Internal Design Notes section.