>MyApp was designed to run in a local network. it takes about 2 seconds for loading. Recently, i have a remote user (via modem, 56k,connected at 115,000 bps using compressed data) and it takes aboud twelve minutes for loading. What do you think is the problem?
A typical LAN using EtherNet has a raw bandwidth of 10Mbps uncompressed; under most circumstances, with light loading, data transfer rates will run in the 200-300KB/sec range.
A 56K connect, even with 2:1 compression (which is
VERY optimistic IMO), is going to pass data at a maximum rate of 5-10KB/sec. Couple that with the fact that dial-up modem connections using X2/KFlex/v.90 technology are sensitive to noise (even though a modem may be capable of encoding data at the maximum DTR, the quality of the connection may limit it to a rate well below that.)
Further, unless the modem at the other end is a specialized server modem, the best DTR you'll see is in the 28.8-33.6Kbps range - operating at higher speed requires a special modem at the server end, and the protocol is assymetric in any case - IOW, only one end is capable of the 56Kbps rate; the other end transmits at 33.6Kbps maximum DTR.
If your application is a 'thick' client (it executes entirely on the system that displays the data), I'd recommend deploying it so that all executables and static data reside on the client system; that way, you'll load everything at the rate of the local hard drive. that will speed up the application's load time in any case. The traffic over the dial-up link will be limited to the data referenced by the application.
Thin client deployment is another option - the dial-up user connects to another system that is local to the data and passes screens/keystrokes across the dial-up link; this is the idea behind things like Citrix, Windows Terminal Server, or PC Anywhere. It's hardware-intensive, but only the displayed information and user interaction passes over the phone line. VFP is not a very good thin client choice because of the way it handles the screen, but even so, performance will be greatly improved.
Client/server database implementation would improve things, offering a middle ground - the remote user runs the application locally, but the database operations take place at the server end, with only data results passing over the wire. This won't do anything for your loading time, however , and if typical query results are large, you'll still take quite a while to pass the data back and forth over the wire.
Sorry to be the bearer of bad news, but there's no quick and easy fix here...