It concentrates on the challenge of building and maintaining highly responsive, data-intensive applications in which users search, add, update, and view complex data from different angles as they pursue solutions to real problems in real time.
Write simple and complex queries using a LINQ-like query syntax:
- Simple conditions (id == 42, amount > 100, name starts with “Bob”)
- Compound conditions (name is “Bob” or “Robert”)
- Conditions with functions (length(name) > 30)
- Conditions on related entities (customers with orders shipped to California)
- Sort, page, take first ‘n’
- Expand the query result to include related entities in the payload (eager loading)
- Select a subset of properties; flatten complex object graphs with projections
- Query a remote service with a full OData-compliant URL.
- Merges query results into cache, adding new entities and updating others while preserving unsaved changes.
- Use the same query object and query language to filter entities in the local cache.
- Navigation among entities in cache, e.g., Customer to Orders to OrderDetails to Product … and back.
- Entities are self-tracking; they know when they are new, changed, marked-for-delete, or unchanged.
- Refresh an entity to its current state on the server or revert changed entities to their original values with a single command.
- Publishes property-changed and other notifications about the entities that enter, leave, and change in cache.
- Validates entire entities and individual property values, automatically or on-demand, with a combination of discovered and custom rules.
- Validation error messages can be customized or localized.
- Full integration with the Entity Framework.
- Supports WebAPI and OData back-ends.
- Works with NoSQL, non-.NET, and SOA back-ends. (Samples under development.)
- Create entities dynamically based on metadata that you control and extend.
- Id generation strategies handle a wide variety of client and store-generated key schemes; use ours or write your own.
- Export and reimport entities to device local storage to meet offline and reliability requirements.
- Create multiple caches to segment and isolate data changes in “sandboxes”.
- Combine entities from multiple remote services in the same cache.
- Entities support Complex Types and Enumerations as properties.
- Save pending changes to a remote service in a single request.
- Mix entities of different types in the same change-set (Customers, Orders, OrderDetails).
- Mix operations (add, update, delete) in the same change-set.
- Save the change-set as a single transaction.
- Detect and resolve concurrency conflicts.
Library and Tooling support
- Out-of-box support for Knockout, Angular, and Backbone.
- TypeScript support for compile-time type checking, classes, interfaces, and inheritance.
- IntelliSense support for Visual Studio 2012.
- RequireJS-enabled for modular applications.
- Open API that allows additional front or back-ends to be plugged in.
Supported by IdeaBlade
- Developed and supported by IdeaBlade, since 2001 a leader in rich client application libraries.
- Extensive API documentation with examples and links to source code.
- Quality control through QUnit automated tests.
- Paid support options, training, and consulting services to ensure that you succeed.