We are in the process of developing a web-based app that needs to be functional when the user is on the road where the Internet connection to the server is not available. There are 3 basic requirements:
1. Must be web-based, not a fat client app.
2. The UI for the offline mode and on-line should be identical.
3. In the off-line mode some basic functionality to enter data (fill forms) should be available, that do not need to be reentered when the connectivity is available.
Can some one think of a solution on how one would design this app. To me disconnect from the network mean no web application, but some one here insisted that we can put a web-server/appserver on each client machine (about 200 of these).
Swing based solutions are ruled out because that is not a web-based architecture.
Thanks in advance.
You could put a copy of a light-weight app server like Tomcat on every client, but that strikes me as a backwards way of doing things. You local app servers would have to connect to the remote app server, and your users would need to be techie-savvy enough to keep an app server running on their machine (a BIG assumption).
A fat client is really the best way to support disconnected users. You might be able to "cheat" by writing your fat client as an applet, which is web-related. The applet could be launched from an HTML page and JAR file on the client machine. It could then connect to the server when the user is connected (e.g. via a web service) and store data on the file system when the user is not.
I totally agree with Paul Strack : to allow support of disconnected users a fat client is the better solution. But to use a application server on each client is awful :)
That's what I thought in the beginning that putting an web/app server on each PC will be a deployment nightmare. So I totally agree that this is a suboptimal solution.
About the fat client solution, the organization is committed to developing only in web based environment, (In know Java WebStart and JApplet would work but..)
Any one knowledgable about XForms? I read that it is being used for developing UI for device independent mobile apps. XForms has mechanism to store user input of forms data locally in XML while connectivity is not available. Sure the user will not be able to search/retrieve/update existing data on the server, but they could at the very least input new data.