Offline Application Block

The Smart Client Offline Application Block is now live on MSDN.

msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/offline.asp

This block has re-usable code and samples which show how you can build smart client applications which can operate offline. With this block your application can detect the presence or absence of a network connection, cache data for use while offline, and re-synchronize data and tasks with the network once the application goes online.

The block uses a store and forward mechanism which is suitable for message-based interactions with the network, such as you would get with a smart client operating in a service oriented environment. This is a very flexible model and doesn’t require the kind of tight integration between client and server you find with database merge-replication approaches to offline…

Comments

  • Anonymous
    March 01, 2004
    Hows does the block detect the presence or absence of a network connection?
  • Anonymous
    March 01, 2004
    The Smart Client Offline Application Block is now live on MSDN.
  • Anonymous
    March 02, 2004
    Greg,

    I downloaded the block last night and was reading through the documentation, I beleive it said that the developer will need to implement that specific piece (online / offline detection). It looks to me to be a much more involved wrapper to the caching application block that queue's up actions for re-connection, etc. I may be wrong but that was my inital take on it.

    Paul Tyng
  • Anonymous
    March 02, 2004
    I'm not entirely correct, what I was reading about was the custom detection, the block comes with a default implementation of connection detection:

    "The default connection detection provider uses the InternetGetConnectedState method of the WinInet dynamic-link library (DLL) to detect connection state changes. For example, if you remove the network cable from a computer that is connected to the network while running the sample, the connection state displays the change to offline mode."

    [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/offline-ch03.asp]
  • Anonymous
    March 02, 2004
    Yes - the block includes a default implementation which tells you whether there is a network connection or not. This may suffice for simple cases but, in general, you may want to implement something more suitable for your application.

    Having a network connection is a necessary but not sufficient condition to being online. Even with a network connection you can't be sure that the service you are trying to get to is available - if the service is not available, you are essentially offline despite being connected to the network.

    Using the pluggable architecture of the block, you can implement a more meaningful offline state detection mechanism. For instance, you could periodically ping the required service, though arguably this is pretty inefficient and inelegant.
  • Anonymous
    March 02, 2004
    Last month Microsoft released a new application block. This application block of re-usable code and samples, can be used to model your own applications to allow them to detect the presence or absence of a network connection, cache data for use while offline, and re-synchronize data and tasks with the network once the application goes online.
  • Anonymous
    April 03, 2004
    Hey I was just cruising the blogs and am not really up to speed on the smart client stuff.

    <TABLE ALIGN="CENTER" BORDER="1">
    <TR>
    <TD>Using the pluggable architecture of the block, you can implement a more meaningful offline state detection mechanism. For instance, you could periodically ping the required service, though arguably this is pretty inefficient and inelegant.
    </TD>
    </TR>
    </TABLE>

    A general approach that can work here though is to ping whenever a network connectoid becomes connected or disconnected. Ping the desired resource source, maybe authenticate the desired resource source if you care about a spoofed connected state. Its hard to have a generic connected/disconnected detector because the network of interest varies.