Ignite .NET

Ignites's In-Memory Data Fabric for .NET is designed to deliver uncompromised performance for a wide set of in-memory computing use cases on top of .NET platform - from high performance computing, to the industry most advanced data grid, CEP, and data streaming - all through native, optimized .NET APIs.

Ignite .NET is built on top of Ignite. This allows you to perform almost all the in-memory data grid operations including ACID Transactions, SQL Queries, Distributed SQL Joins, Messaging and Events, Data Streaming, and more, on replicated or partitioned caches distributed across the cluster.

Ignite also supports Cross-Platform Interoperability allowing applications to seamlessly interoperate between Java, .NET and C++ by writing/reading objects to/from cache in a common binary format. Additionally, both Ignite .NET and Ignite C++ provide native APIs and their implementations that delegate most of the calls to Java using JNI. Here, it is worth mentioning that the JNI overhead is minimal and does not cause any performance degradation, especially in distributed environments where network is the main obstacle. Furthermore, Ignite provides a pure .NET implementation of the Binary Marshaller to contribute to the perfomance.

Code Examples:
                            using (var ignite = Ignition.Start())
                            {
                                var cache = ignite.GetOrCreateCache<int, string>("myCache");

                                // Store keys in cache (values will end up on different cache nodes).
                                for (int i = 0; i < 10; i++)
                                    cache.Put(i, i.ToString());

                                for (int i = 0; i < 10; i++)
                                    Console.WriteLine("Got [key={0}, val={1}]", i, cache.Get(i));
                            }
                        
                            using (var tx = ignite.GetTransactions().TxStart())
                            {
                                var hello = cache.Get(1);

                                if (hello == "1")
                                    cache.Put(1, "Hello");

                                cache.Put(22, "World");

                                tx.Commit();
                            }
                        
                            var cache = ignite.GetOrCreateCache<int, Person>("personCache");

                            var sql = new SqlQuery("Person", "Salary < 1000");

                            var cursor = cache.Query(sql);

                            foreach (var cacheEntry in cursor)
                                Console.WriteLine(cacheEntry.Value);
                        
                            var cache = ignite.GetOrCreateCache<int, Person>("personCache");

                            // SQL join on Person and Organization.
                            var sql = new SqlQuery("Person", "from Person as p, \"orgCache\".Organization as org"
                              + "where p.OrgId = org.Id "
                              + "and org.name = Ignite");

                            // Find all persons working for Ignite organization.
                            foreach (var cacheEntry in cache.Query(sql))
                                Console.WriteLine(cacheEntry.Value);
                        
                            var cache = ignite.GetOrCreateCache<int, Person>("personCache");

                            var qry = cache.AsCacheQueryable().Where(x => x.Value.Salary < 1000);

                            foreach (var cacheEntry in qry)
                                Console.WriteLine(cacheEntry.Value);
                        
GitHub Examples:

Also see Ignite .NET examples available on GitHub.

Get started with Ignite .NET