13.11. Hot Rod C# Client The Hot Rod C# client is a new addition to the list of Hot Rod clients that includes Hot Rod Java and Hot Rod C++ clients. Hot Rod C# client allows .NET runtime applications to connect and interact with Red Hat JBoss Data Grid servers. The Hot Rod C# client is aware of the cluster topology and hashing scheme, and can access an entry on the server in a single hop similar to the Hot Rod Java and Hot Rod C++ clients. The Hot Rod C# client is compatible with 32-bit and 64-bit operating systems on which the .NET Framework is supported by Microsoft. The .NET Framework 4.0 is a prerequisite along with the supported operating systems to use the Hot Rod C# client. Report a bug 13.11.1. Hot Rod C# Client Download and Installation The Hot Rod C# client is included in a .msi file jboss-datagrid-<version>-hotrod-dotnet-client.msi packed for download with Red Hat JBoss Data Grid . To install the Hot Rod C# client, execute the following instructions. Procedure 13.3. Installing the Hot Rod C# Client As an administrator, navigate to the location where the Hot Rod C# .msi file is downloaded. Run the .msi file to launch the windows installer and then click . Figure 13.1. Hot Rod C# Client Setup Welcome Review the end-user license agreement. Select the I accept the terms in the License Agreement check box and then click . Figure 13.2. Hot Rod C# Client End-User License Agreement To change the default directory, click Change... or click to install in the default directory. Figure 13.3. Hot Rod C# Client Destination Folder Click Finish to complete the Hot Rod C# client installation. Figure 13.4. Hot Rod C# Client Setup Completion Report a bug 13.11.2. Hot Rod C# Client Configuration The Hot Rod C# client is configured programmatically using the ConfigurationBuilder. Configure the host and the port to which the client should connect. Sample C# file configuration The following example shows how to use the ConfigurationBuilder to configure a RemoteCacheManager . Example 13.8. C# configuration Report a bug 13.11.3. Hot Rod C# Client API The RemoteCacheManager is a starting point to obtain a reference to a RemoteCache. The following example shows retrieval of a default cache from the server and a few basic operations. Example 13.9. Report a bug 13.11.4. String Marshaller for Interoperability To use the string compatibility marshaller, enable the compatibility mode on the server-side. On the C# client-side, pass an instance of CompatibilitySerializer to the RemoteCacheManager constructor similar to this: Note Attempts to store or retrieve non-string key/values will result in a HotRodClientException being thrown. Report a bug

Commands:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infinispan.HotRod; using Infinispan.HotRod.Config; namespace simpleapp { class Program { static void Main(string[] args) { ConfigurationBuilder builder = new ConfigurationBuilder(); 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(); RemoteCacheManager cacheManager = new RemoteCacheManager(config); [...] } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infinispan.HotRod; using Infinispan.HotRod.Config; namespace simpleapp { class Program { static void Main(string[] args) { ConfigurationBuilder builder = new ConfigurationBuilder(); 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(); RemoteCacheManager cacheManager = new RemoteCacheManager(config); cacheManager.Start(); // Retrieve a reference to the default cache. IRemoteCache<String, String> cache = cacheManager.GetCache<String, String>(); // Add entries. cache.Put("key1", "value1"); cache.PutIfAbsent("key1", "anotherValue1"); cache.PutIfAbsent("key2", "value2"); cache.PutIfAbsent("key3", "value3"); // Retrive entries. Console.WriteLine("key1 -> " + cache.Get("key1")); // Bulk retrieve key/value pairs. int limit = 10; IDictionary<String, String> result = cache.GetBulk(limit); foreach (KeyValuePair<String, String> kv in result) { Console.WriteLine(kv.Key + " -> " + kv.Value); } // Remove entries. cache.Remove("key2"); Console.WriteLine("key2 -> " + cache.Get("key2")); cacheManager.Stop(); } } }
[...] RemoteCacheManager cacheManager = new RemoteCacheManager(new CompatibilitySerializer()); [...] cache.Put("key", "value"); String value = cache.Get("key"); [...]