What is Persevere?
The Persevere project is an open source set of tools for persistence and distributed computing using intuitive standards-based JSON interfaces of HTTP REST, JSON-RPC, JSONPath, and HTTP Channels. The core of the Persevere project is the Persevere Server. The Persevere server includes a Persevere JavaScript client, but the standards-based interface is intended to be used with any framework or client.
Features
The Persevere Server is an object storage engine and application server (running on Java/Rhino) that provides persistent data storage of dynamic JSON data in an interactive server side JavaScript environment with the following key features:
- Create, read, update, and delete access to persistent data through a standard JSON HTTP/REST web interface
- Dynamic object persistence - expando objects, arrays, and JavaScript functions can be stored, for extensive JavaScript persistence support
- Remote execution of JavaScript methods on the server through JSON-RPC for a consistent client/server language platform
- Flexible and fast indexed query capability through JSONQuery/JSONPath
- Comet-based data monitoring capabilities through HTTP Channels with Bayeux transport plugin/negotiation support
- Data-centric capability-based object level security with user management, Persevere is designed to be accessed securely through Ajax with public-facing sites
- Comprehensive referencing capabilities using JSON referencing, including circular, multiple, lazy, non-lazy, cross-data source, and cross-site referencing for a wide variety of object structures
- Data integrity and validation through JSON Schema
- Class-based data hierarchy - typed objects can have methods, inheritance, class-based querying
- Pluggable data source architectures - SQL tables, XML files, remote web services can be used as data stores
- Service discovery through Service Mapping Description
Current Activity
Kris Zyp of SitePen is lead of Persevere and we are active in developing this project. We are also active in leading/contributing to various related open standards including JSON-RPC, JSON Schema, HTTP Channels, and JSONPath, as well as making tools for these standards more widely available and even implementing such technologies in Dojo. These features have been added recently added to Persevere:
- Transaction support
- Data subscriptions/Comet support
- Class-based hierarchy (which fits more closely with the Dojo data concepts)
- SMD Service Discovery
And these features are planned to be added:
- Versioning - object history and conflict management/merging
- Additional client libraries: PHP, Python, Java
- XML Support
- Untrusted script validation and sandboxing
Learn more about Persevere