RESTfmSync

What is RESTfmSync?

RESTfmSync is a solution for syncing data from FileMaker Pro or FileMaker Go to FileMaker Server via RESTfm.

What is RESTfm?

RESTfm is an easy way to get and send record data to FMS via web ( HTTP ) protocols in formats that make it easy to manage and parse inside FileMaker scripts. We use RESTfm because it gives us :

  • Access to FMS over http so without any overhead of doing a FMP networking protocol for faster connections.
  • A choice of data formats, so we can use whatever works best in each situation ( JSON in the plugin, plain text in FMGo ).
  • A way to access FMS without any PHP coding so the same approach can work in any database.

So you can think of RESTfm as a translation engine. FMP or FMGo sends a request to RESTfm, either asking for record data back, or sending record data to be updated or added. RESTfm translates the request and sends it onto FMS in the correct formats.

So why use http instead of FMP networking?

RESTfmSync uses HTTP protocols to talk to the server, so you have less connection overhead.

We noticed that opening a FMS hosted file from FM Go over a slow connection can be time consuming, and there may be speed advantages to a HTTP based method that has a very low connection overhead. If you're syncing often, with small amounts of data ( a couple of records here and there ), then using FMP to FMS networking is going to spend most of its time opening and closing the files on FMS.

How does it work?

You need to already have RESTfm installed and running on your FMS box, and then follow the instructions in the setup section to add the sync code to your files.

Then you call the Main Sync script. Newly modified records on the client are sent to the FMS server, and any records that other users modified are pulled off the server onto your local copy.

Any Limitations?

Yes, the FMS PHP API doesn't directly support container fields, and so RESTfm doesn't yet support them, and so the sync process doesn't yet either. It's possible to encode binary data using Base64 and send that via RESTfmSync though, so that is an option. Base64 can't be done in Pro without plugins, but it is possibly to do a lossy encoding of an image using the WebViewer, but this method would only work for images and not other data files.

Large data sets, like Base64 encoded images, can be slow on FMGo as they're broken into 2000 character sections and sent one at a time. This is a limitation of the InsertFromURL script step, and the GET protocols. You can remove this limitation by using the WebViewer to do a POST.

Can I try it out?

We don't have demonstration version of it available at present, but may consider this in the future.

How do I buy it?

If you purchase a copy of RESTfm, you get RESTfmSync included. RESTfm is licenced on a per server basis, so one copy of RESTfm on the server will support as many RESTfmSync clients as you need. There is no licence cost for RESTfmSync. You get full access to the code to implement and modify at your leisure.