Extension for ASP.NET SignalR Backplane
NCache extends the IDependencyResolver interface with its UseNCache
method which requires just the cache name and event key for the item added. This acts as the registration point for the clients against the SignalR implementation.
Note
This feature is also available in NCache Professional.
The UseNCache
method takes in the following parameters:
Parameters | Type | Description |
---|---|---|
cacheName |
String |
Name of the cache in NCache that will store the respective item for the client to trace updates via itemVersion . |
eventKey |
String |
Unique user-specified key attribute for the item added to NCache on client registration. The event key is specific to the application. Each client of the application will use the same event key while calling NCache's extension method. |
configuration |
NCacheScaleoutConfiguration |
An object of NCacheScaleoutConfiguration which extends the ScaleoutConfiguration class and takes in cacheName , eventKey , userid , and password as members. |
Prerequisites for NCache Extension for ASP.NET SignalR Backplane
- Install the following NuGet packages in your application based on your NCache edition:
- Enterprise: AspNet.SignalR.NCache
- Professional: AspNet.SignalR.NCache.Professional
- OpenSource: AspNet.SignalR.NCache.OpenSource
- To utilize the extension, include the following namespaces in your application in Startup.cs:
- Alachisoft.NCache.AspNet.SignalR
Microsoft.AspNet.SignalR
- The cache must be running.
- Make sure to use the version 2.4.0 and onwards of ASP.NET SignalR.
- For API details, refer to: UseNCache.
- Make sure that the data added is serializable.
- To ensure the operation is fail safe, it is recommended to handle any potential exceptions within your application, as explained in Handling Failures.
- To handle any unseen exceptions, refer to the Troubleshooting section.
Modify Web.config
Add the configSections
tag in <configuration>
as follows:
<configuration>
<configSections>
<section name="ConnectionOptions"
type="Alachisoft.NCache.AspNet.SignalR.SignalRConnectionOptions"/>
</configSections>
</configuration>
Add the ConnectionOptions
section in <configuration>
to set different properties to be used at the time of client connection with the cache. For a detailed description of parameters provided in the ConnectionOptions
object, refer to CacheConnectionOptions Properties.
<configuration>
<ConnectionOptions ClientBindIp="" AppName="DemoAppName" EnableClientLogs="false" LogLevel="info">
<Server name="20.200.21.39" port="9800"/>
<UserCredentials userID="john doe" password="1234" />
</ConnectionOptions>
</configuration>
Add appSettings
section specifying cacheName
and eventKey
in <configuration>
as follows:
<appSettings>
<add key="cache" value="demoCache" />
<add key="eventKey" value="chatApplication" />
</appSettings>
Register Clients to use NCache
Register an instance of the UseNCache
method in Startup.cs of your application in either of the following overloads:
Overload 1:
public static IDependencyResolver UseNCache(this IDependencyResolver resolver, string cacheName, string eventKey, string userID = null, string password = null)
public class Startup
{
public void Configuration(IAppBuilder app)
{
string cache, eventKey;
cache = ConfigurationManager.AppSettings["cache"];
eventKey = ConfigurationManager.AppSettings["eventKey"];
GlobalHost.DependencyResolver.UseNCache(cache, eventKey);
//using NCache SignalR
app.MapSignalR();
}
}
Overload 2:
public static IDependencyResolver UseNCache(this IDependencyResolver resolver, NCacheScaleoutConfiguration configuration)
public class Startup
{
public void Configuration(IAppBuilder app)
{
string cache, eventKey, userId ="", password="";
cache = ConfigurationManager.AppSettings["cache"];
eventKey = ConfigurationManager.AppSettings["eventKey"];
var options = (CacheConnectionOptions)ConfigurationManager.GetSection("ConnectionOptions");
if (options!= null && options.UserCredentials != null)
{
userId = options.UserCredentials.UserID;
password = options.UserCredentials.Password;
}
var configuration = new NCacheScaleoutConfiguration(cache, eventKey, userId, password);
GlobalHost.DependencyResolver.UseNCache(configuration); //using NCache SignalR
app.MapSignalR();
}
}
Additional Resources
NCache provides sample application for SignalR on GitHub.
See Also
.NET: Alachisoft.NCache.AspNet.SignalR namespace.