I am a bit of a newbie with Delphi databases, we've been using Delphi for 15 years but we have always used a proprietary binary data format. We now want to switch to an SQL file format. For now we're working with SQLITE, so the Java and C# guys in our shop can read the file too.
We have all the latest tools now, XE5 with FireDAC, Datasnap, REST etc. I am very, very impressed with what we can do now.
Currently, we have a Delphi desktop app that controls the data file, and use XMLRPC calls from the clients to send and receive transactions. We have what we call a "refresh" where the server sends pretty much the whole database file to the client, so the client can work offline.
This is an agricultural business, where the the clients need to be able to work offline since they are often out of wireless range, sometimes out of cellphone range too.
We currently have 3 native mobile clients - a Windows Mobile client, Android client, and an IOS client, some more powerful than others. Most of our end users have the Windows Mobile client, which we can no longer extend.
The "server" is a large desktop Delphi application.
What I am asking is what is the Delphi way to design this. We want to develop Android and IOS clients to communicate with the desktop. Long term, we want to put in a REST server on the client, so we can have web access, but that is not the main issue we have now.
Clients need to be able to look up records, possibly change them, and send the transactions when there is a connection. And they need to have a copy of the data file so they can do this when offline.
I assume we still need a "refresh" which brings over the entire data file for offline use ? Any ideas on how this is best done, We would also want to be able to send the file over to an app written in some other language so the Java and Objective C guys can work with it.
Second, for Firemonkey mobile version, what built in methods for caching transactions on the clients could we use ?
Thanks for any ideas. I've been working with FireDAC, Datasnap, etc, and I'm pretty sure we now have all the tools to do this, just trying to get pointed in the right direction.