Products
Clients
Extensions
APIs
To begin using the VMware GemFire .NET Framework Native Client, first download the .NET Framework Client library from the Broadcom Support Portal.
Download and install VMware GemFire from Broadcom Support Portal. Follow the installation instructions in the GemFire documentation.
VMware GemFire provides the command line tool “gfsh” for managing GemFire clusters. Gfsh can be used to start and stop members of the cluster along with configure additional features of the product.
Start interactive gfsh shell in a terminal or console window.
$ gfsh _________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 10.1.1 Monitor and Manage VMware GemFire gfsh>
For this tutorial we will start a basic GemFire cluster for development with one locator and server.
Start a GemFire Locator on default port 10334. The locator artifacts, such as log files, are stored in ${HOME}/locator.
$ gfsh start locator --name=locator --dir=${HOME}/locator ................ Locator in /home/<username>/locator on test-javaclient.localdomain[10334] as locator is currently online. Process ID: 532579 Uptime: 10 seconds Geode Version: 10.1.1 Java Version: 11.0.17 Log File: /home/<username>/test/locator/locator.log JVM Arguments: --add-exports=java.management/com.sun.jmx.remote.security=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED -Dgemfire.enable-cluster-configuration=true -Dgemfire.load-cluster-configuration-from-dir=false -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/<username>/vmware-gemfire-10.1.1/lib/gemfire-core-10.1.1.jar:/home/<username>/vmware-gemfire-10.1.1/lib/gemfire-server-all-10.1.1.jar Successfully connected to: JMX Manager [host=test-javaclient.localdomain, port=1099] Cluster configuration service is up and running.
Start a GemFire Server with default a cache-server port of 40404.
$ gfsh -e "connect" -e "start server --dir=${HOME}/server --name=server" (1) Executing - connect Connecting to Locator at [host=localhost, port=10334] .. Connecting to Manager at [host=test-javaclient.localdomain, port=1099] .. Successfully connected to: [host=test-javaclient.localdomain, port=1099] You are connected to a cluster of version 10.1.1. (2) Executing - start server --dir=test/server --name=server ... Server in /home/<username>/server on test-javaclient.localdomain[40404] as server is currently online. Process ID: 534075 Uptime: 3 seconds Geode Version: 10.1.1 Java Version: 11.0.17 Log File: /home/<username>/test/server/server.log JVM Arguments: --add-exports=java.management/com.sun.jmx.remote.security=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED -Dgemfire.default.locators=192.168.0.38[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 Class-Path: /home/<username>/vmware-gemfire-10.1.1/lib/gemfire-core-10.1.1.jar:/home/<username>/vmware-gemfire-10.1.1/lib/gemfire-server-all-10.1.1.jar
A minimal GemFire cluster should now be available to use.
Next use the connect command to access the default locator at localhost and port 10334 for performing management tasks on the running GemFire cluster.
connect
gfsh>connect Connecting to Locator at [host=localhost, port=10334] .. Connecting to Manager at [host=test-javaclient.localdomain, port=1099] .. Successfully connected to: [host=test-javaclient.localdomain, port=1099] You are connected to a cluster of version 10.1.1.
The above response is an affirmative connection to the locator at localhost and port 10334 and should now be ready to manage the GemFire cluster.
A Region is the core structure in the server for holding and managing key-value data in GemFire, it is similar to a hashmap but is distributed across the server members.
While still in the gfsh interactive shell, create a partition region called example_userinfo.
example_userinfo
gfsh>create region --name=example_userinfo --type=PARTITION Member | Status | Message ------- | ------ | -------------------------------------- server | OK | Region "/example_userinfo" created on "server" Cluster configuration for group 'cluster' is updated.
The region should now be created on server.
$ unzip pivotal-gemfire-nativeclient-windows-64bit-10.x.y.zip
$ tar xvzf pivotal-gemfire-nativeclient-linux-64bit-10.x.y.tar.gz
VMware.GemFire.dll
VMware.GemFire.pdb
.csproj
<ItemGroup> <Reference Include="VMware.GemFire.dll"> <HintPath>..\VMware.GemFire.dll</HintPath> </Reference> </ItemGroup>
The following example, will PUT, GET, and REMOVE entries from the GemFire cluster and write the results out to the console.
using System; using Apache.Geode.Client; class Program { static void Main(string[] args) { var cache = new CacheFactory() .Set("log-level", "none") .Create(); cache.GetPoolManager() .CreateFactory() .AddLocator("localhost", 10334) .Create("pool"); var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY) .SetPoolName("pool"); var region = regionFactory.Create<string, string>("example_userinfo"); Console.WriteLine("Storing id and username in the region"); const string rtimmonsKey = "rtimmons"; const string rtimmonsValue = "Robert Timmons"; const string scharlesKey = "scharles"; const string scharlesValue = "Sylvia Charles"; region.Put(rtimmonsKey, rtimmonsValue); region.Put(scharlesKey, scharlesValue); Console.WriteLine("Getting the user info from the region"); var user1 = region.Get(rtimmonsKey, null); var user2 = region.Get(scharlesKey, null); Console.WriteLine(rtimmonsKey + " = " + user1); Console.WriteLine(scharlesKey + " = " + user2); Console.WriteLine("Removing " + rtimmonsKey + " info from the region"); if (region.Remove(rtimmonsKey)) { Console.WriteLine("Info for " + rtimmonsKey + " has been deleted"); } else { Console.WriteLine("Info for " + rtimmonsKey + " has not been deleted"); } cache.Close(); } }