Project Description

Based on the idea of the CrmServiceToolkit (Daniel Cai) and provides basic CRUD operations for the Dynamcis CRM 2011 REST /ODATA web-services endpoit

CRM 2013

All unit-tests are passed /green for CRM 2013 Online (tested with the CrmRestKit-2.6.1.js)

Roadmap

The next major release (3.0) of the CrmRestKit.js requires some fundamental changes:
  1. Eliminate the jQuery dependency
  2. when.js (https://github.com/cujojs/when) instead of jQuery for the promise-pattern
  3. Jasmine (http://pivotal.github.io/jasmine/) as unit-testing framework instead of QUnit
  4. “Real” unit-tests with mocks/stubs
  5. Prototypes (CrmRestKit.Prototype.Create)
  6. Performance
  7. Namespace changes (e.g. CrmRestKit.util.ParseODataDate)
To achieve this I am looking for other developers that would like to contribute in this project!

API for the CrmRestKit

All CRUD methods are availableas as async (default) or sync operation:
  • Retrieve
  • ByQuery
  • ByQueryUrl
  • ByExpandQuery
  • ByQueryAll (incl. progress notification)
  • Create
  • Update
  • Delete
  • EntityReferenceFactory
  • Associate
  • Disassociate
  • ParseODataDate

Polaris & cross-browser support

The unit-tests since version 2.5 are executed & passed in Chrome 25, Firefox 19 and IE 8/9/10

Documentation

* The .zip file contains the QUnit tests that should be used as reference /documentation.
* Articles & Blogs

Why jQuery?

Some of you might say: "Why should I use a library that depends on jQuery". jQuery provides us with some nice features that are used by this library:
  • Promise /A: The deferred-capacities of jQuery are very powerful and allows us to write really better code (without a callback-hell).
  • Cross-Browser Ajax: Clean ajax API: Remember: R8 (cross-browser-support)

Promise /A:

By utilizing the promise-capacities of jQuery we can now "combine" our requests very easily. Just assume that you execute two requests and you need to defer the execution of other logic until both operations are completed. (The two operation should be executed in parallel!) :

   $.when(fn1(), fn2()).then(function(result_fn1, result_fn2){  
      /*...*/ 
   }); 

The best part: Even in case one of the function might change to sync. execution, the code does not change!

See: http://msdn.microsoft.com/de-de/scriptjunkie/gg723713.aspx

Dependencies:

  • jQuery 1.7.1 (or higher)
  • JSON2

Last edited Oct 17, 2013 at 8:24 PM by thuld, version 42