Use of CodePlex
51Degrees is using GitHub as the master repository for its code. The source code will be mirrored on CodePlex. Compiled libraries will continue to be distributed on CodePlex. Our use of CodePlex will be phased out in future releases.
Full Release notes are available on GitHub at Release Note 3.2.3
Version 3.2.3 Highlights
The design focus of the release is to reduce memory consumption when the data file used directly from the disk, and to improve performance.
- Embedded data has been removed from the assembly and now must be provided from the App_Data folder.
- .NET 3.5 is not supported in this release in order to use memory mapped files and simplify overriding default browser capabilities.
- In stream mode entity data properties that can allocate large arrays only initialise these arrays when needed.
- Caches used with stream operation are now fixed memory size and serviced via the thread pool.
- Automatic update processes uses temporary files rather than main memory to verify integrity of updated files prior to using them.
- Temporary files are now created in the App_Data/51Degrees folder of the web application rather than a UNC path or the master data file folder.
- Values associated with Profiles are now retrieved using a more efficient algorithm.
- DataSet.Properties collection now has a string accesser to make retrieving properties by name simpler.
- Web sites using memory mode use a byte array to improve start up time.
- Version 3.2 data file formats are supported in parallel with version 3.1 data files.
- 51Degrees unit tests are now part of the open source distribution.
- Import Change: The embedded device data has been removed from the assembly and by default placed in the App_Data folder if used with a web site. The solution will not work without the associated data file being provided and the WebProvider.ActiveProvider property can now return null.
Changes in version 18.104.22.168
- Automatic download requests version 3.2 data file format.
- The active provider will not be initialised when data sharing is enabled.
- TrieProvider now support V3.2 data file format which includes embedded HTTP headers in the properties data array.
- TrieProvider supports NameValueCollection of HTTP headers rather than a single user agent string. An collection of device indexes is returned for each of the relevant headers. The collection can be used with new GetPropertyValue methods to return the property value from the most relevant HTTP header.
- If a file is used with the StreamFactory it will only be deleted if the IsTemporary parameter is set to true. Previously the extension of the file was used to determine if the file was temporary and eligible for deletion.
- Stream DataSet now exposes information related to the number of readers created and queued in the underlying Pool.
- Detector module no longer listens for PostAuthorizeRequest if image optimisation is disabled.
- Changing device detection or image optimisation enabled states will change web.config modules collection to ensure configured to listen for all requests, not just managed code.
- Changed image optimiser process to reduce memory consumption slightly, and ensure resized image is smaller than the original.
- The entity RankedSignatureIndex has been renamed to IntegerEntity along with the associated factories. This is so that the entity can be reused in the new lists for Nodes related to Signatures and Signatures related to Nodes where each list also contains 4 byte integer data types.
- A potential threading problem has been resolved in Profile entity by only referencing the property PropertyIndexToValues rather than its backed private field.
- Cache service method thread start is now synchronised.
- Memory/Profile.cs Init() method has been removed as the ValueIndexes and SignatureIndexes arrays are needed to support other methods and don’t need to be freed.
- Changed the Cache classes AddRecent and ServiceCache methods to prevent multiple service operations in multiple threads.
- Added a ResetCache method to the dataset.
- WebProvider in memory mode now uses a byte array in memory rather than constructing all instances of every entity. This reduces start up time.
- Unit tests have been added for performance, memory and major data error checks.
- V3.2 data format is now supported.