Yes absolutely! You need to migrate your server components to either Java or .NET and pass JSON back and forth. Take a look at the new ImportJSON and ExportJSON methods of the datawindow/datastore. If you use Java, it will be a little harder since you won't be able to take advantage of the datawindow on the server side, but you can still pass JSON.
.NET (easiest way)
- Use datastore to retrieve, return JSON string from ExportJSON method (note: there are different arguments to this function. For a simple retrieve, you'd probably just want the basic JSON string returned)
- On the client side, you would either call the .NET component through a web service or .NET assembly. You would get the JSON string returned and use ImportJSON to display the data in your app.
- Changes on the client side are captured using the ExportJSON (note: this time you would capture the full state similar to GetFullState method. Advanced users (better performance) might consider doing a GetChanges on the dw and then SetFullState to a datastore, followed by a ExportJSON to get a smaller JSON string with only the changes instead of all rows in the dw.
- Client side update JSON is passed to the server again either via a web service or .NET assembly. Server component takes the passed JSON string and uses datastore.ImportJSON to set the changes and then just Update the datastore.
Pretty easy and almost the exact same pattern as current EA Server.
Java - more complicated, but do-able
- Retrieve to a SQL resultset, then convert to JSON string using JSONObject and JSONArray
- Client would use a REST web service to call the retrieve and get JSON back. Use same ImportJSON to display the data.
- Slightly more challenging on the update: inserts, deletes and updates would have to be handled separately. Some of this can be handled with design by not allowing all 3 on the same dw, but if not you can process each separately by checking the dw rowstatus.
- Either way, use ExportJSON for the updates and inserts. I'd probably have a method on the server for deletes that just took the key value(s).
- Client calls separate methods for Insert, Update, Delete via web service passing JSON for insert and update or key(s) for Delete
That's about it. I'm planning to do a webcast on this coming in the next month or 2, probably after Elevate. Feel free to reach out if you need any professional assistance with this.
Kevin
kjr_23@yahoo.com