Find release notes for your NCache version below.
Thu, June 06, 2024
NCache 5.3 SP4 release focuses on extending platform support and boosting performance to provide a more robust and efficient caching solution. Future updates will continue to expand compatibility and feature sets.
NCache now provides full compatibility with .NET 8, allowing developers to leverage the latest features and improvements in .NET 8 for building and managing their distributed cache systems.
Support for Linux-based .NET clients is coming soon, enabling cross-platform compatibility and more flexible deployment options.
Significant performance improvements have been made to the event notification system. These optimizations reduce latency and increase throughput for event notifications, enhancing the overall responsiveness and scalability of NCache in high-transaction environments.
NCache 5.3 SP4 is released exclusively for the Enterprise edition. The Professional edition remains on SP3.
Tue, Feb 01, 2024
NCache 5.3 SP3 contains some very important enhancements and bug fixes.
In NCache 5.3 SP3, a significant advancement has been made in server-side code execution with the introduction of the NCache Execution Service. This service represents a unified execution model that has been implemented in both the Java and .NET editions of NCache.
For the Java edition, this separate execution process, the NCache Execution Service, is responsible for running server-side user code, including Cache Loader, Refresher, Readthrough, and Writethrough operations. This change streamlines the execution of server-side code, ensuring efficient and consistent operation across the Java platform.
In the .NET edition, the NCache Execution Service has been similarly adapted but is specifically designated for the Cache Loader and Refresher code execution. This enhancement in the .NET edition aligns with the execution model's overall objective to optimize and standardize server-side code execution processes.
The Java client cache architecture has been synchronized with the .NET client cache architecture. This synchronization includes the implementation of Readthrough and Writethrough mechanisms in the Java client cache, as well as enhanced synchronization between L1 and L2 caches. This alignment ensures consistency and efficiency across different platforms.
The NCache Management Center sees notable improvements, including the ability to download log files. This new feature adds a layer of convenience for users managing cache servers. Additionally, the capability to start, stop, and restart services for NCache Service, NCache Execution Service and NCache Bridge Service has been added, enhancing administrative control and flexibility.
The Export-CacheConfiguration command has undergone enhancements to improve the folder structure for exported cache configurations. It now includes an option to incorporate server-side feature deployments in exports, providing a more comprehensive configuration management capability. Moreover, the specification of a cache name for exports has been made mandatory, ensuring clearer and more precise configuration exports.
Upon creation of a cache using the exported configuration, NCache automatically deploys the required libraries along with the configuration.
An enhancement has been introduced to streamline the process of adding nodes to a cache cluster in NCache. Users no longer need to manually deploy server-side providers for features such as Readthrough, Writethrough, or Cache Startup Loader on each new node added to an existing cluster.
With the Automatic Deployment feature, NCache automatically deploys the necessary server-side providers for configured features when a new node is added to the cluster. This automation simplifies the process and ensures that new nodes are fully equipped to participate in the cache cluster without requiring manual intervention from users.
NCache 5.3 SP3 introduces a significant enhancement in the registration process, particularly for Docker instances. Previously, only a server image was available on DockerHub for NCache, and users seeking a Developer installation had to create their own Docker images. With the new update, a single published image on DockerHub can now be used flexibly for either Server or Developer installations. This improvement greatly simplifies the process for users working with Docker.
During the registration of a Docker instance, users must specify the installation type using the -RegisterAs parameter. This parameter allows users to choose from 'CacheServer', 'RemoteClient', and 'Developer' modes, with 'CacheServer' being the default. If the -RegisterAs parameter is not specified, the system assumes a Server installation by default. This enhancement not only brings convenience but also provides flexibility in configuring Docker instances according to specific requirements.
In NCache 5.3 SP3, a new feature has been introduced to facilitate NCache clients connecting to cache servers through a load balancer. This feature is particularly relevant in scenarios where direct knowledge of cache servers by the clients is not feasible, such as in environments using Kubernetes clusters or cloud subscriptions with restricted access (like Azure or AWS using Private Links).
Traditionally, NCache architecture requires each client to establish a connection with each cache server. However, when a load balancer is introduced into this architecture, it obscures the direct visibility of individual cache servers from the clients. To address this, NCache 5.3 SP3 implements a mechanism where, upon the client's initial connection to the first cache server via the load balancer, the server shares information about the other cache servers in the configuration.
The client, upon receiving this information, begins to attempt connections to the other servers through the load balancer. This process continues until connections with all servers are established or until a configured number of attempts have been exhausted. This approach ensures that the client can maintain a complete connection with the cache cluster, even in the absence of direct visibility to each server.
This release discontinues support for .NET 4.6.1 and earlier versions, reflecting ongoing updates to technology standards. The minimum supported .NET client version is now .NET 4.6.2.
Enhanced security has been integrated into the Java client through TLS support.
Direct integration with the latest versions of Hibernate and Spring is now provided, streamlining the integration process. Previously, this integration was only available through JCache interface.
Efficient session management for Spring-based web applications has been introduced, enhancing the functionality of NCache in these environments.
Previously, NCache offered a 60-day Free Trial period. However, this duration has been reduced to 30 days in the latest update (5.3 SP3). Despite this change, customers still have the option to extend their evaluation period by contacting the sales team. Upon request, the sales team can provide extension keys that allow customers to extend their NCache evaluation period up to 120 days.
Oct 03, 2023
NCache 5.3 SP2 contains some very important bug fixes and enhancements.
We have introduced Credential Caching in this release to enhance the performance and efficiency of authentication operations in the system. It provides a caching layer on top of the existing security provider, reducing the need for repetitive authentication calls to the underlying authentication system (such as LDAP or Active Directory).
Following are some enhancements made in this release:
User credentials (username and encrypted password) are cached in memory upon successful authentication against the LDAP / Active Directory server. This eliminates the need for reauthentication in subsequent requests by multiple clients for the same user.
Credential caching improves NCache performance by reducing expensive trips to the LDAP/Active Directory servers. It also reduces load on your LDAP/Active Directory servers in a high transaction environment where NCache usually lives.
The user experience is the same as before for specifying NCache security.
By default, the Credential Caching feature is enabled but you can easily turn it off through a config file change. The 'NCacheServer.EnableCredentialCaching' flag in the NCache service configuration file enables/disables this feature.
NCache now extends its TLS Encryption capabilities to secure communication not only between clients and servers but also between server nodes. While NCache previously offered TLS Encryption for client-server communication, this enhancement focuses on securing data exchange among server nodes within the cluster. This added layer of encryption ensures that all data transmitted between server nodes remains confidential and protected from potential threats, enhancing the overall security of your distributed caching environment.
NCache introduces TLS Encryption support for communication across bridge connections. With this feature, NCache ensures that data transmitted between cache clusters connected via bridges is encrypted and secured. This enhancement secures the data flowing through bridge connections, adding an extra layer of protection to your distributed caching infrastructure. It's worth noting that NCache had previously offered TLS Encryption for client-server communication, and this expansion now covers bridge connections as well.
In this release, we have enhanced our security protocol support by introducing the capability to place NCache certificates not only in the Trusted Root store, but also in the Personal ('My') store. This enhancement will allow for smoother operations in environments where group policy permission restrictions may affect the storage of certificates in the Root store.
For a smooth operation, it is essential that certificates are issued by a well-known public Certificate Authority (CA), which is inherently trusted by most systems. This allows client machines to validate the server's certificate without requiring the CA certificate to be installed in their Trusted Root store.
However, for private CAs, the CA's certificate must be installed in the Trusted Root store on all participating machines to allow successful validation and secure communication.
NCache introduces the ability to seamlessly combine node and cache security for enhanced control and flexibility. With this feature, when node security is enabled, all caches on the respective node are automatically secured. Node administrators have comprehensive control over both cache data and node management tasks. On the other hand, cache users can be specifically associated with individual secured caches, granting them access solely to cache-related operations through NCache APIs. This combination empowers administrators to tailor access permissions, ensuring that cache users have limited access to cache APIs, while node administrators have broader access encompassing both API interactions and management operations.
NCache introduces the ability to enhance your security configuration by allowing group-based authorization. Now, you can easily add LDAP groups as node administrators or cache users, simplifying the management of permissions across your NCache cluster. This feature streamlines the process of authorizing multiple users within an organization by granting group access to cache nodes and caches.
NCache has upgraded its LDAP provider for Windows based servers to leverage the enhanced authentication and authorization capabilities provided by the more recent implementation of LDAP offered by Microsoft. Explore the capabilities of this upgraded LDAP provider through Microsoft's LDAPConnection documentation.
In this latest release of NCache, we've introduced a technical refinement by renaming the NCache Manager to the NCache Management Center. This alteration represents a strategic move towards enhancing the tool's functionality and providing users with a more advanced platform for cache cluster management. While the name has evolved, the underlying capabilities and features remain robust, allowing you to seamlessly configure, monitor, and administer your cache clusters with precision and efficiency.
NCache has further enhanced its user-friendly interface for securing cache nodes. While we previously offered this feature, we have now made significant improvements to ensure an even smoother experience. The process of configuring cache node security is now more intuitive and streamlined, allowing you to effortlessly secure your cache nodes with ease.
NCache Management Center, formerly known as NCache Manager, now includes authentication functionality. When a node is secured, the NCache Management Center will prompt users to authenticate by displaying a login page. This ensures that only authorized users gain access to the management center, providing an additional layer of security to your NCache environment. Only the configured node administrators can login to the secure node.
NCache now offers a seamless way to configure Transport Layer Security (TLS) through the new Enable-NCacheTLS and Disable-NCacheTLS cmdlets. Previously, users had to manually configure TLS by editing registry settings, which could be complex and time-consuming. With these cmdlets, you can effortlessly enable or disable TLS on one or more servers and client nodes.
NCache introduces an enhanced approach to managing security settings through PowerShell, offering more granular control over security configurations. The revamped Enable-NCacheSecurity and Disable-NCacheSecurity cmdlets simplify the process of enabling or disabling security while providing greater flexibility.
With the introduction of the Add-NCacheUserOrGroup and Remove-NCacheUserOrGroup cmdlets, administrators can efficiently manage users and groups with specific access privileges. This expanded PowerShell-based security management enhances control and customization options for securing NCache environments.
In this latest NCache release, we are excited to introduce NCache Playground. It’s a powerful and interactive tool designed to enhance your experience with NCache. NCache Playground serves as a dedicated environment for users to explore, experiment, and familiarize themselves with NCache features, samples, and real-world scenarios. With NCache Playground, you can effortlessly run NCache samples, make on-the-fly adjustments, and execute exercises without the need for a full-fledged development environment. This tool is ideal for users looking to quickly grasp NCache concepts, evaluate its capabilities, and accelerate their learning curve.
Sept 12, 2022
NCache 5.3 SP1 contains some very important enhancements and bug fixes. The release also contains major user experience improvements. NCache 5.3 SP1 is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
For NCache images available on Azure and AWS, the registration for free evaluation of NCache is supported in NCache Web Manager. When a machine is not registered either with evaluation or a license key, the NCache Web Manager’s default screen takes users to a registration process to either start their evaluation or activate their boxes.
The feature 'NCache NoSQL' released in 5.3 has been renamed to 'NCache Persistence'. The working of the feature remains the same, however, the additional providers are removed. The NCache Persistence can now only be used with the built-in file system based store.
All NoSQL related PowerShell cmdlets have also been renamed.
A separate NuGet Package is released for NCache CLR Stored Procedures. This helps in easily creating CLR Stored Procedures that use NCache API.
Instead of using configurations specified in client.ncconf, users can force SignalR applications to use the connection options specified in web.config or appsettings.json files of the application. If specified, the application will use these settings.
The refresh interval value can now be set in seconds instead of minutes. The change has been made to accommodate scenarios where refresher should run at an interval of less than a minute.
MapReduce, Aggregator and Memcached integration are marked deprecated and will be removed in the next version.
April 12, 2022
NCache 5.3 contains some very important new features and also various performance and memory optimizations. The release also contains major user experience improvements. NCache 5.3 is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
NCache is now providing a NoSQL Database feature where the entire database is In-Memory and distributed but it is also persisted to a permanent storage in real-time. This real-time persistence ensures that your In-Memory data is always in sync and never lost even when you restart all the NCache servers.
NCache provides the following real-time persistence options For NoSQL Database:
You can use NCache NoSQL Database in the following ways:
NCache provides Distributed Lucene for .NET applications using Lucene for Full Text Search. Distributed Lucene takes the standard Lucene.NET index and makes it distributed so you can scale the Lucene index to multiple NCache servers even at runtime. This not only allows you to increase your index size but also your application transaction capacity because your application now talks to multiple NCache servers for Lucene.
Here are some highlights of Distributed Lucene feature:
NCache now provides a Python Client on both Windows and Linux. This Python client has all of client-side API features of NCache that traditionally .NET and Java clients enjoyed.
NCache now provides a Scala Client on both Windows and Linux. This Scala client has all of client-side API features of NCache that traditionally .NET and Java clients enjoyed.
NCache provides Import and Export tools as PowerShell Cmdlets. With these tools, you can import or export JSON / CSV data into the NoSQL Database or out of it. This allows you to extract all or portions of your NoSQL database.
NCache Persistence Provider for NoSQL Database persists data in multiple files located in a shared network folder (based on UNC path). So, you can use regular file system tools to perform backups.
To provide online backups capability, NCache also provides an admin tool (as PowerShell Cmdlet) to briefly suspend NCache writes to the persistent storage and only make them in memory while you’re performing your filesystem backup. But, when you’re done with backup, you can enable writes and all the pending writes are immediately applied to the persistent storage.
If you’re using SQL Server or MongoDB as your storage option, then these database provide online backup tools that you should use.
NCache gives you the ability to import an existing Lucene index into NCache Distributed Lucene in a bulk file copy manner that is much faster than reading documents from your existing Lucene index and individually writing them to NCache Distributed Lucene thru its API.
You can do the following types of import of Lucene index:
NCache partitions and saves Lucene index into a distributed environment and on each NCache server. And, all index is stored as multiple files. Therefore, you can use regular filesystem backup / restore tools on them.
Currently, you cannot perform online backup unless your application is not making any updates to Lucene index. You must choose a low-traffic time to stop the servers and do you backup.
Restoring a Distributed Lucene index is the same as restoring file system files and therefore possible. You can have to restart NCache servers with the same distribution configuration information that you had when you did the backup.
NCache now fully supports .NET 6.0. All NCache Servers are compiled in .NET 6.0 (or .NET Framework 4.8 if you’ve downloaded that version). NCache clients are also .NET 6.0. However, NCache also provides support for earlier version of both .NET Core and .NET Framework for NCache clients.
NCache now allows you to use JSON Serialization for your ASP.NET / ASP.NET Core sessions. Previously, the only option you had was to use Binary Serialization provided by .NET. We still have Binary Serialization option but in .NET 6.0, Binary Serialization is disabled by default and is not recommended.
JSON Serialization also lets you use objects that are not marked “Serializable” and also without using Compact Serialization on them. With JSON Serialization, you only have to make configuration setting change.
In order to include any object attribute in NCache SQL Queries, you must index it first. Previously, the only way to index was to define an index as part of NCache configuration. That is still possible and a good way to do this.
However, now you can define query indexes programmatically using custom annotations. With this, you now have full support of different ways of creating query index in NCache.
NCache now supports nullable properties for creating an index and then using them in SQL Queries. This feature is provided because .NET properties and fields are nullable. But, previously NCache did not provide support searching based on null values and now it does.
NCache now supports Geospatial indexes in Full Text Searching with Distributed Lucene. Just like regular Full Text Search Lucene index, the Geospatial indexes also use Lucene.NET internally to support Geospatial queries. The NuGet Package for Geospatial indexes is separate from the Full Text Search index NuGet Package.
NCache now supports Faceted Search with Distributed Lucene. Faceted Search is a technique that involves augmenting traditional search techniques with a faceted navigation system. This allows the user to narrow down search results by applying multiple filters based on a faceted classification of the items.
NCache provides a NuGet Package for Faceted Search that has all the APIs required to perform Faceted searches.
Evaluation periods are already tracked in previous version of NCache at email domain level and not at individual download or individual installation level. This means that if you had evaluated an earlier version of NCache but didn’t buy it, your evaluation period most likely has expired already.
However, NCache 5.3 starts your evaluation period fresh for this version. You get a 30-Day evaluation period like before and you can ask our sales team to extend it 30 days at a time for up to 180-day total.
NCache had earlier implemented smart object pooling and also breaking up larger objects into less than 80K objects so LOH is not frequently used. This earlier memory optimization had already improved NCache performance quite a bit for most commonly used “atomic operations” like Get, Insert, Update, Delete of individual items.
However, a number of other areas like bulk operations, query indexes, SQL searching, etc. were not fully optimized in this manner and therefore resulted in frequent use of LOH and Gen2 collections and hence not the best performance.
Now, this version of NCache has optimized memory management in all these areas that has resulted in an even faster performance of NCache all around.
Following optimizations have been made:
NCache traditionally ran in an on-premises environment and therefore there wasn’t any need for using https to access NCache Web Manager. But, now with Azure, AWS, and other clouds becoming very prevalent, more and more situations are arising where a user may need to access NCache Web Manager thru https.
NCache now provides support for https for accessing NCache Web Manager. By default, it is http but you can configure it to use https if you have a certificate.
NCache has traditionally required that you specify NCache servers based on their ip-address and not machine names. The reason behind this was that in many situations, NCache servers have multiple Network Interface Cards (NICs) and you didn’t know which NIC did the machine name map to. Therefore, using ip-address for NCache servers and clients is still the preferred way.
But, now NCache provides you the ability to specify machine names instead of ip-address if you wish. You are be able to specify machine name for adding a cache server or a cache client to the cache configuration. Similarly, all views on NCache Web Manager continue to use ip-addresses by default.
October 12, 2021
NCache 5.2 SP1 contains a few important performance and memory optimizations. The release also contains major user experience improvements. NCache 5.2 SP1 is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
Bulk operations with relatively larger item size were taking a lot of memory in previous versions. In this release, object pooling and other LOH avoiding techniques are used to have a smaller memory footprint on code paths related to Bulk operations.
The latest version of protobuf-net has some major memory enhancements. NCache now uses the latest version of protobuf-net to further improve the memory and performance.
Previously, offline activation was a multi-step process that required NCache users to talk to Alachisoft Support team. Now with this newer version, users can complete the offline activation without contacting Alachisoft support team.
Installation keys come with FREE evaluation of 30 days. In this newer version, the installation keys are tracked at customer domain level instead of individual customer. So the evaluation of NCache actually starts from the day of download by the first user in the company. However, each version of NCache will have its own evaluation period from now on.
March 25, 2021
NCache 5.2 contains a few important features related to caching. The release also contains major performance improvements. NCache 5.2 is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
Cache Loader/Refresher is a service that runs periodically at a configurable interval and refreshes cache data. Users configure this feature by adding one or more named datasets in configuration. Each dataset can be configured to be either loaded one time or refreshed periodically.
Following two additions are made to Pub/Sub.
At the time of creation of a TOPIC, a priority can be assigned to a TOPIC. Messages from the higher priority TOPICs are delivered first while the messages from the lower priority TOPICs are evicted first. If priority is not assigned, a TOPIC is created with ‘Normal’ priority.
Publisher should be able to send messages with instructions to preserve the order in which they are published. Such messages are delivered to subscribers in the exact same order as they were published with. Ordered messages from a certain publisher will reside on one cache server. This will be implemented using location affinity.
All ordered messages will be delivered to the same subscriber in case of DeliveryOption.Any.
For applications purely using JSON API, defining .NET or Java based query indexes may not be possible. Therefore, definition of indexes from JSON documents is supported.
In this case, user specifies the path to a json file. NCache Web Manager reads the attributes in json file and list them in a grid. User can select one or more attributes from the list for which indexes should be defined.
Query indexes from json document can also be created using PowerShell command.
Custom dependency is now deployed on the server side. Just like Read/Write Thru providers, users need to implement Custom Dependency providers. There can be one or more custom dependency providers and each will have a unique name.
When adding an item through API, user specifies the name of custom dependency provider already configured and deployed.
Users may want to change the way text and subject of email notifications they receive from NCache. All the text and subject of emails that are generated by NCache use templates. These templates are shipped inside install directory. Users can change these templates according to their requirements.
In some organizations, there may be more than one domain controller configured for high availability. When a primary domain controller goes down, the secondary controller becomes active. NCache now also supports to configure security with both primary and secondary domain controller.
TLS 1.2 support is provided for transport level communication between NCache server on Linux and cache clients.
Sharing sessions between an ASP.NET and ASP.NET Core applications is supported. This can be enabled from configuration settings. For sharing sessions between different applications, all applications must use the same custom session id generator.
This is also supported for multi-regional sessions.
Session sharing is not supported if configured through IDistributedCache.
Users can specify SQL dependencies to invalidate the response of a page from cache. If the data corresponding to the SQL specified gets modified or deleted, the response of the cache gets deleted. On the new requests, it gets regenerated and is added to cache with the same SQL dependency.
This is not supported if configured through IDistributedCache.
NCache can be used as an external store for Identity Server 4 as;
When configured with NCache, user may want to use different caches session caching and data caching. NCache should provide an option to use multiple caches for different purposes when used as IDistributedCache.
The new Java client is 100% identical to the new .NET API. It has following services;
The new Java client also uses pipelining for better performance.
Following server-side modules can be written in Java.
NCache now has a Node.js client which is 100% identical to the new .NET & Java JSON API. It has following services;
Integration with Prometheus for monitoring key metrics of NCache. NCache publishes a configurable set of counters to Prometheus server.
NCache dashboard for Grafana is provided on Grafana gallery. The dashboard has various counters that are fetched from Prometheus server where NCache is publishing its counters.
NCache Professional now has a web based GUI tool for NCache management and basic monitoring. NCache Web Manager allows users to create, configure, start and stop caches. This also helps them quickly run a stress test and see statistics.
November 23, 2020
In NCache 5.1, there are some important bug fixes and a few new enhancements made.
Following are some enhancements made in this release:
Server-only licensing now also takes memory into consideration for calculating the number of licenses required on a machine. The number of clients that can connect to a server is now unlimited in the server-only licensing.
Based on the combination of size of RAM and number of vCPUs, the number of licenses required on a machine is determined. These combinations are given on NCache pricing page in form of license plans.
Activation on client machines is not supported anymore.
Even if your license is client-server, you’re only required to activate cache servers. At the time of activation, users need to specify the number of client licenses too to activate on the cache server.
NCache Professional edition does not support this licensing scheme.
Users can now create FREE DEV/Test cache servers. Remote clients can connect to these cache servers, however, with a following few limitations;
Now users can register remote machines for FREE evaluation of NCache using ‘-Server’ parameter in Register-NCacheEvaluation PowerShell command.
August 06, 2024
NCache 5.0 SP7 is released only for NCache Open Source edition. This release contains a few important updates in Open Source edition.
April 24, 2024
NCache 5.0 SP6 is released only for NCache Open Source edition. This release contains a few important bug fixes and some new restrictions in Open Source edition.
October 28, 2020
In NCache 5.0 SP4, there are some important bug fixes and a few new enhancements made.
Following are some enhancements made in this release:
WAN Replication can now be customized further to have more control over how frequently data is replicated between two data centers. Here are the configurations;
Replication Interval is the intermediate delay interval in milliseconds between two consecutive replications. Its default value is set at 3000 milliseconds (3 seconds). Users can change this interval as per their requirement by adjusting the value of the ‘NCacheServer.BridgeReplicationInterval’ tag in the NCache service configuration file.
The cache sends operations to the bridge in bulk of provided threshold size. The default size is 500 KB. Users can configure this size by changing the value of tag 'NCacheServer.BridgeBulkOperationSize' in the NCache service configuration file.
Support for the latest version of EFCore is provided in this release.
Server-Only licensing is supported in this new release where only server licenses are purchased. In this type of licensing, one cache server requires minimum of 4 licenses.
Following features are added to NCache professional.
NCache sends a feature usage report once a month to Alachisoft server. This is done to improve the product based on the data received from customers. Following information is part of this report;
A new PowerShell cmdlet ‘Register-NCacheEvaluation’ is provided to register NCache for free evaluation using the evaluation key received from Alachisoft. This cmdlet can also be used to extend the evaluation period.
NCache Open Source can be registered using Register-NCacheOpenSource cmdlet.
This release of NCache supports NCache Cloud offering. NCache Cloud Service is offered in Azure and AWS.
All editions of NCache can now be installed in Azure and AWS but it is recommended that NCache’s marketplace image is used instead of installing NCache.
June 15, 2020
In NCache 5.0 SP3, there are some important bug fixes and a few new enhancements made.
Following are some enhancements made in this release:
NCache Remote Clients normally require at least 2 licenses per box. If a machine has more than 8 cores, it requires an additional license for every 4 cores. For example, a machine with 12 cores requires 3 licenses and 20 core requires 5 licenses.
However, for NCache SaaS users, the licenses required for remote clients never exceed 4 even if the number of cores on that machine are more than 16.
Following are the new PowerShell commands added.
Following enhancements were made to the existing PowerShell commands.
December 09, 2019
In NCache 5.0 SP2, there are some important bug fixes and a few new enhancements made.
Following are some enhancements made in this release:
Previously, Bridge could not have more than 2 caches. In this release, NCache now supports to have more than 2 caches in a Bridge. At least one cache must be active.
Even though active caches replicate their data automatically to other caches in a Bridge, the state transfer between the caches is no more active. When a cache goes down or a new cluster is added, a manual interaction to synchronize caches is required.
LDAP security support is added for both Windows and Linux. Previously, there was no support for LDAP on Linux, while Windows had Active Directory based support.
Following enhancements have been made in Pub/Sub (TOPIC):
Following enhancements have been made to Custom Dependency feature.
NCache now uses System.IO.Pipelines for high performance IO operations between clients and servers. Due to this approach, NCache is able to perform 2 Million operations per second on a 5 node cluster.
Pipelining is enabled by default on all caches. However, this can be disabled at the time of cache creation or through modifying cache configuration at any time.
Architectural changes are made to NCache to add support for dynamically registering modules that can use NCache’s distributed architecture without making any changes in NCache source code.
Lucene.NET support is also added through NCache Modules.
Following PowerShell Cmdlets are added:
For details, please see NCache Edition Comparison
August 26, 2019
In NCache 5.0 SP1, there are some important bug fixes and a few new enhancements made.
Following are some enhancements made in this release:
NCache SignalR backplane for ASP.NET Core applications is provided.
Web management can now be done from Internet Explorer 11 (latest release) but its recommended to use Microsoft Edge, Chrome, Firefox or Opera.
Installation keys for all editions of NCache are now dynamically generated at the time of download. This means that every customer gets a unique installation key.
Cache servers in Professional and Open Source editions are only .NET based. Clients are available for both .NET and .NET Core. Cache servers can't be installed on Linux for these two editions.
Open source and Professional editions have gone back to Alachisoft's original strategy where we had a limited number of features in both Open Source and Professional editions.
For details, please see Edition Comparison
May 14, 2019
NCache 5.0 contains a few important features related to clustering and caching. The release also contains major performance improvements. NCache 5.0 is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
NCache API has been refactored to make it simpler and easy to use by reducing the number of overloads to various methods. The new API is also using the latest features of C# and .NET Framework (Task Parallel Library, async methods, and generics).
Following enhancements are made to the NCache messaging framework.
However, for durable subscriptions (named subscriptions), messages are stored until they are pushed to ALL or ANY subscribers within that subscription. If a durable subscriber comes back after an abrupt disconnection (leaving without calling Unsubscribe), it will be able to receive the messages published during the time it was down.
However, messages are removed from store after their expiry even if they are not delivered to ALL or ANY subscribers.
There are further two policies in Durable Subscriptions.
-Shared, where there can be multiple subscribers in a subscription.
-Exclusive, where then can be only one subscriber at a time in a subscription. All non-durable subscriptions are Exclusive.
Some major performance improvements are made in this release. Core sub-systems are redesigned to gain better performance of cache operations. Some of these improvements include the incorporation of the latest libraries like System.IO.Pipelines from Microsoft. System.IO.Pipelines is a new library that is designed to make it easier to do high-performance IO in .NET.
All NCache events now internally use the more reliable NCache’s Pub/Sub framework. Following types are events are now based on Pub/Sub.
NCache’s SQL is enhanced now to have projections as well as FROM clause in an SQL statement. Previously, there were no projections in the SQL statement and as a result, complete cache items were returned matching the given criteria.
Support to search cache items by their ‘Group’ through SQL is provided. Using this feature, users can query cache to return cache items against a ‘Group’ just like they do it for ‘Tags’.
Traditionally NCache stores items in the cache as Binary data. Binary serialization can be expensive in terms of both time as well as the memory it consumes. In NCache 5.0, users can optionally configure Cache to have JSON serialized store. JSON serialization is efficient in most cases.
NCache now has distributed data types and data structures provided as implementations of .NET’s interfaces. Following implementations are provided.
System.Collections.Generic.IList<T>
. It allows duplicate keys and preserves their order.System.Collections.Generic.ICollection<T>
. It does not allow duplicate keys and does not preserve order. DistributedHashSet has additional methods for Union, Intersection, and Difference of two sets.System.Collections.Generic.IDictionary<TKey, TValue>
. It lets users store data in key-value pairs. Order is not preserved in this data structure.System.Collections.Generic.ICollection<T>
. However, data stored in this data structure is consumed in the FIFO model, as it is in the case of Queues.Stopping a server node in maintenance mode causes the redistribution of data between the remaining nodes. This can take a lot of time depending on the data in the cache. During this time, the cache is in a vulnerable state and some operations might fail or take longer to execute.
With this new feature, when a node is stopped for maintenance, the data in the cache is not redistributed. The feature is useful when a node in the cluster is stopped for a short time to apply patches or other maintenance work.
Location affinity means keeping the related cache items on one node. This feature can be helpful in many ways like faster queries and bulk operations etc.
Lucene.NET is a text searching engine library but it's not distributed. With NCache’s Lucene.NET SDK, users will be able to build distributed Lucene indexes and query them. NCache’s Lucene.NET SDK is similar to Lucene.NET library, therefore, users don’t have to learn much to use NCache’s DistributedLucene.NET API.
. NET Core based NCache Server will be available on Windows too. Previously, it was only available on Linux.
This is a new licensing scheme where licenses are only activated on cache servers. However, cache servers are also activated to allow a certain number of clients to connect with caches. The number of server and client licenses required is the same as in Client-Server activation scheme.
NCache configuration, management, and monitoring are done through a web-based application. By default, this application is installed on all cache servers and clients. Users can connect with any of the servers from their browsers to manage their cache clusters.
The application is ASP.NET Core based and therefore, can run on Windows as well as Linux. This application has all the features as the Desktop based NCache Manager had. Desktop-based NCache Manager and Monitor are discontinued.
Following few PowerShell commands are added;
August 07, 2018
In NCache 4.9 SP1, community edition has been discontinued and Professional edition has been brought back. There are some important bug fixes and a few new enhancements made in this release. Enhancements and New Additions.
Following are some enhancements made in this release:
NCache Server (.NET Core based) can now be hosted on Linux boxes. Separate installers for Linux (.tar.gz) are made available for download.
The 30-Day fully working trial is back. There are no performance limitations during evaluation period now.
Professional edition has the same features as they are in Open Source edition plus some extra management PowerShell commands. Both client and server installations have a free 30-Day Trial.
Docker images for Linux and Windows Nano server are made available on Docker Hub. Docker files are also available on GitHub.
A perfmon counter is introduced to monitor number of items in bridge.
Support for wildcard search in GetKeysByTag and GetByTag APIs is provided.
Support is provided to enable client side logging from API through CacheInitParams interface.
Subscription based licensing has been introduced to support both cloud and on-premise deployments.
February 14, 2018
NCache 4.9 contains a few important features related to clustering and caching in ASP.NET Core. This setup also has some performance improvements and is, therefore, a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
Split-Brain is a situation where due to temporary network failures between cluster nodes result in multiple sub clusters. Each sub cluster, in this case, has its own coordinator node and does not know about the other sub clusters. This can eventually result in inconsistent data. With NCache 4.9, users can enable the cache clusters to automatically recover from SplitBrain scenarios.
NCache's implementation of IDistributedCache utilizes Distributed Cache Tag Helper that provides the ability to dramatically improve the performance of your ASP.NET Core app by caching its responses.
There is 20-25% performance improvement in basic ADD, INSERT and GET cache operations.
Open Source and Community editions have now same client API as Enterprise edition has. That means, all Enterprise developer features are now also available in Open Source and Community editions.
November 2, 2017
NCache 4.8 contains a few important features related to runtime data sharing, messaging and .NET Core. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
NCache 4.8 has now launched a FREE Community and it provides the powerful GUI based NCache Manager to let you easily configure caches from a central location. With NCache 4.9, users can enable the cache clusters to automatically recover from SplitBrain scenarios.
NCache now provides a totally native .NET Core Client that can run on both Windows and Linux. On Windows, NCache .NET Core client is installed through a Windows Installer (.msi). However, on Linux a separate installation (.tar.gz) is provided.
NCache now fully supports Docker for both cache clients and cache servers. You can configure your .NET applications to be deployed in Docker and include NCache Client with it seamlessly.
NCache now provides full ASP.NET Core support, both on .NET Framework and .NET Core (previously it was only on .NET Framework). This support includes a powerful ASP.NET Core Session Provider that has more features than the regular ASP.NET Core Session Provider. And, it also includes support for IDistributedCache interface in ASP.NET Core.
Publish/Subscribe (Pub/Sub) messaging paradigm is provided where a publisher sends messages into channels, without knowing who (if any) are the subscribers. And, Subscribers only receive message of their interest without knowing who the publishers are.
NCache has implemented very easy to use EF Core 2.0 Extension Methods to allow you to cache application data that you’re fetching through EF Core 2.0.
All communication from NCache clients to NCache servers can now be optionally secured through TLS 1.2 (a newer specification than SSL 3.0). TLS 1.2 ensures that all data traveling between NCache clients and NCache servers is fully encrypted and secured.
NCache traditionally provided powerful GUI based cache management tools and also a rich set of command line tools. Now, NCache has implemented all of its command-line cache management tools in PowerShell. You can now write PowerShell scripts for more sophisticated cache management.
Some firewalls break idle network connections which causes problems in cache client to cache server communication in NCache. Cache Client Keep Alive feature, if enabled on client node, automatically sends light a weight packet to cache servers at configurable interval (sort of a heart-beat). These packets are only sent in case of no activity between clients and servers and therefore do not interfere with regular client/server traffic.
NCache Manager used to keep some cache configuration information inside the project file. However, that used to cause data integrity issues if multiple people tried to modify cache configuration from different machines. To fix this, NCache Manager now does not store any cache configuration information inside its project files. Instead, all configuration information is kept on cache servers that are common from all places and not data integrity issue arises any more.
Traditionally, NCache has only provided a client/server licensing option that requires both cache clients and cache servers to be licensed. However, now NCache provides an additional server-only licensing option where the cache clients do not require any licenses. Only the cache server requires licenses. If you wish to use server-only licensing, then please contact your account manager for its details.
May 10, 2017
NCache 4.6 SP3 contains a few minor features and client cache optimizations. There are also various bug fixes reported by customers. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
With NCache 4.6 SP3, cache can be used to distribute messages across a SignalR application that is deployed on multiple web servers.
Client side data reader is introduced which is more stable and fault tolerant during the state transfer in cache.
More samples have been shipped with NCache installation. Existing samples are also refactored.
January 3, 2017
NCache 4.6 SP2 contains a few client cache optimizations, enhancements in Bridge topology and feature related to monitoring of cache. There are also various bug fixes reported by customers. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
A new API is introduced to monitor cache client connected with a cluster. Using this API, a list of connected clients can be fetch as well as notifications can be registered in case of any new client connects or an existing one disconnects.
Client Cache has now optimized way of synchronizing itself with the clustered cache. Instead of receiving events on each update made to clustered cache, client cache can now receive events in bulk at a configurable interval. This reduces the traffic as well as memory usage.
NCache Bridge can now have caches with identical names.
Cache Loader in NCache can now run on multiple nodes which can help in faster cache loading.
FIPS-Compliant AES encryption is introduced in SP2.
NCache ASP.NET session storage provider for ASP.NET Core applications is now supported.
NCache is now licensed based on the number of cores a machine has. For every 4 cores, 1 license is used. Minimum of 2 licenses are used to activate a machine even if the number of cores are less than 8. For 16 cores, 4 licenses are used, for 20 cores 5 are used and for 32 cores, 8 licenses are used. Developer licensed machines can now connect to a remote cache but with limitations on number of requests per second and total number of requests a client can make to a remote cache.
May 03, 2016
NCache 4.6 SP1 contains a few optimizations related to memory and huge improvements in performance of NCache. This is a recommended upgrade for all NCache users.
December 7, 2015
NCache 4.6 contains a few important features related to runtime data analytics, performance and memory optimization of NCache. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
NCache cache can now be configured to store data in objects form. By default, all data is stored in binary form.
Each cache in NCache is now hosted in its own process which runs independent of all other caches. Management of this process is done via NCache service which has information about all the cache processes running on the machine.
MapReduce in NCache will allow developers to write programs that process massive amounts of unstructured data in parallel across a NCache cluster. To distribute input data and analyze it in parallel, MapReduce operates in parallel on all nodes in a cluster of any size.
Aggregator processes data records and returns compiled results. It groups values from multiple sources and can perform variety of operations like sum up values, calculating averages, finding minimum/maximum values etc. and returns single result
NCache provides the ability to execute users’ code on server side against a set of cache entries. Entry processors can modify cache entries on the server side without involving these entries to travel on the network for fetch and update operations.
Queries can now be executed on cache using data reader just like the databases do. Using data reader, result set can be retrieved from servers in multiple chunks of configurable size. This approach gives a better performance and uses less memory on client end.
User can now configure NCache with default named expirations. NCache server will use default expirations when items are either inserted into cache without any expirations or inserted explicitly with named default.
Select statements can now have orderby clause which will return the result set sorted on one or more specified attributes.
A GUI tool to view and monitor logs generated by NCache server and clients in one place. Log files of all servers can be viewed in same tool. The tool can filter log entries and important log entries can also be bookmarked.
NCache 4.4 SP2 can be upgraded to NCache 4.6 without losing any data using its Bridge topology.
NCache 4.6 onwards, cache servers and clients will be licensed based on the number of cores instead of numbers of CPUs that box has.
July 28, 2015
NCache 4.4 SP2 contains a few important enhancements related to memory and performance of NCache. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
Dumpcachedata tool takes a dump of a running cache by enumerating cache data and stores this data on a location specified by user. This data can later be reloaded to a new or same cache. This tool is helpful when customers need to restart their cache servers while they don’t want to lose their business critical data in cache.
DumpCache tool is renamed to DumpCacheKeys.
LinqPad is a third party tool that can be used with NCache to query cache data. Data is shown on LinqPad console in a tabular form.
There are a few settings at service config level that now can be hot applied to caches running on a server. Previously, service restart was needed to apply settings defined in service configuration file. The list of HotApplicable settings is as follows:
# | Property Name | Hot Applicable |
---|---|---|
1 | NCacheServer.LicenseLogging | Yes |
2 | NCacheServer.EnableNagling | Yes |
3 | NCacheServer.NaglingSize | Yes |
3 | NCacheServer.NaglingSize | Yes |
4 | NCacheServer.EventBulkCount | Yes |
5 | NCacheServer.ExpirationBulkRemoveSize | Yes |
6 | NCacheServer.ExpirationBulkRemoveDelay | Yes |
7 | NCacheServer.EvictionBulkRemoveSize | Yes |
8 | NCacheServer.EvictionBulkRemoveDelay | Yes |
9 | NCacheServer.BulkItemsToReplicate | Yes |
10 | NCacheServer.EnableCacheLastAccessCount | Yes |
11 | NCacheServer.EnableCacheLastAccessCountLogging | Yes |
12 | NCacheServer.CacheLastAccessCountInterval | Yes |
13 | NCacheServer.CacheLastAccessLogInterval | Yes |
14 | NCacheServer.LOHPoolSize | Yes |
15 | NCacheServer.LOHPoolBufferSize | Yes |
16 | NCacheServer.CacheSizeThreshold | Yes |
17 | NCacheServer.CacheSizeReportInterval | Yes |
18 | NCacheServer.LogClientEvents | Yes |
19 | NCacheServer.EventLogLevel | Yes |
20 | NCacheServer.AllowRequestEnquiry | Yes |
21 | NCacheServer.RequestEnquiryInterval | Yes |
22 | NCacheServer.ResponseDataSize | Yes |
23 | NCacheServer.EnableSnapshotPoolingCacheSize | Yes |
24 | NCacheServer.SnapshotPoolSize | Yes |
25 | NCacheServer.SnapshotCreationThreshold | Yes |
26 | NCacheServer.RequestInquiryCleanInterval | Yes |
A few architectural changes are made in client cache to have a better performance in case of bulk operations.
April 04, 2015
NCache 4.4 SP1 contains a few new features as well as important enhancements related to memory and performance of NCache. This is a recommended upgrade for all NCache users.
Following are some enhancements made in this release:
Basic management and configuration operations can now be performed within the Visual Studio. With NCache 4.4 SP1, the Developer installation comes with an ‘NCache Manager’ extension which helps developers manage NCache from Visual Studio. Visual Studio 2010/2012/2013 are supported by NCache.
A NuGet Package is provided for developers to build applications using NCache without installing NCache on their machines. With this package, developers can write their applications using NCache API and test them with InProc cache.
Entity Framework 6.0 and 6.1 integration is provided in NCache 4.4 SP1. Previously, NCache supported Entity Framework 5.0 or earlier. In this service pack, NCache also provides caching extensions for Entity Framework 6.0 which allows developers more control over which entities to cache. This is an alternate to no-code-change configuration option for developers who want to have a greater control over the entities being cached.
NCache 4.4 SP1 uses customized data structures which are enhanced to take up less memory and perform better that .NET’s native data structures. These data structures avoid allocations on Large Object Heap (LOH) as much as possible to prevent NCache processes from entering into a state of severe memory fragmentation. Hence, NCache 4.4 SP1 has a major boost for both memory and performance.
Network partitioning or split-brain occurs when the cluster gets divided in such a way that some of the servers are unable to connect with the rest of servers. These instances are now logged into event viewer and email alerts for such scenarios can also be configured from NCache Manager.
NCache 4.4 SP1 is certified for Windows Server 2012 R2. It has passed all Microsoft’s compatibility tests. Microsoft validated that NCache works in accordance with Microsoft’s standards.
January 08, 2015
NCache 4.4 contains some important enhancements and few major bug fixes related to the stability of the cache. It is a recommended upgrade for all users.
Following are some enhancements made in this release:
NCache licensing has been moved to Annual licensing model from previously supported perpetual model.
Internal data structures are optimized to reduce the memory overhead of stored items.
Huge improvements in cluster startup time for cluster sizes over 20 nodes.
New perfmon counters are introduced to measure the memory acquired by various indexes. Following are the brief descriptions for each of them:
OQL related new perfmon counters are also introduced to measure the performance of the query related cache operations like: Average µs/Query Execution: Average time query take while executing. Average Query Size: Average Number of items returned by queries. Queries/sec: Number of queries per sec on cache.
NCache is now fully compatible with Windows Server 2012 R2.
June 30, 2014
NCache 4.3 Service Pack1 (SPs) contains some important enhancements and major bug fixes related to the stability of the cache. It is a recommended upgrade for all NCache 4.3 users.
Following are some enhancements made in this release:
You can configure the client side logging by modifying the client.ncconf file (exists at %NCHOME%/config folder. By default client-side logging is disabled for all caches, but you can enable client side logging for a cache at any time by specifying the ‘true’ value for ‘enable-client-logs’ e.g.
<cache id="mycache" ... enable-client-logs="false|true" log-level="error|info"/>
Possible values for ‘enable-client-logs’ attribute are ‘false’ and ‘true’. Default value is ‘false’.
Possible values for ‘log-level’ attribute are ‘error’ and ‘info’. Default value is ‘error’.
Now NCache clients from a different or remote network can also access the cache which exists on a different network. To achieve this just add the following two tags in ‘Alachisoft.NCache.Service.exe.config’ files at the cache server nodes.
<add key="NCacheServer.MgmtEndPoint" value="public-ip:public-port" />
<add key="NCacheServer.ServerEndPoint" value="public-ip:public-port" />
Where the public-ip is ip-address which is exposed outside the network and publicport is the port which is accessible outside of the network.
Client caches were previously only visible in NCache Manager under their respective second level (2nd level) caches, but now you can view the existing client cache in NCache Manager under the ‘Local Caches’ tree node of the ‘Cache Explorer’.
Email alerts are supported for out-proc local caches and out-proc client caches. You can select the events on which NCache would send you email notification e.g. on Cache Start, on Cache Stop etc.
Client caches can be configured from outside the cache cluster network using command line tools e.g. CreateClientCache, AddClientNode etc.
NCache is now fully compatible with Windows Server 2012.
NCache provides Java client API to use the NCache as cache store from within the Java based applications. NCache Java client is fully compatible with .NET client API.
March 05, 2014
NCache 4.3 has introduced new features and important enhancements that are critical for enterprise level applications. This new release allows NCache to be installed in cloud; on Windows Azure and Amazon. Also, a wrapper for Memcached is now available for existing users wanting to replace Memcached with NCache. This new release provides a package for run time data sharing between multiple platforms (Java & .Net). Java has been made 100% compatible with .NET and now you can manage your Java clients with NCache Manager.
For a comprehensive list of all features in 4.3, please read NCache Features
While registering events with cache, cache clients can tell the cache whether they are interested in data or metadata when the events occur. By default, data or metadata are not sent with the events to clients.
New API to register events has been introduced while to old API has been marked obsolete. Old API can’t be used to receive data with events.
Write-through and write-behind can now be configured for following behaviors:
Queries can now be registered with ‘Group by’ clause as in database to group the results as needed.
A new API has been introduced for this method. Currently, this new method ‘ExecuteReader’ in the API can only be used if ‘group by’ is used. For all other select statements, old method should be used.
As in database, now items can be removed from cache by writing delete statements. Previously, only select and update statements were supported. A new API has been introduced to support delete statement. ExecuteNonQuery will be used for delete statements.
A node can now be gracefully stopped in a cluster. This action will make sure that all client requests that have reached the node are executed on cache before it comes to complete stop. Similarly, all write behind operations pending in the queue at that time are also executed on the data source. However, no more client requests are accepted by this node.
Following enhancements are made to the encryption feature:
Following enhancements have been made to compact-serialization:
CacheInitParams while initializing cache can now cover everything that can be configured in client.ncconf. Previously, client.ncconf was always required to initialize a cache. Configurations passed through CacheInitParams have an overriding effect on the settings configured in client.ncconf.
InProc cache now keeps objects in de-serialized form. This removes the cost of serialization and de-serialization and hence, improving the performance. InProc client caches also keep objects in de-serialized form.
API calls can now be logged by just configuring few options in client configuration. These logs are generated on the client boxes and are very helpful to determine which cache methods are being called and in what sequence.
Users can configure to generate the log files at the location of their own choice. Each cache can have its own log location. By default, all log files will be generated in the log-files folder of install directory.
While adding caches to bridge, users can configure a cache to participate as an active or a passive member of bridge. Even when bridge is up and running, users can turn a passive into active and an active into passive without losing any data. User experience to configure a bridge is also changed as the topologies in bridge can be switched between Active-Active to Active-Passive at any time. Other topologies ‘Star’ and ‘Hub-spoke’ are currently not available in bridge.
User can pick one of the two caches in bridge as a ‘Master cache’. Whenever, there is a need for a state transfer between caches in bridge, data is transferred from a master cache to the non-master. When the master cache goes down, the only remaining cache becomes master automatically.
Cache administrators can temporarily connect and disconnect caches from the bridge while bridge is running. When a cache is disconnected, no data is transferred between bridge and the disconnected cache. Similarly, the cache on the other side of the bridge stops queuing data to the bridge as the disconnected cache is no more receiving any data. Cache can be reconnected at any time.
Communication protocol for management and monitoring operations are changed to ‘Socket’ from .Net Remoting’. This makes NCache and JvCache’s management and monitoring tools inter-compatible.
NCache Manager can now be used manage JvCache clients as well. NCache Manager can also fetch SNMP counters for JvCache clusters.
We have observed that in some environments, remote perf counters are accessible via their machine names only and on a few via their IP addresses. So in this version of NCache, NCache Manager has an option where user can pick to collect remote perf counters via their IP or machine name.
NCache Manager used to lock the dlls when query indexes were configured by the users. In this version, NCache Manager opens the given dlls in a separate app domain and therefore, never locking the dlls.
There is another type of dashboard available in NCache Monitor that allows users to create a report view style dashboard. In this dashboard, users have two report controls. One is for cache server nodes, while other one for client nodes. Users can drop the counters in this control and their values are shown in a report view style as shown in perfmon.
Counters added in report view can also be configured to be logged. Users can start and stop logging at any time. They can also schedule the logging to start automatically by specifying the start and stop time. These log files are generated in .csv format.
NCache Monitor can now also be used to monitor JvCache. Depending upon whether the selected cluster is of NCache or JvCache, it fetches counters from perfmon or SNMP respectively.
Following new command line tools are added to NCache:
Existing Memcached users can now switch to NCache without code change. There are two ways to replace memcached with NCache:
This gateway is installed on client and server boxes as a windows service. It is an implementation of memcached protocol which wraps the NCache calls inside it. This way, all API calls from memcached clients are routed to NCache servers via this gateway. Only configuration changes are required in this approach.
Following memcached client implementations are supported in this approach:
NHibernate integration is written from scratch to remove the limitations of previous implementation. Following are the few enhancements made in new implementation:
Users can now write their own code to modify the cache items before they are inserted in NCache. Users can change the expiration, dependencies etc. of output cache items by writing these hooks.
For this, users have to implement an interface provided with OutputCacheProvider and then register this assembly and class in web.config.
All items cached from various NCache integrations are tagged with special tags that determine the type of cache items. For example all sessions created in cache have a special tag that tells it’s a session cache item. This way users can identify any item in cache whether it’s a session or not.
Similarly, OutputCache and ViewState items are also tagged with their own tags.
October 24, 2013
NCache 4.1 SP3 contains some important enhancements and major bug fixes related to the stability of the cache. It is a recommended upgrade for all NCache 4.1 users.
Following are some enhancements made in this release:
NCache session store provider for ASP.NET session caching now has the ability to retry any cache operation if operation fails. Add the following attributes in the NCache session store provider settings:
Operation retries in object cache provider NCache Object Cache provider for .NET4x now has the ability to retry any cache operation if operation fails.
Add the following entry under the <appSettings> in application config file (app.config or web.config) like:
<add key="operationRetries" value="3"/>
<add key="operationRetryInterval" value="2000"/> // 'operationRetryInterval' is the value in milli seconds
A new feature is implemented in ViewState caching, which allows grouping of viewstate of related pages. This will provide more control for viewstate caching. Using this feature it is possible to cache different groups of veiwstate in different caches, or cache veiwstate using different expirations for each group of viewstate.
This enhancement in NCache ViewState caching module provides the option to restrict the number of viewstate per page in cache. Add the ‘maxViewStatesPerSession’ attribute in the ‘<settings …> tag under the ‘ncContentOptimization’ tag. This attribute take value in integers.
At Cache start, Cache startup loader is not started instantly. Its start is delayed for 20 seconds after cache start. This delay is configurable by using the following attribute in ‘Alachisoft.NCache.Service.exe.config’ file: Add the following entry under the <appSettings> in NCache service config file like:
<add key="NCacheServer.CacheLoaderStartupDelay" value="20"/>
Default value for this attribute is 20 seconds.
To avoid partial cluster connectivity problems when caches are started
simultaneously using auto-start feature, a delay can be introduced.
Add the following entry under the <appSettings> in NCache service config file like:
<add key="NCacheServer.CacheStartDelay" value="3"/>
Default value for this attribute is ‘3 seconds’.
‘IndexNotDefined’ exception is thrown to the client, when it queries an attribute that
is not indexed. This problem can occurred easily when NamedTags are used as
indexes are created for NamedTags at runtime. Now it is configurable to suppress
this exception.
Add the following entry under the <appSettings> in NCache service config file like:
<add key="NCacheServer.DisableIndexNotDefinedException" value="true|false"/>
Client app can be configured to consume all of the received events ‘Synchronously’ or ‘Asynchronously’. Default event consumption mode for NCache Client is ‘Asynchronous’ but events can be consumed on client side ‘Synchronously’. Add the following entry under the <appSettings> in client application ‘App.config’ file like:
<add key="NCacheClient.AsynchronousEventNotification" value="true|false"/>
<add key="NCacheClient.NumberofEventProccesingThreads" value="2"/>
For synchronous event processing mode, in this example 2 threads are used but it is
configurable to adjust the event processing needs according to the client application
requirements. Default minimum value is ‘1’ and default maximum value is ‘5’.
New Server Side Counter:
New client side counters:
Now cache clear call will fire the ItemRemoved events for all those keys which exist in a ContinuousQuery result set.
If there is a client cache enabled and a lot of items are being expired from the L2 cache then L2 sends item expiry events to client cache (L1 cache) to remove these items from its local store. This hurts the performance of active clients and utilizes high CPU. Now client cache (L1 Cache) will also maintains the expiry of items, and L2 cache will not send the expiry events to L1 cache.
NCache provided EFCaching module is enhanced for EF query analysis and caching.
Now bridge service can be configured to start the specified bridges on service start. To configure a bridge to start automatically when a bridge service (Alachisoft.NCache.Bridge.exe) gets started / restarted. Uncomment the following tag in ‘Alachisoft.NCache.BridgeService.exe.config’ file and provide the bridge name(s) which are configured on current machines, like:
<add key=" NBridgeServer.AutoStartBridges" value="Bridge-1,Bridge-2"/>
October 10, 2012
NCache 4.1 SP2 contains some important enhancements and major bug fixes related to the stability of the cache. It is recommended upgrade for all NCache 4.1 users.
Following are some enhancements made in this release:
Encryption feature is provided to make sure that data traveling between NCache client and NCache server or between cluster nodes is encrypted. This will prevent the user data leakage even if data packets are sniffed from the network.
Now multiple database dependencies can be added for single cached item. This feature will compensate the ‘SQL Notification’ dependency limitation of a single database dependency.
Caches which are configured to ‘auto start’ now can be delayed according to user
specified time. This will improve the NCache response time in case there are too
many caches configured for ‘auto start’.
Add the following entry under the <appSettings>
in NCache service config file like:
add key='NCacheServer.AutoStartDelay' value='5'
Now you can configure the ‘client caches’ to start automatically on service restart or when client machine is rebooted. This will make the client cache available without user intervention.
Now veiwstate is cached along with ‘session id’ as ‘group’ info. This will facilitate
the user to relate the viewstate and session of the same application and user. Using
this feature user can remove all the viewstate related to a specific session when a
session is closed or expires.
Add the following attribute inside
groupedViewStateWithSessions="true|false"
May 10, 2012
NCache 4.1 Service Pack1 (SP1) contains some important enhancements and major bug fixes relating to the stability of the cache. It is commended upgrade for all NCache 4.1 users.
Following are some enhancements made in this release:
You can add custom generic types for compact serialization. All generic types with any number of arguments can be serialized through compact serialization. You can register generic types through NCache Manager or through a custom handler by implementing the interface IGenericTypes. Currently, this feature is only available in for .NET clients.
You can now modify cache item attributes at runtime without modifying the data. Currently, the API (SetAttribute) allows you to update dependency and expiration hints.
You can have cache servers as well as clients running under different time zones; NCache will maintain a standard time to expire an item on the basis of local time zone. Whenever an item replicates or moves from one cache server to the other the expiration is reset according to the local time zone hence makes the item expiration possible according to the configured timeslot.
August 23, 2011
NCache 4.1 has introduced very important new features and enhancements that are critical for enterprise level applications. This new release gives a whole new package for run time data sharing between multiple platforms (java & .Net). Java has been made 100% compatible with .NET and now you can even plug-in your Java code with NCache process. NCache request-response model has also been enhanced to handle large responses where GBs of data can be retrieved from the clustered cache in a single request. All the bugs that were reported in earlier release have been fixed in this release.
For a comprehensive list of ALL FEATURES in 4.1, please read NCache Features:
NCache now allows you to store either .NET objects in the cache and read them as Java objects from your Java applications, or vice versa. And, instead of doing .NET to Java transformation through XML, NCache uses binary-level transformation. As a result, the performance is super fast. NCache automatically resolves type conflicts between Java and .NET.
You can also utilize multiple versions in Runtime Data Sharing between .NET and Java. See details below.
You can now share multiple versions of the same .NET or Java classes across multiple applications. One application may be using version 1.0 of a class while another application may have a later version 2.0 of this same class. When version 2.0 of this class is stored in the cache, the earlier application can still fetch this class as version 1.0, and vice versa. NCache lets you configure version mappings through XML configuration files.
You can utilize version also in Runtime Data Sharing between .NET and Java.
NCache lets you specify a data-set based on an SQL-like query. It then maintains this data-set in the cache cluster for you and monitors any runtime changes in it, including Additions, updates, or deletes. And, NCache notifies your application whenever any of these changes occur in the dataset. This allows your applications to more intelligently monitor for either data changes or addition of data matching a certain criteria and be notified by NCache.
This is a powerful feature if you want to share data at runtime between multiple applications.
Bridge Topology allows you to intelligently and asynchronously replicate the entire cache across the WAN. NCache 4.1 now offer four different configurations in Bridge Topology. They are:
Previously, you could only assign tags as values. Now, you can assign tags with names. This allows you to index data based on attribute name and attribute value concept. Previously, you could index objects but all string data could not be indexed. Now, even string data (e.g. XML) could be indexed with named tags. Then, you could either use NCache API to fetch data belonging to one or more named tags or you could issue SQL-like query (through LINQ or OQL) for it.
NCache 4.1 brings support for Java at the same level as .NET. Here are the new Java based features intended to catch up to .NET feature-set:
You can now use Client Cache feature in Java applications on Windows or Unix. There is no code change required in your applications to enable Client Cache.
You can now use Client Cache feature in Java applications on Windows or Unix. There is no code change required in your applications to enable Client Cache.
Write your cache loading code in Java and register it with NCache. Your native Java code will run on cache servers just like the .NET code.
Now, you can register your Java classes with NCache and NCache generates their serialization code at initialization time, compiles it in-memory, and sends it to NCache clients. This compiled Java code is then run to serialize/de-serialize your Java classes. This obviously speeds up your performance because compiled serialization code runs much faster than Reflection based serialization that is otherwise done in Java.
NCache now provides an L2 Cache for Hibernate. This allows you to start using NCache without making any code changes in your Java application.
NCache now allows the cache servers to return larger response in smaller chunks for a given request. This improves the overall cache performance because the serialization cost reduces with the size and also helps applications to fetch larger data sets in a single call. It also eliminates the .NET serialization limitation where it fails to serialize data size larger than 1.9 GB. Response threshold and chunk size both are configurable and can be modified from NCache service config file “NCache\bin\service\ Alachisoft.NCache.Service.exe.config”
<add key="NCacheServer.ResponseDataSize" value="1024"/>
March 17, 2011
NCache 3.8 Service Pack 4 (SP4) contains important fixes which are important for production environments. It is a recommended upgrade for all NCache 3.8 users.
Following are some enhancements made in this release:
You can share string values between .NET and Java applications.
<add key="NCacheServer.NCacheSQLNotificationService" value="NCacheSQLService"/>
SQL Cache dependency architecture has been enhanced to support custom queues and notification services that does not require extra user permissions like “create queue” and “create service”. NCache now allows you to choose either default mode (with default SQL notification and queue service) or custom mode where you can specify your own queue and notification service. The service name format should be "NCacheSQLService-[ip-address]" and "NCacheSQLQueue-[ip-address]" where the IP-Address will be of machine on which NCache service process will be running. You can specify this setting in service configuration file: “NCache/bin/service/Alachisoft.NCache.Service.exe.config”
.
Nov 02, 2010
In this release of NCache 3.8 Service Pack 3 (SP3), NCache Enterprise is separated into two products named as ‘NCache for .NET’ and ‘NCache for Java’. Previously ‘NCache’had both components combined into a single package.
Two new features are also added in ‘NCache Java Client’.
Following are some enhancements made in this release:
Now you can add items in cache with ‘database dependency’ from your java application. Any change in related database invalidates the cache entry, and your application will receive the notifications about this change.
NCache Java Client has added streaming support in the API where you can read and write binary data stream in the cache.
NCache Enterprise 3.8.x
Oct 10, 2010
NCache 3.8 Service Pack 2 (SP2) contains important fixes and enhancements that have been reported by customers. It is a recommended upgrade for all users of NCache 3.8.
Following are some enhancements made in this release:
NCache now support licensing on Xen VM environments.
Visual Studio 2010 shows a warning message when you add reference to NCache assemblies and then the build also fails. This only happens if the application target frame work is .NET 3.5. This is a known issue of Visual Studio that it gets confused when you have the same assemblies available in the GAC 2.0 and GAC 4.0 and for dependent assemblies it tries to load them from GAC 4.0 which results in the warning message.
We have resolved this issue by copying all the assemblies in the NCache bin/assembly folder and now Visual Studio does not have to locate the dependent assemblies in GAC. This has resolved the issue.
<script>
tag ends with </script>
. Similarly, the CSS minification fails if relative
paths are used for loading images. Now the relative paths in CSS are converted to absolute path. August 24, 2010
NCache 3.8 Service Pack 1 (SP1) contains important fixes and enhancements. The most important and demanded feature added in this release is the support of .Net frame work 4.0. The API is completely compatible with the 3.8 release version and applications can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
The code base of NCache cache server has been converted to .NET 4.0 and the NCache client is available in both .NET 2.0 and 4.0 versions.
There is an improvement in client cache management through NCache Manager where project files will contact to client nodes on refresh option and this has improved fast loading of NCache Manger project file.
We have resolved this issue by copying all the assemblies in the NCache bin/assembly folder and now Visual Studio does not have to locate the dependent assemblies in GAC. This has resolved the issue.
NCache samples are now builded with visual studio 2008.
VeriSign issue, default in service configuration file should be
generatePublisherEvidence enabled ="false"/>
. The enhancement is made.
ReadThru provider interface signature has been modified to support maximum features of NCache. There is new structure introduced under the namespace “Alachisoft.NCache.Runtime.Caching” called ProviderCacheItem which is similarly to the CacheItem. You can now easily specify expirations, tags, eviction hints, dependencies etc.
New interfaces
public void LoadFromSource(string key, out ProviderCacheItem cacheItem)
public Dictionary<string, ProviderCacheItem> LoadFromSource(string[] keys)
Now, you can specify IsResyncExpiredItem property in Cache Loader so that the expired items can be reloaded automatically.
NCache is not supporting the latest version of NHibernate 2.1.2. We have also added region support in this release. NHibernate sample application is also modified with NHibernate regions support.
June 7, 2010
NCache 3.8 contains new important Additions and enhancements based on the customer’s feedback. The API backward compatibility is the most important concern for most of the customers and keeping this in mind we have added a new protocol for API compatibility. From now (3.8) onwards all the new releases will be automatically compatible with older versions of NCache (starting from 3.8).
Following are some enhancements made in this release:
NCache provides LINQ integration with the help of IQueryable interface which allows the cached items to be searchable. NCache support both Lambda Expressions and LINQ operators for querying cached items.
NCache provides seamless integration with EF caching where it gets plugged-in at the ADO level and lets your application use distributed caching without any code change. You only need make changes in the application configuration file.
We have resolved this issue by copying all the assemblies in the NCache bin/assembly folder and now Visual Studio does not have to locate the dependent assemblies in GAC. This has resolved the issue.
NCache provides integration with .NET cache provider 4.0. NCache also provides different Change Monitors (file based, key based, database dependency) for managing cache dependencies.
NCache now follows backward compatibility protocol and in future version application will be able to connect to newer versions without upgrading the clients.
NCache has added streaming support in the API where you can read and write binary data stream in the cache.
NCache combines multiple JavaScript files and CSS files into a single resource file and store it in the cache. It also replaces the rendered output with single HTTP reference for all CSS and JS files so that browser can make a single call for loading all the resources. This helps improve your application response time.
NCache replaces the long ViewState string into a smaller one and sends it to the client. This helps improve the application performance and save bandwidth.
You can now receive alert through emails on certain cache events like “State Transfer”, Cache Stopped, Member Left, Member Joined etc.
This API allows Meta information about cache items like LastAccessed Time and Creation DateTime.
NCache allows multiple readthru and writethru providers. NCache Manager automatically deploys the data source assemblies into the deployed folder so you don’t have to manually copy the provider assemblies in NCache service folder.
Partitioned Replica Topology now supports Synchronous replication.
You can now configure security through command line tool
If you have an old cache config.ncconf file then you can upgrade it by using this tool.
Now you can configure Remote Clients from NCache Manager and can easily change individual client settings all from a single point.
You can also add remote clients and client-cache through command line tools.
Now you can specify your cache provider assemblies through a new wizard where you can pick your assembly. Now, you don’t have to type assembly information manually.
NCache Manager provides the automatic deployment of data source providers.
Now you don’t need to implement any ISerializable or IDeserializable Interfaces for compact serialization. You only need to register the compact types in NCache Manager and NCache automatically serialize the types at runtime.
Security can be configured from NCache Manager now.
April 21, 2010
NCache 3.6.2 (SP3) contains important fixes and enhancements that have been reported by customers. The most important and demanded feature added in this release is the support of Java session caching for J2EE platforms. Now, you can easily use NCache as a session store for your Java applications without making any code change. You only need to add a Java session filter in your web.xml file.
Those using NCache 3.6.x version can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
NCache Java Session Provider is supported for WebLogic and can be used on any platform of J2EE (web servers), if underlying platform (web server) follows the Java Servlet 2.3 (or later) specification. Java Sessions are supported on both Linux and Windows platforms.
NCache Java Session Provider is supported for JBoss on both Linux and Windows platforms.
NCache Java Session Provider is supported for WebSphere on both Linux and Windows platforms.
NCache Java Session Provider is supported for Apache-Tomcat on both Linux and Windows platforms.
There are two flavors of Garbage Collector based on server operating system and workstation called “Server GC” and “Workstation” respectively. Unless it is specified .NET framework uses workstation GC by default even it is running under server operating system. Now, NCache allows you to specify GC mode depending on your operating system. Server GC is designed for maximum throughput, and scales with very high performance. NCache is now by default configured to use Server GC instead of Workstation GC. You can change this mode from Alachisoft.NCache.Service.exe.config:
<add key="NCacheServer.EnableForcedGC" value="true"/>
<add key="NCacheServer.ForcedGCThreshold" value="80"/>
January 11, 2010
NCache 3.6.2 Service Pack 2 (SP2) contains important fixes and enhancements that have been reported by customers. It is a recommended upgrade for all users of NCache. Those using NCache 3.6.x version can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
An event will be logged in windows event viewer and cache-error log when:
These events are categorized as information, warning and information.
<add key="NCacheServer.EventLogLevel" value="error | warning| all"/>
User can specify only one of the following levels:
Client Connection Log entry for event viewer/log-file can be enabled from NCache Service configuration file. By default this option is disabled but you can enable it by modifying the following attribute in NCache service config file.
"Alachisoft.NCache.Service.exe.config".
<add key="NCacheServer.LogClientEvents" value="false" />
NOTE: The above change requires NCache service to restart.
NCache now supports Oracle 11g for database dependency and synchronization feature.
October 06, 2009
NCache 3.6.2 Service Pack 1 (SP1) contains important fixes and enhancements that have been reported by customers. It is a recommended upgrade for all users of NCache. Those using NCache 3.6.x version can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
To overcome socket breaking issues within cluster nodes, NCache has a new connection retry logic which is configurable in config.ncconf in cluster configuration.
connection-retries="10" connection-retry-interval="1secs"
In case a socket breaks due to Network problems, NCache will try to re-establish the connection after every connection-retry-interval as many times as connectionretries. This requires a restart of NCache service after update.
NCache client side counters are introduced to detect and debug client side issues. These counters appear in Windows perfmon counters in category ‘NCache Client’.
NCache autostart feature is enhanced and starting up of various user specified caches with NCache service start up, is made asynchronous. If some caches are corrupt and are not started, a warning is logged but NCache service starts up normally.
Client cache sync mode description is added in NCache Help.
Description about setting up cluster memory, its usage and estimation is added in cluster configurations.
NCache installation wizard warns the user who is not an admin. Administrative privileges and permissions are required for the user to install NCache on a system.
July 09, 2009
NCache 3.6.2 contains a number of useful enhancements and bug fixes that have been reported by customers. It is a recommended upgrade for all users of NCache. Those using NCache 3.6.x version can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
Log traces are added for the following events:
Polling based database dependency has the following improvements.
Error messages are improved when service fails to start because of unavailable bindto-ip addresses.
March 26, 2009
NCache 3.6.1 contains a number of useful enhancements and bug fixes that have been reported by customers. It is a recommended upgrade for all users of NCache. Those using NCache 3.6.x version can upgrade without re-building/re-compiling the application.
Following are some enhancements made in this release:
Now the NCache client connections are automatically rebalanced among the cluster nodes when a new node joins the cache. So now you do not have to worry any more about client load balancing on cache servers.
New counters for performance monitoring are added in the ‘NCache’ category in Windows Perfmon counters.
NCache now supports the use of Stored-Procedures and Command Object in DB Dependency.
© Copyright Alachisoft 2002 - . All rights reserved. NCache is a registered trademark of Diyatech Corp.