Proxies are one design model for supporting disconnected operations. Proxies typically intercept requests and act on them in a synchronous way. A proxy is ordinarily transparent to the user even though it may be active as part of the communication path between the application and the device. A typical use of proxies is to improve Web browser performance by batching requests, reducing protocol header size, and maintaining persistent or virtual socket sessions. Other examples include proxies that support thin client remote console operations and dynamic content adaptation.
Agents are another design for supporting disconnected operations.
An agent is an autonomous, asynchronous entity that acts on behalf of the user even when the user is disconnected. Agents take a specific request and perform many actions that are not under direct user control and are independent of the communications path. Agents can handle disconnected operations by queuing information such as mail, fax, software distributions, Web pages, or other content. Content can be efficiently packaged and selectively transmitted once a suitable connection exists. The convergence of computing, telecommunications, and consumer electronics is causing a tremendous growth in the number and variety of pervasive computing devices.