What's New in NCache 4.3 and 4.4?

Latest features are in red. For a comprehensive list of all features in NCache, please read NCache Features.

Visual Studio Integration

NCache can now be integrated with Visual Studio 2010/2012/2013 (Enterprise & Community). Basic management and configuration operations can now be performed within the Visual Studio. NCache 4.4 SP1 Developer installation now comes with an ‘NCache Manager’ extension which helps developers manage NCache from Visual Studio.

Entity Framework 6.0 Support

Entity Framework 6.0 and 6.1 integration is provided in NCache 4.4 Service Pack 1 (SP1). In SP1, NCache also provides caching extensions for Entity Framework 6.0 which allows developers more control over which entities to cache. This is available for developers who want greater control over the entities being cached, as an alternate to the ‘no-code-change configuration’ option.

Windows Server 2012 R2 Certification

NCache 4.4 SP1 is certified for Windows Server 2012 R2. It has been tested by Microsoft’s approved tester and passed all compatibility tests. Microsoft validated that NCache works in accordance with Microsoft’s standards.

NCache SDK NuGet Package

NuGet is a package manager for Microsoft Visual Studio development in .NET. The NuGet Gallery is a central repository of all NuGet packages.

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 an NCache API and test them with InProc cache. This gives you full control to use NCache SDK without installing it.

NCache in Azure Marketplace

NCache can be deployed in Microsoft Azure Virtual Machines with all its features. Additionally, the following features are available in Microsoft’s Azure environment exclusively for NCache and not provided by any other caching solution:

  1. Sharing ASP.NET Sessions across regions
  2. WAN replication of cache across regions
  3. Memcached Wrapper for NCache

NCache is available in Azure Marketplace.

NCache in Amazon Web Services (AWS)

NCache can be deployed in Amazon Web Services (AWS) as Virtual Machines with all its features. In AWS, NCache can either reside on the same Virtual Machine as the applications that are using it, or on separate Virtual Machines. The following caching features are available in AWS:

  1. Sharing ASP.NET Sessions across regions
  2. WAN replication of cache across regions
  3. Memcached Wrapper for NCache

NCache is available at AWS.

NCache is Now Open Source

NCache is also available as Open Source. NCache Open Source is released under the Apache 2.0 Open Source license. This provides the .NET developer community with unrestricted access to a truly elastic native .NET Distributed Cache. For more details please refer to the Edition Comparison page.

Memcached Wrapper for NCache

Memcached Wrapper for NCache provides a no-code-change way for migrating Memcached applications to a powerful elastic distributed cache. See more details on the NCache vs. Memcached comparison page.

The Memcached Wrapper for NCache can be used in the following two ways:

  1. Memcached Plug-In (for .NET apps)
  2. Memcached Gateway

The Memcached plug-in option is for .NET applications. Alachisoft has taken all the popular Open Source Memcached client libraries and implemented them for NCache. These libraries for .NET are:

  1. enyim
  2. BeIT
  3. More…

The Memcached Gateway implements Memcached Protocols and supports all types of Memcached applications. Applications are directed to the Memcached Gateway and they start using NCache behind the scenes.

Bridge Topology Enhanced

Bridge Topology is a popular feature of NCache which allows intelligent replication of the entire cache across the WAN. NCache 4.3 offers the following new features for Bridge Topology:

Switch between Active-Active and Active-Passive

Active-passive Bridge configurations can easily be switched to active-active or reverse active-passive configurations (making the active cache passive, and the passive cache active) at runtime without stopping any of the caches or the Bridge.

This new feature is capable of handling disaster recovery situations. For example, if the active cache in an active-passive configuration goes down, the passive cache becomes active. When the cache is brought back up, it can be configured to become active again, and the currently active cache is reverted back to its original passive mode.

Active-passive configurations can also be converted to active-active configurations without stopping the cache or the application.

Connect/Disconnect Caches

Cache administrators can now temporarily disconnect caches from the bridge while the bridge is running. When a cache is disconnected, no data is transferred between the bridge and the disconnected cache. The cache on the other side of the bridge stops queuing data to the bridge as the disconnected cache is not able to receive any data. The cache can be reconnected at any time. When this happens, everything goes back to the way it was.

Enhanced Write-through & Write-behind

  1. Cache item or not: Write-through and write-behind can now be configured to determine whether an item should be kept in the cache or not, if a write-through or write-behind operation fails in updating the database for it.
  2. Write-behind batching options: You can specify the following:
    1. Batch size: how many items to be batched together when doing database updates?
    2. Batch interval: How long to wait before processing the next batch?
    3. Retries threshold: How many retries to do if a database update fails?
    4. Retry queue eviction: How many items to evict from retry-queue if it becomes full?

Object Query Language Enhanced

Object Query Language (OQL) has been enhanced by adding two features to it. These features are:

  1. Delete statement: You can now delete cached items by specifying an attribute based criteria.
  2. Group By statement: You can now issue GROUP BY queries and obtain a result set that includes counts of items in the cache groups by attribute values.

Data Encryption Enhanced

Data encryption included 3DES encryption. This has now been enhanced to also include AES-256 encryption. Another enhancement made is to also encrypt indexing data when encryption is enabled.

Compact Serialization Enhanced

Following enhancements have been made to compact serialization.

  1. Users can select and de-select the data members to be compact serialized
  2. Byte arrays are no longer serialized
  3. You can use Hot Apply to make changes to Compact Serialization types at runtime

Events with Data

You can now specify whether to receive data with the event or only the event. In many situations, you may want the data along with the event to guarantee that you’re getting the copy that was actually modified. This is because if you don’t receive data with events and your application then fetches the data from the cache, somebody else might have changed this data by that time.

By default, data or metadata is not sent with the events to clients.

API Calls Logging

NCache now comes with API logging feature that can be turned on through a configuration file change. This is very useful to you and Alachisoft tech support if you’re facing any issues related to NCache. You can enable this logging and NCache quickly logs all the API calls that your application is making and in what sequence.

With this information, Alachisoft tech support can quickly narrow down the potential problem and help resolve it. You can also quickly see an accounting of all the NCache API calls that various parts of your application are calling.

Enhanced CacheInitParams

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.

De-Serialized Data in InProc Cache

InProc cache (Local Cache and Client Cache) now keeps objects in de-serialized form. This removes the cost of serialization and de-serialization that would otherwise be needed for fetching and storing objects in the cache.