Note that there are some explanatory texts on larger screens.

plurals
  1. POOffline web application
    text
    copied!<p>I’m thinking about building an offline-enabled web application.</p> <p>The architecture I’m considering is as follows:<br> Web server (remote) &lt;--> Web server/cache (local) &lt;--> Browser/Prism</p> <p>The advantages I envision for this model are:</p> <ul> <li>Deployment is web-based, with all the advantages of this approach</li> <li>Offline-enabled</li> <li>UI (html/js) synchronization is a non-issue</li> <li>Data synchronization can be mostly automated <ul> <li>as long as I stay within a RESTful paradigm</li> <li>I can break this as required but manual synchronization would largely remain surgical</li> </ul></li> <li>The local web server is started as a service; I can run arbitrary code, including behind-the-scene data synchronization</li> <li>I have complete control of the data (location, no size limit, no possibility of user deleting unknowingly)</li> <li>Prism with an extension could allow to keep the javascript closed source</li> </ul> <p><strong>Any thoughts on this architecture? Why should I / shouldn’t I use it? I'm particularly looking for success/horror stories.</strong></p> <p><br><br> The long version</p> <p>Notes: </p> <ul> <li>Users are not very computer-literate. For instance, even superficially explaining how Gears works is totally out of the question.</li> <li>I WILL be held liable if data is loss, even if it’s really the users fault (short of him deleting random directories on his machine)</li> <li>I can require users to install something on their machine. It doesn’t have to be 100% web-based and/or run in a sandbox</li> </ul> <p>The common solutions to this problem don’t feel adequate somehow. Here is a short analysis of each. Gears/HTML5: </p> <ul> <li>no control over data, can be deleted by users without any warning </li> <li>no control over location of data (not uniform across browsers and platforms)</li> <li>users need to open application in browser for synchronization to happen; no automatic, behind-the-scene synchronization</li> <li>different browsers are treated differently, no uniform view of data on a single machine</li> <li>limited disk space available</li> <li>synchronization is completely manual, sql-based storage makes this a pain (would be less complicated if sql tables were completely replicated but it’s not so in my case). This is a very complex problem.</li> <li>my code would be almost completely open sourced (html/js)</li> </ul> <p>Adobe AIR: </p> <ul> <li>some of the above</li> <li>no server-side includes (!)</li> <li>can run in the background, but not windowless</li> <li>manual synchronization</li> <li>web caching seems complicated</li> <li>feels like a kludge somehow, I’ve had trouble installing on some machines</li> </ul> <p>My requirements are:</p> <ul> <li>Web-based (must). For a number of reasons, sharing data between users for instance.</li> <li>Offline (must). The application must be fully usable offline (w/ some rare exceptions).</li> <li>Quick development (must). I’m a single developer going against players with far more business resources.</li> <li>Closed source (nice to have). Yes, I understand the open source model. However, at this point I don’t want competitors to copy me too easily. Again, they have more resources so they could take my hard work and make it better in less time than I could myself. Obviously, they can still copy me developing their own code -- that is fine.</li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload