version32beta

API Version 3.2 Update for Developers

51Degrees Products

7/15/2015 12:30 PM

API Development

Details of features and release schedule for API updates

We're always working hard to improve the 51Degrees APIs making them easier to use, consume fewer resources and provide new features. Version 3.2 combines many incremental changes. Highlights included in all API variants are:

  • New 3.2 version data file is 25% smaller than version 3.1. Data file size is no longer proportional to supported Device Combinations and Signatures. As a result V3.2 data files will grow at a slower rate than V3.1.
  • C APIs now join PHP, .NET and Java in supporting multiple HTTP headers, not just User-Agent. The developer no longer needs to consider which headers to use.
  • Cache structures are now all memory limited rather than time limited resulting in a more consistent memory profile.
  • Information relating to false positives such as rank information is returned more quickly.
  • Github is the master repository for all API source code. Mirrors will be maintained on Codeplex, Sourceforge and other locations.

API specific updates - .NET | Java | PHP | C | Python | Perl | Node.js | PHP (Ext)

.NET has been in beta since June. Java and C based APIs will be code complete with beta testing starting w/c 20th July. PHP will be updated to support V3.2 data files in August. We welcome your comments and suggestions as public testing progresses.

Users with a subscription can start downloading V3.2 format Premium and Enterprise data with their existing licence keys. Both V3.1 and V3.2 data will continue to be made available to licence key holders.

.NET

Extensive testing work has been completed on .NET. Performance testing has been performed with LoadStorm. Previously internal tests covering performance, memory consumption and more traditional unit tests are now part of the public repository. The latest beta can be installed from NuGet.

Other major .NET changes include:

  • Support for .NET version 3.5 has been dropped in the beta. If you need .NET version 3.5 please contact us so that we can gauge the need to maintain support.
  • Lite data has been removed from the FiftyOne.Foundation.dll assembly reducing memory footprint. As a result the developer is responsible for providing a valid data file. V3.2 Lite data files for .NET will be maintained in the data folder of the repository.
  • The way Microsoft provided browser properties are overridden has been simplified.
  • Memory mode initialisation when used with a web site has been shortened by loading the file into memory rather than initialising all .NET objects.
  • Image optimiser will now check that the shrunk file is smaller than the original file before sending the image.
  • The DataSet.Properties collection now has a string accessor providing a more intuitive method of retrieving properties.
  • The automatic update process uses temporary files rather than memory.
  • Retrieval of related data is now more efficient. For example; returning Values associated with Profiles.
  • The V3.2 assembly supports both V3.1 and V3.2 data file formats.

Due to the change in the way default browser properties are being overridden and the many 3rd party components which use these properties we suggest full regression testing is completed where 3rd party .NET components are used with a web site. Examples of such environments could include SharePoint, or the use of toolsets like DevExpress or Telerik.

We expect all planned beta testing and pre-release live deployments to complete w/c 20th July and stable release to follow shortly afterwards. Please "watch" us on Github for notifications.

Watch and Star .NET API on Github

Java

Our Java API mirrors the .NET class structure and data model. Once .NET is completed similar tests will be carried out on Java. Previously internal tests published in JUnit will be added to the repository.

Major Java changes include:

  • Lite data has been removed from the package reducing memory footprint. As a result the developer is responsible for providing a valid data file. V3.2 Lite data files for Java will be maintained in the data folder of the repository.
  • The automatic update process uses temporary files rather than memory.
  • Retrieval of related data is now more efficient. For example; returning Values associated with Profiles.

We expect Java beta testing to commence w/c 20th July and the development branch on Github to be updated accordingly. Please "watch" us on Github for notifications.

Watch and Star Java API on Github

Python, Perl, PHP (extension), Node.js, C

The C source code changes for V3.2 will be released to the development branch w/c 20th July. Similar tests will be carried out as with other APIs. Extensive work has been done to remove responsibility for caching, pooling and multi-threading from the developer. Highlights include:

  • Full support for multithreading in GCC and MSVC compilers.
  • A pool of worksets can be maintained reducing memory allocation operations and improving performance. Developers no longer need to maintain their own pool.
  • A cache can be provided when creating a workset or pool which will be checked before a full detection is performed.
  • HTTP headers other than User-Agent can be provided to the matching process.
  • Improvements have been made to the code to improve readability and address minor defects.

The version 3.2 C API is not backward compatible with V3.1 data files.

Please "watch" us on Github for notifications.

Watch and Star API on Github

PHP Script

PHP script will be updated to support V3.2 and all the general benefits in August. Those wishing to benefit from V3.2 changes in PHP earlier should consider switching to the PHP C Extension.

The version 3.2 PHP script API will not be backward compatible with V3.1 data files.

Questions?

Please post a comment or contact us if you've any questions or feedback on the changes we're making. Thank you for using 51Degrees.

Questions?