When using the C# API for eXtremeDB, there is no external database definition, and no requirement to compile a database schema. Instead, the API relies on C#’s reflection capability to discover database classes and their fields that are defined in the application, in the class definition syntax. This streamlines coding, and the developer's experience is one of working with plain old C# objects. Optionally, the C# class definitions can be used to generate a schema that, in turn, can be processed by McObject’s schema compiler, so that C/C++ and C# programs can use the same database. The C# interface is a port of a Java Native Interface (JNI) that was earlier released for eXtremeDB and described in detail on DZone JavaLobby in an article titled Java Annotations and Reflection: Powerful Building Blocks for a DBMS Interface.
For C# developers, eXtremeDB’s performance advantage stems from its streamlined architecture that manages data entirely in main memory and within the application’s address space, eliminating file I/O, cache management, inter-process communication and other overhead found in database systems that incorporate disk storage and/or a client-server architecture. The resulting minimal latency has driven eXtremeDB’s adoption in performance-intensive applications ranging from telecom call routing and combat jet avionics, to securities trading platforms and social network news feeds.
The reflection capability in C# is used to discover database classes and their fields that are defined in the application, via class definition syntax.
With the eXtremeDB C# API, C# class definitions use attributes (defined by brackets) to indicate a database characteristic.