Online, Offline, Disconnection, Confused. :)


Aaron A. Anderson

I'm in the initial stages of architecting a Windows Forms application for
use in both an
online and offline modes. I've looked at both the TaskVision application
and the Offline Application Block for for guidance.

The TaskVision application is much simpler in design than the Offline
Application Block, but the latter offers a much more robust solution. The
problem I have with the OAP is it's choices of offline data stores and how
the data gets synchronized. I don't want to have to force my customers to
install MSDE (getting them to install the .NET framework is hard enough),
but the addition of MSMQ makes it undoable proposition.

The options I see for effective offline data cache is:

1. DataSets saved as xml. My main concern here is the scalability,
efficiency, and memory usage when the application is running. Since
DataSets are essentially in-memory databases, I can see memory consumption
getting out of control after a while when the amount of data increases. On
the plus side, it simplifies the client-side data layer.

2. MSDE. With MSDE I get both increased memory use, plus I get to duplicate
the datalayer in both the web service and client. Can use replication, but
since this app is supposed to work over the Internet with Web Services, that
option is closed to me (I think).

3. MDBs. Poo poo them, but at least they're memory efficient, and can be
queried. The downside is having to create two separate datalayer
implementations. One for SQL, one for Access. The synchronization code is
a bit more complex than just using DataSets.

Has anyone else scratched their heads over the best route to take or am I
suffering Analysis Paralysis?

Can the experts out there share some wisdom?

Justin Rogers

Ideally everyone would have a database on their machine that you can take
advantage of in some way or another, so requiring MSDE isn't necessarily
a bad thing. Depending on the application set the user has installed they
probably already have a copy (though installing your app into an instance
installed by another app is sometimes dangerous).

DataSet's are really easy though. Being XML files, you can provide easy
encryption, they have built in dirty record support, and they transport easily
between your client and server. You could look at strongly typing your
and that would provide some performance benefits, lower memory usage, etc...

It all depends on how much data you are talking about. Definitely a balance
size of data, speed/performance, deployability, etc... Take the time to write
some requirements and you'll find the process easier, since you might rule out
or the other based solely on the requirements.

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