Apache Ignite.NET
==================================

Apache Ignite.NET provides a full featured .NET data grid and .NET compute grid functionality.
Using Apache Ignite.NET APIs you can execute any computation closure on the grid,
perform concurrent operations on the data stored in cache, start ACID transactions,
create distributed locks, subscribe for event listeners, etc.

Files list:

 * Apache.Ignite.exe - executable to start standalone Ignite.NET node.
 * Apache.Ignite.exe.config - standalone node configuration file.
 * Apache.Ignite.Core.dll - Ignite.NET API library.
 * Apache.Ignite.Core.xml - Library XML documentation.
 * Apache.Ignite.Linq.dll - Ignite LINQ Provider library.
 * Apache.Ignite.AspNet.dll - Ignite ASP.NET integration.
 * Apache.Ignite.NLog.dll - Ignite NLog logger.
 * Apache.Ignite.Log4Net.dll - Ignite Log4Net logger.
 * IgniteConfigurationSection.xsd - Configuration XML schema.


Development

 * Download and install Microsoft Visual Studio C# 2010 or later:
   https://www.visualstudio.com/
   
 * Download and install Microsoft Visual C++ 2010 Redistributable Package: 
   http://www.microsoft.com/en-us/download/details.aspx?id=14632
   
 * Download and install the latest Java Runtime Environment:
   https://java.com/en/download/index.jsp
 
 * Add Apache.Ignite.Core.dll to your project references.

 * To start Apache Ignite as a standalone node or Windows service use Apache.Ignite.exe.

Links

 * Documentation center: https://apacheignite-net.readme.io/