Designing presentation-tier for occasionally connected applications.

V

Vijay Kumar

Architects,

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.

Any ideas?

Thanks in advance.

Vijay
 
A

Andrew Thompson

Vijay said:
Architects,

Oh I see, on c.l.j.gui it was 'folks' but
here it is 'architects' is it?

Please do not multi-post Vijay,
you are not _that_ important.
Take my word for it.
 
E

Eric Sosman

Vijay said:
Architects,

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.

1: If the application must be web-based and must operate
when the system is not connected to the web, the system
must include its own web server. That much seems clear.

2: If the on-line and off-line UIs are to be identical
(except for some missing functionality when off-line), the
most straightforward approach is to use the same browser
and the same client-side applets (or other gadgetry) in
both modes. The only difference would be in which web
server one connects to: the real on-line server, or the
substitute localhost server.

3: This requires a little more work. You don't say what
sort of work the application does, but it seems that the off-
line localhost web server must be able to store user input
somewhere (no problem) and then to transmit that input to the
on-line server when it becomes available. One way to do this
would be to write a web client that would "replay" the off-line
data to the on-line server, possibly after the user first goes
through a login sequence of some kind. Another way might be to
use a different channel altogether -- for example, you might
"store" the off-line work as a bunch of E-mail messages to an
address on the server machine, essentially letting the E-mail
client take care of the data synchronization task.

Finally, you're quite right that Swing is not a web-based
architecture. But Unicode is also not web-based, pixels on
the screen are not web-based, the local file system is not
web-based, and my grandmother's fruitcake is not web-based.
Swing is a set of classes to help you implement GUIs; it makes
no difference whether the GUIs have or do not have any web
association. Swing-ness and Web-ness are orthogonal, so
what's the objection?
 
Z

znôrt

Architects,

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).

No wonder they insisted :) If you are on the road, how do yo expect
to run a web-aplication without a web server?

It's really pretty simple:

Put a web server on every laptop. Have a single web application that
should :
1. handle UI (presentation layer)
2. be aware of connection status
5. support routing of online operations if connection is available
3. support offline operations
4. support data synchronization on connection

Then put any other business logic (i.e., "online" operations) and
legacy database on the main server on the network.
Swing based solutions are ruled out because that is not a web-based
architecture.

JApplet is pretty Swing based and pretty web-based ;-) But ... weren't
you asking about design?

You could implement this same "design" with anythig from JApplets,
satndalone Swing, JSP, on the laptop, to Servlets, EJB or RMI, both
on the laptop and on the main server, just to name a few. The only
limitations come, I'm afraid, from the requirement for the UI to be a
web app.

regards
znôrt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top