Skip to content

Differences Between C# and Java driver

Brian Chavez edited this page Nov 17, 2015 · 28 revisions

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

Raw Format Options

The Java driver can accept format options in runOpts when calling .run(conn, runOpts). The Java driver supports the following format options:

  • time_format: 'raw'
  • binary_format: 'raw'
  • group_format: 'raw'

The format options bypass the Java Converter's $reql_type$ pseudo type to native type conversion. For example, specifying time_format: 'raw' leaves $reql_type$:TIME JSON objects as is.

Using raw types in C# driver

To bypass the C# JSON deserialization converters and leave $reql_type$ pseudo types as is, simply declare your expected types as JObjects. For example,

JObject result = r.now().run<JObject>(conn);
result["$reql_type$"].ToString().Should().Be("TIME");

Internal Architecture Differences

This section mostly only pertains to contributors and driver developers.

Serialization

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

Clone this wiki locally