Cache Management Operations on Cache
The NCache Management API is a set of programmable method calls that enable the user to perform basic management operations on OutProc caches without using either the NCache Management Center or Command Line Tools. This Management API is usually self-sufficient when executing a request.
Prerequisites
- Install the Alachisoft.NCache.SDK NuGet package.
- Include the following namespaces in your application:
- For API details, refer to: CacheManager, CacheConnectionOptions, CacheClientConnectivityChangedCallback, ClientInfo, ConnectedClientList, GetCache.
Monitoring Clients Connected to Cache
NCache allows you to enable Client Activity Events, which notify clients about the connection and disconnection of other clients in a clustered cache. Each client can also define a custom process-level identifier, which is shared with subscribers when the client connects to or disconnects from the cache. Client Activity Events fire when a client connects to or disconnects from a specified cache. These events are registered for a specific cache and are handled through user-defined callback methods.
Note
Make sure that client events have been enabled through NCache Manager before proceeding to use them.
Connect to Cache
The AppName is a process-level unique identifier that can be assigned at the time of cache connection. For this purpose, before connecting to the cache, create an instance of CacheConnectionOptions and assign a custom identifier string to its AppName property. Thus, if this client connects or disconnects, the callbacks of all the clients who subscribed to the client will get this AppName in their ClientInfo instance.
// Create an instance of CacheConnectionOptions
var options = new CacheConnectionOptions();
// Assign the custom identifier
options.AppName = "MyApp";
// Connect to cache with custom AppName property
ICache cache = CacheManager.GetCache(cacheName, options);
Create Event Callback Method
The callback method is user-defined and is called once the clients are connected/disconnected from the cache. The method is registered against the CacheClientConnectivityChanged event property of the CacheClientConnectivityChangedCallback type in a specific cache. Hence, the method created should match the signature of the delegate:
public delegate void CacheClientConnectivityChangedCallback(string cacheId, ClientInfo client);
The created method contains the following parameters:
// User defined event callback method
static void MyClientConnectivityCallback(string cacheName, ClientInfo clientInfo)
{
// Handle event
}
| Parameters | Description |
|---|---|
cacheName |
Name of the cache with which the clients are connected or disconnected. This acts as the sender of the event. |
clientInfo |
An object of the ClientInfo class containing information regarding the client which caused the event to fire. |
Client Info Class
| Member | Description |
|---|---|
AppName |
User assigned, process-level, unique identifier. |
ClientID |
Unique ID of client. |
IPAddress |
IP through which the client is connected. |
MacAddress |
Mac address of the client. |
PhysicalCores |
Available physical cores of the client. |
LogicalCores |
Available logical cores of the client. |
ProcessID |
Process ID of the client. |
MachineName |
Machine name of the client. |
Status |
The connectivity status of the cache client. |
ClientVersion |
The version of the cache client. |
IsDotNetCore |
Flag to check whether the client is .NET Core or not. |
Memory |
Available memory of the client. |
Operating System |
The operating system used by the client. |
Register Event
The method is registered by appending it to the CacheClientConnectivityChanged property as an event callback. This enables the client to listen for connect/disconnect events of other clients. If another client connects to or disconnects from the specified cache, the callback method is called.
cache.MessagingService.CacheClientConnectivityChanged += MyClientConnectivityCallback;
Monitor Client Info of Connected Clients
The ClientInfo of each connected client is available locally in the form of the cache.ClientInfo property.
View List of Connected Clients
To get information on all the clients connected to the cache on demand, use the ConnectedClientList property on the cache as:
// Connect to cache with custom AppName property
ICache cache = CacheManager.GetCache(cacheName, options);
// Get list of all connected clients
IList<ClientInfo> connectedClients = cache.ConnectedClientList;
foreach(ClientInfo clientInfo in connectedClients)
{
Console.WriteLine($"Client ID : {clientInfo.ClientID}");
}