1. Technical Field
The present invention relates generally to the field of remote desktop computing, and more particularly to a method of improving remote desktop performance and reducing network bandwidth requirements by transporting to a local computer globally unique identifiers (GUIDs) assigned to resource files rendered on a remote computer, rather than the resource files themselves.
2. Description of the Related Art
Remote desktop applications have become very useful. A remote desktop application enables a remote computer to be operated from a local computer. The remote desktop application transports the user interface desktop over a network from the remote computer to the local computer. The remote computer is typically an individual's primary computer. Using a remote desktop application, the individual can log onto the remote computer from a local computer and work from the local computer. Remote desktop applications are also useful to system administrators and help desk technicians, who can take control of a remote computer from a local computer to diagnose or fix problems.
As personal computing in general and remote desktop computing in particular have improved, large resource files, such as audio files, image files and bitmaps, and video or animation files, are commonly rendered on the desktop of the remote computer's desktop. Some resource files, such as standard audio files, come with the operating system and are thus common to all computers with the same operating system. However, most resource files are added as new applications are installed. Currently, such resource files must be transported to the local computer for rendering. The transport of resource files slows the performance to the desktop on the local computer and takes up network bandwidth.
The present invention provides a method of improving remote desktop performance. The method tags each resource file in local storage on a remote computer with a globally unique identifier (GUID). The method may also tag each special rendering software application on the remote computer with a GUID. When the local computer renders a first resource file tagged with a first GUID, the local computer sends the first GUID to a local computer. The local computer determines if it has the first resource file stored in local storage. If the local computer has the first resource file stored in said local storage, the local computer renders the stored first resource. If the local computer does not have the first resource file stored in local storage, the local computer requests the first resource from the remote computer.
In some embodiments of the present invention, the remote computer may maintain a record of GUID-tagged resource files stored in local storage of the local computer. The remote computer sends the GUID for a GUID-tagged resource to the local computer if the record shows the local computer to have the GUID-tagged resource file in local storage. The remote computer sends sends GUID-tagged resource file to the local computer if the record shows the local computer not to have the GUID-tagged resource file in local storage.
The remote computer may perform a special rendering of a GUID-tagged resource file. An example of special rendering is rendering a color image in black-and-white. Special rendering may require special software on the rendering computer. The remote computer sends instructions to the local computer to perform the special rendering on the GUID-tagged resource file. The local computer performs the special rendering if the local computer has the special software. The local computer requests a specially rendered version of the GUID-tagged resource file if the local computer does not have the special software. Alternatively, the local computer may request the special software from the remote computer.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further purposes and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, where:
Referring now to the drawings, and first to
System 100 includes a local computer 105 coupled to network 103. As in the case of remote computer 101, local computer 105 may be any type of computer, such as a personal computer, a notebook computer, or the like. Local computer 105 may have installed thereon in a suitable operating system, which may be the same as or different from the operating system of remote computer 101. Local computer 105 is the computer that a user of system 101 operates. User of local computer 105 may be the owner or registered user of remote computer 101. The user of local computer 105 may also be a system administrator or a help desk technician.
Remote computer 101 has installed thereon a remote desktop application 107. Similarly, local computer 105 has installed thereon a remote desktop application 109. Typically, remote desktop application 107 is a server application while remote desktop application 109 is a client application. As is known to those skilled in the art, remote desktop applications, such as applications 107 and 109, enable local computer 105 to emulate the desktop of remote computer 101. Thus, the user of local computer 105 is able to view and interact with the desktop of remote computer 101 as if the user were present and operating remote computer 101. Examples of remote desktop applications include Windows® Remote Desktop Application and RealVNC™, as well as other well-known applications.
Remote computer 101 has associated therewith a database 111. Database 111 can be a database application such as IBM DB2, MySQL, etc., or a simple text file held in memory or a direct access storage device associated with remote computer 101, or a network storage, or any other data repository. Database 111 contains the resource files used by remote computer 101. Resource files are typically large files such as audio files, bitmaps, video clips, and the like, that are rendered on the desktop a remote computer 101. Database 111 may also contain special software applications used by the remote computer to perform special rendering of resource files. An example of special rendering is rendering a color image in black and white or grayscale.
According to the present invention, each resource file and special rendering software application in database 111 is tagged with a Globally Unique Identifier (GUID). As is known to those skilled in the art, a GUID is a special type of identifier that is used to provide a reference number that is unique in the context for which it is used. Several well-known algorithms are commonly available for generating GUIDs. While each generated GUID is not guaranteed to be unique, the total number of unique GUIDs (2122 or 5.3×1036) is so large that the probability of the same number being generated twice in any particular context is very small. Thus, according to the present invention, each resource file and special rendering application in database 111 is uniquely identified by a GUID.
Local computer 105 has associated therewith a database 113. As in the case of database 111, database 113 can be a database application such as IBM DB2, MySQL, etc., or a simple text file held in memory or a direct access storage device associated with remote computer 105, or network storage, or any other data repository. As will be explained in detail hereinafter, database 113 contains some or all of the resource files and special rendering applications used by remote computer 101. Each resource file and special rendering application stored in database 113 is tagged with the same GUID as the corresponding resource file stored in database 111.
In an alternative embodiment, the remote desktop application can come with preassembled databases for various operating systems, wherein each preassembled database comes with the resources for a specific operating system and their corresponding GUIDs. When a connection is made between the local computer and the remote computer, the local computer tells the remote computer which operating system it uses. Having a preassembled database will improve performance on the first connection between the local and remote computers. Also, during installation of the remote desktop application, the user can choose which operating system database or database to install.
If, as determined at decision block 303, the local computer does have the resource file rendered at block 301, the remote computer determines, at decision block 309, if special rendering was used to render the resource file. An example of special rendering is rendering a color image in black and white. If special rendering was used, the remote computer sends the GUID of the resource to the local computer with a special rendering command, at block 311. The remote computer waits to see if a special version request is received. The local computer can execute the special rendering command only if it has a special software application needed for the special rendering. If the local computer cannot execute the special rendering command, it must request a rendered special version or the special rendering application. If, as determined at decision block 313, the remote computer receives a special version request, the remote computer sends a special version of a resource file with its GUID to the local computer, as indicated at block 315. If as determined at decision block 316, the remote computer receives a special software request, the remote computer sends the special rendering software application with its GUID to the local computer, as indicated at block 318.
If, as determined at decision block 309, special rendering is not required, the remote computer sends the GUID of the resource file to the local computer at block 319. Occasionally, in the embodiment in which the remote computer maintains a record of GUI-tagged resource files stored at the local computer, there may be a mismatch. For example, the local computer may have deleted certain GUID-tagged resource files from its database. Accordingly, the remote computer may wait to see it receives a resource request from the local computer. Also, maintenance by the local computer of a record of GUID-tagged files stored with the local computer is optional. In some embodiments, the remote computer skips decision block 303 and sends a resource GUID to the local computer every time the remote computer renders a resource file. If, as determined at decision block 321, the remote computer receives a resource request, the remote computer sends the GUID-tagged resource file to the local computer, at block 305.
From the foregoing, it will be apparent to those skilled in the art that systems and methods according to the present invention are well adapted to overcome the shortcomings of the prior art. While the present invention has been described with reference to presently preferred embodiments, those skilled in the art, given the benefit of the foregoing description, will recognize alternative embodiments. Accordingly, the foregoing description is intended for purposes of illustration and not of limitation.