Chapter 1. Installing and configuring the Hot Rod .NET/C# client Install the Hot Rod .NET/C# client on Microsoft Windows systems where you use .NET Framework to interact with Data Grid clusters via the RemoteCache API. 1.1. Installing Hot Rod .NET/C# clients Data Grid provides an installation package to install the Hot Rod .NET/C# client on Windows. Prerequisites Any operating system on which Microsoft supports the .NET Framework .NET Framework 4.6.2 or later Windows Visual Studio 2015 or later Procedure Download redhat-datagrid-<version>-hotrod-dotnet-client.msi from the Data Grid Software Downloads . Launch the MSI installer for the Hot Rod .NET/C# client and follow the interactive wizard through the installation process. 1.2. Configuration and Remote Cache Manager APIs Use the ConfigurationBuilder API to configure Hot Rod .NET/C# client connections and the RemoteCacheManager API to obtain and configure remote caches. Basic configuration using Infinispan.HotRod; using Infinispan.HotRod.Config; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace simpleapp { class Program { static void Main(string[] args) { ConfigurationBuilder builder = new ConfigurationBuilder(); // Connect to a server at localhost with the default port. builder.AddServer() .Host(args.Length > 1 ? args[0] : "127.0.0.1") .Port(args.Length > 2 ? int.Parse(args[1]) : 11222); Configuration config = builder.Build(); // Create and start a RemoteCacheManager to interact with caches. RemoteCacheManager remoteManager = new RemoteCacheManager(conf); remoteManager.Start(); IRemoteCache<string,string> cache=remoteManager.GetCache<string, string>(); cache.Put("key", "value"); Console.WriteLine("key = {0}", cache.Get("key")); remoteManager.Stop(); } } } Authentication ConfigurationBuilder builder = new ConfigurationBuilder(); // Add a server with specific connection timeouts builder.AddServer().Host("127.0.0.1").Port(11222).ConnectionTimeout(90000).SocketTimeout(900); // ConfigurationBuilder has fluent interface, options can be appended in chain. // Enabling authentication with server name "node0", // sasl mech "PLAIN", user "supervisor", password "aPassword", security realm "aRealm" builder.Security().Authentication().Enable().ServerFQDN("node0") .SaslMechanism("PLAIN").SetupCallback("supervisor", "aPassword", "aRealm"); Configuration c = conf.Build(); Encryption ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Get configuration builder for encryption SslConfigurationBuilder sslBuilder = conf.Ssl(); // Enable encryption and provide client certificate sslBuilder.Enable().ClientCertificateFile("clientCertFilename"); // Provide server cert if server needs to be verified sslBuilder.ServerCAFile("serverCertFilename"); Configuration c = conf.Build(); Cross-site failover ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Configure a remote cluster and node when using cross-site failover. builder.AddCluster("nyc").AddClusterNode("192.0.2.0", 11322); Near caching ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Enable near-caching for the client. builder.NearCache().Mode(NearCacheMode.INVALIDATED).MaxEntries(10);

Commands:
using Infinispan.HotRod; using Infinispan.HotRod.Config; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace simpleapp { class Program { static void Main(string[] args) { ConfigurationBuilder builder = new ConfigurationBuilder(); // Connect to a server at localhost with the default port. builder.AddServer() .Host(args.Length > 1 ? args[0] : "127.0.0.1") .Port(args.Length > 2 ? int.Parse(args[1]) : 11222); Configuration config = builder.Build(); // Create and start a RemoteCacheManager to interact with caches. RemoteCacheManager remoteManager = new RemoteCacheManager(conf); remoteManager.Start(); IRemoteCache<string,string> cache=remoteManager.GetCache<string, string>(); cache.Put("key", "value"); Console.WriteLine("key = {0}", cache.Get("key")); remoteManager.Stop(); } } }
ConfigurationBuilder builder = new ConfigurationBuilder(); // Add a server with specific connection timeouts builder.AddServer().Host("127.0.0.1").Port(11222).ConnectionTimeout(90000).SocketTimeout(900); // ConfigurationBuilder has fluent interface, options can be appended in chain. // Enabling authentication with server name "node0", // sasl mech "PLAIN", user "supervisor", password "aPassword", security realm "aRealm" builder.Security().Authentication().Enable().ServerFQDN("node0") .SaslMechanism("PLAIN").SetupCallback("supervisor", "aPassword", "aRealm"); Configuration c = conf.Build();
ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Get configuration builder for encryption SslConfigurationBuilder sslBuilder = conf.Ssl(); // Enable encryption and provide client certificate sslBuilder.Enable().ClientCertificateFile("clientCertFilename"); // Provide server cert if server needs to be verified sslBuilder.ServerCAFile("serverCertFilename"); Configuration c = conf.Build();
ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Configure a remote cluster and node when using cross-site failover. builder.AddCluster("nyc").AddClusterNode("192.0.2.0", 11322);
ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddServer().Host("127.0.0.1").Port(11222); // Enable near-caching for the client. builder.NearCache().Mode(NearCacheMode.INVALIDATED).MaxEntries(10);