user122122
user122122

Reputation:

Offline web application

I’m thinking about building an offline-enabled web application.

The architecture I’m considering is as follows:
Web server (remote) <--> Web server/cache (local) <--> Browser/Prism

The advantages I envision for this model are:

Any thoughts on this architecture? Why should I / shouldn’t I use it? I'm particularly looking for success/horror stories.



The long version

Notes:

The common solutions to this problem don’t feel adequate somehow. Here is a short analysis of each. Gears/HTML5:

Adobe AIR:

My requirements are:

Upvotes: 3

Views: 3966

Answers (3)

user123810
user123810

Reputation: 11

The part about running the local Web server as a service appears unwise. Besides the fact that you are tied to certain operating environments that are available in the client, you are also imposing an additional burden of managing the server, on the end user. Additionally, the local Web server itself cannot be deployed in a Web-based model.

All in all, I am not too thrilled by the prospect of a real "local Web server". There is a certain bias to it, no doubt since I have proposed embedded Web servers that run inside a Web browser as part of my proposal for seamless off-line Web storage. See BITSY 0.5.0 (http://www.oracle.com/technology/tech/feeds/spec/bitsy.html)

I wonder how essential your requirement to prevent data loss at any cost is. What happens when you are offline and the disk crashes? Or there is a loss of device? In general, you want the local cache to be the least farther ahead of the server, but be prepared to tolerate loss of data to the extent that the server is behind the client. This may involve some amount of contractual negotiation or training. In practice this may not be a deal-breaker.

Upvotes: 1

Jim Blizard
Jim Blizard

Reputation: 4253

The only way to do this reliably is to offer some sort of "check out and lock" at the record level. When a user is going remote they must check out the records they want to work with. This check out copied the data to a local DB and prevents the record in the central DB from being modified while the record is checked out.

When the roaming user reconnects and check their locked records back in the data is updated on the central DB and unlocked.

Upvotes: 0

Corbin March
Corbin March

Reputation: 25714

Horror stories from a CRM product:

  • If your application is heavily used, storing a complete copy of its data on a user's machine is unfeasible.
  • If your application features data that can be updated by many users, replication is not simple. If three users with local changes synch, who wins?
  • In reality, this isn't really what users want. They want real-time access to the most current data from anywhere. We had better luck offering a mobile interface to a single source of truth.

Upvotes: 10

Related Questions