Review: AnyPresence aces enterprise mobile applications

AnyPresence combines broad client support, useful code generation, and a rich set of options for data storage and enterprise integration

1 2 Page 2
Page 2 of 2

Generated code

I downloaded and examined the generated code for an AnyPresence “hello, world” application that I had built in the design environment -- specifically a Rails back end, HTML5 mobile app starter kit, and JavaScript SDK. I didn’t look at all the other possible generated code, as the number of combinations was daunting.

In the mobile app, I found most of the interesting CoffeeScript code under app/javascripts/app, and it was divided into application, model, view, and controller directories. I didn’t have any trouble reading the code once I found it, although the excessive spacing gave away the fact that it was generated. There seems to be a mechanism for adding your own code to “custom” subdirectories to allow it to be automatically incorporated into the build, and to avoid having it overwritten by future code generation from the design environment.

The generated code used nine JavaScript libraries: Backbone, jQuery, jQuery Mobile, large-local-storage, NVD3, Offline.js, Q, the generated SDK (holding a generated AP class), and Underscore (needed for Backbone). Comments in the code indicated where to switch included file sources around for local development. A fairly full set of grunt commands is provided for building the app, along with basic test scripts.

In the SDK, the Backbone, jQuery, large-local-storage, Q, and Underscore libraries were in use, and the SDK class library was generated. Logic in the SDK implements collections, relationships, authentication, and an MVC (model view controller) model, and generated HTML documentation is provided. Again, a fairly full set of grunt commands is provided for building the SDK, along with basic test scripts to exercise, for example, the CRUD (create, read, update, delete) functionality.

In the Rails API, I found the MVC model divided the way it’s supposed to be, with the field definitions in the model, for example. I found a good set of tests, especially for the CRUD, and the seed data declared in the Ruby code but excluded from the test environment -- again, as it’s supposed to be structured.

AnyPresence app preview

A preview of an HTML5 app running in the AnyPresence designer. Note the display of generated seed data. 

In general, I found the generated code I examined to be in line with best practices and decently commented, although not always formatted as I would have liked. While I was initially concerned that the generated code would not be maintainable without the design environment, my fears were laid to rest when I reviewed the source code. 

I initially felt that the absence of a built-in monitoring service might be a competitive weakness, but I can’t argue with AnyPresence's integration with the best-of-breed monitoring systems, many of which are already in use by its customers. Also, I didn’t delve deeply into the offline app capabilities of AnyPresence for different platforms. Given its generation of customized SDKs for multiple clients, generating offline/online database synchronization for each client seems like a lot to ask.

AnyPresence, while priced a bit higher than the entry level of the other MBaaS systems I reviewed for this series, offers more value than these competitors for enterprises that need to integrate their existing systems with mobile applications. It is especially valuable for enterprises that wish to expose their APIs to partners who can in turn use them in their own mobile applications.

This story, "Review: AnyPresence aces enterprise mobile applications" was originally published by InfoWorld.

Copyright © 2014 IDG Communications, Inc.

1 2 Page 2
Page 2 of 2
7 inconvenient truths about the hybrid work trend
Shop Tech Products at Amazon