McObject provides a native C# application programming interface (API) for the eXtremeDB database system, offering the fastest possible DBMS solution in C#/.NET.
The C# API reduces development time and accelerates run-time performance in both embedded applications and real-time enterprise systems such as finance, e-commerce, and social networks.
For organizations already using C# and .NET, eXtremeDB and its C# API deliver the speed of compiled C/C++ for performance-intensive data sorting, storage and retrieval tasks, with the convenience of using a familiar language. eXtremeDB’s breakthrough performance stems from an initial focus on embedded systems, which typically have limited resources, leading to a streamlined architecture.
Native C# Interface Adds LINQ Support
As an added benefit, eXtremeDB’s native C# API includes support for Language Integrated Query (LINQ), a Microsoft .NET Framework component that adds SQL-like data querying capabilities to .NET languages. In LINQ, developers using the eXtremeDB C# interface have a succinct, extensible and increasingly popular approach to database querying, with additional benefits including protection against software bugs caused by data-typing errors.
C# Objects and Simplified Programming
With the eXtremeDB native C# interface, developers work with the real-time database entirely from within the C# programming language. There is no external database definition, and no requirement to compile a database schema.
Instead, the interface uses C#’s reflection capability to discover database classes and their fields that are defined in the application, via class definition syntax (see Figures 1 and 2). 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++, C# and even Java programs can use the same database.
Figure 2. eXtremeDB’s native C# API uses C# reflection to discover classes, their fields and other characteristics at run-time.
C# Databases & Performance
What are the database options in C# when an application calls for the highest possible responsiveness? While not an exhaustive list of options, consider:
SQL relational database management systems – SQL RDBMSs’ biggest drawback with C# is the “impedance mismatch” that occurs when going between relational structures and SQL (a set-oriented database access language), on one end, and the object-oriented C# language, on the other. The need to “map” between object and relational technologies consumes CPU cycles and hurts performance. [N.B. eXtremeDB eXtremeSQL fully supports this option, and for large scale/distributed databases the so-called impedance mismatch is far outweighed by leveraging the power of many cores/CPUs/servers.)
“Pure” C# database systems — embedded object-oriented databases written in C# deliver improved performance by eliminating impedance mismatch. However, as a language that is interpreted at run-time, C#’s performance can’t compete with compiled C and C++, and this limitation binds all-C# databases.
eXtremeDB with native C# API – eXtremeDB’s native C# interface uses the C# class definitions to define the database schema. Since it relies on the programming language’s own syntax, there is (by definition) no impedance mismatch. Database sorting, retrieval and storage take place in fast, compiled C code rather than C#.
Importantly, eXtremeDB with its native C# interface also offers the many performance-enhancing features of the eXtremeDB embedded database, including its core in-memory architecture, support for multiple indexes and data types, direct data access, and more.
The Native C# interface is included in all eXtremeDB packages for Windows.
Find more in-depth information about this topic in our on-line documentation.