- Fixed incorrect ArgumentNullException that could be thrown from synchronous Cache.Read operations when backing store read-through operations are enabled via CacheBuilder.RaiseServiceEventForReadThrough().
- Added support for issuing and handling server-side Single Object Invoke operations. See Invoking a Method on an Object and Handling Single Object Invocations.
- Improved connection retry logic when all ScaleOut services abruptly become unavailable. While attempting to locate an active host, the client library now includes all hosts from the connection string's original bootstrap list instead of just using hosts it had previously connected to.
Official 2.0 release. No changes since the 2.0 beta other than removal of the NuGet package's "prerelease" status.
- Added synchronous versions of most API calls.
- Added support for processing ScaleOut StreamServer events. See Posting Events and Handling Posted Event Streams.
- Redesigned ServiceEvents registration methods to be synchronous--they no
longer need to be awaited. The original async methods have been deprecated, and
the new event registration methods are overloaded to accept both synchronous
- Fix to address a report of a System.ExecutionEngineException that was thrown when connecting to the ScaleOut service.
- Fix deadlocks that could occur when running in environments that use a synchronization context (WinForms, legacy ASP.NET, etc.).
- Connection strings with extraneous trailing semicolons will no longer throw an ArgumentException.
- Added new GridConnection.GetCacheNamesAsync method, allowing clients to retrieve the names of all caches in the ScaleOut service.
- Added PreemptionPriorty as a cache-wide policy, allowing control over object eviction when the ScaleOut service runs low on memory. Preemption priority can be set one of three ways:
- Increased the default client cache capacity from 100 to 1000 items. The capacity can be set explicitly using CacheBuilder.SetClientCache or through a config file (see Configuring Cache Policies).
- Improved network cache performance when the client cache is disabled.
- Fixed issue where unspecified connection string parameters defaulted to zero instead of their expected default values.
- Connection strings are no longer passed directly to a CacheBuilder constructor--they are passed to a GridConnection.Connect or ConnectAsync call instead. The returned GridConnection object is then passed to the CacheBuilder constructor. See Connecting to a ScaleOut Data Grid for an overview and updated examples.
- Added new Cache.TryReadExclusiveAsync method that fails immediately if another caller has the object locked instead of waiting until the object becomes available.
- Nuget package is now multitargeted (.NET Standard 2.0 and .NET Framework >= 4.6.2) instead of just .NET Standard.
- Fixed NullReferenceException that was thrown when network cache is enabled.
Initial beta release.
- Fixed issue in remote read-through handler where an unhandled exception in a user callback could hang callers waiting for completion.
- Various documentation improvements (new topics for backing store events, return codes on CacheResponse.Result for typical CRUD operations, fixed misc. typos).
- Removed unused and stubbed-out query methods from Cache class that had never been implemented due to redesign.
- Notification of object expiration events is now supported. See Expiration Events.
- Support for tags and queries filtered on tag values. See Querying for Tags.
- Handling async backing store events via callbacks registered through the SetLoadObjectHandlerAsync (refresh-ahead) and SetStoreObjectHandlerAsync (write-behind) methods.
- Major rework of cache configuration (based on internal and early
customer feedback--thank you!). See Configuration Overview for
- Connection information is no longer specified in a strict configuration structure. Connection strings are now used. (See Connecting to a ScaleOut Data Grid).
- A config file is no longer required. A CacheBuilder instance can be constructed with just a connection string and policies can be set on the CacheBuilder at runtime.
- To use cache policies from a .NET Core configuration file, supply the CacheBuilder constructor with in just the config section containing the configuration info for your cache. A top-level ScaleOut-specific section should no longer be passed in.
- The cache policy settings in a config file no longer have a one-to-one relationship with a named cache. Multiple caches can now use the same cache policy config section.
- For traditional .NET Framework apps that need to pull policies
from a config file, pass a
LegacyXmlConfiguration instance to the cache
builder. The LegacyXmlConfiguration constructor takes the name of
an entry under the config file's
section. See Configuring Cache Policies for details.
- To better support future object policy options, the immutable CreatePolicy class has been changed to use a builder pattern instead of a large number of optional constructor arguments for instantiation. The CreatePolicyBuilder class is now used to set policies on objects--for convenience, use GetPolicyBuilder() to get a builder instance that is pre-populated with a cache's default policies. See Dependencies for a usage example.
- Cache names are now registered with the ScaleOut service (for display in ScaleOut Object Browser and "soss.exe list_names").
- Implemented Cache.ClearAsync() to clear all objects from a cache.
- Configuration: "Name" field in Cache configuration has been renamed to "CacheName" (.NET Core's config provider for XML uses "name" as a reserved attribute to identify array element offsets, causing a conflict). Please update your config files.
- Configuration: The CacheBuider constructor now takes the
IConfigSection containing ScaleOut settings rather than its
parent. (In other words, the constructor no longer assumes that it
is given the top-level IConfigSection instance, and the ScaleOut
section doesn't have to be called "Scaleout.Client"--users now
define where the ScaleOut configuration section goes in their .NET
Core config files.) Please change your CacheBuider usage as needed:
typically, this means adding a
GetSection("Scaleout.Client")call to the IConfigSection instance that was passed into the 0.1.0-alpha version of CacheBuider.
- Support for more than 2 parent objects when defining dependencies. (Requires server version 126.96.36.1998 or higher)
- Allow using DNS names in BootstrapGateways configuration.
- Added Cache.GetMetadataAsync implementation: retrieves server metadata for an object stored in the ScaleOut service.
- Fixed ShortStringKeyEncoder: key no longer needs to be exactly 32 bytes.
- Initial alpha release.