David F. Leigh

Home Page / Contact Information

Professional Biography

Discovery Zone Handshaking Protocols

This, my friends, is very, very cool. DZ's Back Office is a huge FoxPro 2.6 application (several megabytes), and their distribution system for updates was via Xcellenet over dial up telephone lines using 14.4 modems. This makes for very slow and costly transfers and updates.

 I analyzed the back office and found that it actually consists of several separate subsystems and a common interface. Looking at the pattern of updates in the past, it was also evident that usually only one or two subsystems were updated at a time, making it wasteful to send a single large EXE every time a subsystem changed.

 On the other hand, it wasn't feasible from a control standpoint to leave the application as loose components and send only the changed program code. The reason, of course, is that Xcellenet transfers (at least ours) can be a buggy, and you'd wind up with only part of an application in place. Some kind of compromise was in order.

 I split the back office into the common interface (which was an EXE) and several application modules (FoxPro APPs, similar to overlays). This in itself is common practice. What was different about this method was that the version and major and minor revisions were coded into the APP files, and each APP was encapsulated in a framework that enabled it to respond with the version and revision when queried by the common interface or by another APP. The version numbers were set up so that dependencies could be drawn between various APPs. This was superior to checking date-time stamps, since these could be changed in transmission, or inadvertantly by programs such as TOUCH.EXE

 During startup the process went something like this:

This method of handshaking is structurally sound and resulted in a savings of several thousand dollars per year in telephone costs for updates, as well as improved response time for module development in that the modules were smaller and more clearly defined instead of being lumped together in a huge code pool.

The informational content of this website is copyright 1997-2002 by David F. Leigh unless otherwise stated. Permission to distribute is granted under the terms of the GNU Free Documentation License.