METHODS AND SYSTEMS FOR INCORPORATING REMOTE WINDOWS FROM DISPARATE REMOTE DESKTOP ENVIRONMENTS INTO A LOCAL DESKTOP ENVIRONMENT

Information

  • Patent Application
  • 20070174410
  • Publication Number
    20070174410
  • Date Filed
    November 28, 2006
    17 years ago
  • Date Published
    July 26, 2007
    17 years ago
Abstract
A system for incorporating remote windows from remote desktop environments into a local desktop environment comprises a first virtual channel coupled to a remote desktop environment provided by a virtual machine, a second virtual channel coupled to the remote desktop environment, and a local agent coupled to the remote desktop environment via the first and second virtual channels. The first virtual channel conveys graphical data associated with a remote window provided by the remote desktop environment. The second virtual channel conveys window attribute data associated with the remote window provided by the remote desktop environments. The local agent directs the formation of a local window in the local desktop environment corresponding to the remote window provided by the remote desktop environment, the first local window displaying the graphical data conveyed by the first virtual channel in accordance with the window attribute data conveyed by the second virtual channel.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:



FIG. 1 is a block diagram of one embodiment of an environment in which a client machine accesses a computing resource provided by a remote machine;



FIGS. 1A and 1B are block diagrams depicting embodiments of typical computers useful in embodiments with remote machines or client machines;



FIG. 2A is a block diagram of a system for providing access to a resource;



FIG. 2B is a block diagram of one embodiment of a system in which a client machine can initiate execution of an application program for determining the resource neighborhood of that client machine;



FIG. 2C is a block diagram of an embodiment in which a client machine uses a web browser application to determine its resource neighborhood;



FIGS. 3A, 3B, and 3C are block diagrams of embodiments of systems of communication among a client machine and multiple remote machines;



FIG. 3D is a block diagram of one embodiment of a system in which a client machine can access a resource from a resource neighborhood web page displayed at that client machine;



FIG. 3E is a block diagram of one embodiment of a system in which a remote machine acts as an intermediary for a machine farm;



FIG. 4 is a block diagram of one embodiment of a resource neighborhood application in which a client machine is in communication with one of the remote machines;



FIG. 5 is a block diagram of a computing embodiment in which a client machine is in communication with a remote machine having an installed resource neighborhood application program of the invention;



FIG. 6A is a screen shot of an embodiment of a display of a client machine after a resource neighborhood application program is executed;



FIG. 6B is a screen shot of another embodiment of a display screen of a client machine after the resource neighborhood application program is executed;



FIG. 7A is a block diagram of an embodiment of a network providing policy-based access to application programs for a machine;



FIG. 7B is a block diagram depicting a more detailed embodiment of a policy engine;



FIG. 8 is a flowchart depicting one embodiment of a process for providing access to a resource;



FIG. 9 is a flow diagram depicting one embodiment of a process for electing a management node;



FIG. 10 is a flow diagram depicting one embodiment of a process to update information collected by the management node;



FIG. 11 is a block diagram depicting an embodiment of a machine farm including first and second network management processes;



FIG. 12 is a block diagram depicting one embodiment of a virtual machine management component;



FIG. 13 is a block diagram depicting one embodiment of a session management component;



FIG. 14 is a block diagram depicting one embodiment of a system in which a drive associated with the client machine 10 is made available to a computing environment;



FIG. 15A is a block diagram depicting one embodiment of a client machine supporting multiple client machine display devices;



FIG. 15B is a block diagram depicting one embodiment of a system for supporting multiple client machine display devices FIG. 15C is a block diagram depicting one embodiment of a session login mechanism providing support for multiple client machine display devices;



FIG. 16A is a flow diagram depicting one embodiment of the steps to be taken to provide a desired display layout to a client machine having multiple display devices;



FIG. 16B is a flow diagram depicting one embodiment of a process to modify a window message;



FIG. 16C is a flow diagram depicting one embodiment of the steps taken to associate a display layout with a client machine;



FIG. 16D is a flow diagram depicting one embodiment of the steps taken to change a desired display layout for a client machine;



FIG. 17 is a block diagram depicting one embodiment of a system in which a remote machine authenticates the user of a client machine;



FIG. 18 is a flow diagram depicting one embodiment of the steps taken to access a plurality of files comprising an application program;



FIG. 19 is a block diagram depicting one embodiment of a client machine 10 including an application streaming client, a streaming service and an isolation environment;



FIG. 20 is a flow diagram depicting one embodiment of steps taken by a client machine to execute an application;



FIG. 21 is a block diagram depicts one embodiment of a plurality of application files;



FIG. 22A is a flow diagram depicting one embodiment of the steps taken to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;



FIG. 22B is a flow diagram depicting one embodiment of the steps taken by a remote machine to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;



FIG. 23 is a flow diagram depicting another embodiment of the steps taken to enable transparent distributed program execution on a client machine through the selection of graphical indicia representative of a data file located on a remote machine;



FIG. 24 is a flow diagram depicting one embodiment of the steps taken to negotiate the protocol for a connection between a client machine and a remote machine;



FIG. 25 is a block diagram depicting an embodiment of a remote machine and a client machine establishing a protocol stack for communication;



FIG. 26 is a block diagram depicting one embodiment of a client machine architecture;



FIG. 27 is a block diagram depicting one embodiment of communication between a client machine and a machine farm;



FIG. 28 is a block diagram depicting one embodiment of a client machine architecture;



FIG. 29 is a flow diagram depicting one embodiment of the steps taken to display application output in a web page;



FIG. 30 is a flow diagram depicting one embodiment of the steps taken link to a virtual machine identified by a hyperlink configuration file;



FIG. 31 is a block diagram depicting an embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;



FIG. 32 is a block diagram depicting another embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;



FIG. 33 is a block diagram depicting one embodiment of an architecture for displaying application output in a web page;



FIG. 34 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 35 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 36 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 37 is a block diagram depicting one embodiment of a client machine receiving window attribute data via a virtual channel;



FIG. 38 is a block diagram depicting a client machine connected to more than one remote machine;



FIG. 39 is a flow diagram depicting one embodiment of the steps taken to detect and transmit server-initiated display changes;



FIG. 40 is a flow diagram depicting one embodiment of the steps taken to detect and transmit client-initiated display changes;



FIG. 41 is a flow diagram depicting one embodiment for enabling transmission of seamless windows between a client machine and a remote machine;



FIG. 42 is a block diagram depicting one embodiment of an agent;



FIG. 43 is a block diagram depicting one embodiment of a system for enabling seamless windowing mode between a client machine and remote computing environments;



FIG. 44 is a flow diagram depicting one embodiment of the steps taken in a method of receiving window attribute data and graphical data associated with remote windows from virtualized operating systems and from native operating systems;



FIG. 45 is a block diagram of a system for providing a client with a reliable connection to a host service according to an embodiment of the invention;



FIG. 46 is a block diagram of a system for providing a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 47 depicts communications occurring over a network according to an embodiment of the invention;



FIG. 48 depicts communications occurring over a network according to another embodiment of the invention;



FIG. 49 depicts a process for encapsulating a plurality of secondary protocols within a first protocol for communication over a network according to an embodiment of the invention;



FIG. 50 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with the invention;



FIG. 51 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 5 to maintain authentication credentials during a first communication session in accordance with the invention;



FIG. 52 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 50 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53A in accordance with the invention;



FIG. 53 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with another embodiment of the invention;



FIG. 54 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a first communication session in accordance with the invention;



FIG. 55 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53 in accordance with the invention;



FIG. 56 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of a second communication channel of the first communication session of FIG. 53 in accordance with the invention;



FIG. 57 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to an embodiment of the invention;



FIG. 58 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 59 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 60 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 61 is a block diagram of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service according to an embodiment of the invention;



FIG. 62 is a block diagram of an embodiment of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service;



FIG. 63 is a block diagram of an embodiment of FIG. 61 further including components for initially connecting the client to a host service;



FIG. 64 is a block diagram of the system of FIG. 62 further including components for initially connecting the client to a host service and to maintain authentication credential according to an embodiment of the invention;



FIG. 65 is a flow diagram of a method for network communications according to an embodiment of the invention;



FIG. 66 is a flow diagram of a method for reconnecting the client to the host services;



FIGS. 67-69 are flow diagrams of a method for connecting a client to a plurality of host services according to an embodiment of the invention;



FIG. 70 is a flow diagram of a method for providing a client with a reliable connection to host services and for reconnecting the client to the host services according to an embodiment of the invention;



FIGS. 71-72 are flow diagrams of a method for reconnecting a client to host services according to an embodiment of the invention;



FIG. 73 is a conceptual block diagram of an embodiment of client software and server software;



FIG. 74 is a flow chart of an embodiment of a method for monitoring network performance;



FIG. 75 is a flow chart of an embodiment of a method of operation of the server software;



FIG. 76 is a flow chart of an embodiment of a method of generating sub-metrics by the client;



FIG. 77 is a flow chart of an embodiment of a method of generating sub-metrics by the client;



FIG. 78 is a flow chart of an embodiment of a method of generating sub-metrics by the server;



FIG. 79 is a schematic diagram depicting a networked client-server computing system;



FIG. 80 is a flow chart depicting a method for connecting a client machine to disconnected application sessions;



FIG. 81 is a flow chart depicting on embodiment a method for connecting the client machine to active application sessions;



FIG. 82 is a schematic diagram depicting one embodiment of a client machine in communication with several remote machines;



FIG. 83 is a flow diagram depicting one embodiment of steps taken in a method to connect a user of a client machine to a computing environment;



FIG. 84 is a flow diagram depicting an embodiment of steps taken in a method to connect a user of a client machine to a computing environment in response to selection of a graphical user interface element;



FIG. 85 is a block diagram depicting one embodiment of a remote machine able to connect the client machine to an application session;



FIG. 86 is a block diagram of an embodiment of a system for connecting a client machine to an application session responsive to application of a policy;



FIG. 87 is a flow diagram depicting the steps taken in one method to connect a client machine to an application session responsive to application of a policy;



FIG. 88 is a block diagram depicting one embodiment of a system for providing, by a virtual machine, access to a computing environment;



FIG. 89A is a block diagram depicting one embodiment of a storage device and a computing device;



FIG. 89B is a flow diagram depicting one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a storage device;



FIG. 90A is a block diagram depicting one embodiment of a mobile computing device;



FIG. 90B is a flow diagram depicting one embodiment of the steps taken in a method for providing a portable computing environment by a mobile computing device;



FIG. 91A is a block diagram of one embodiment of a mobile computing device and a computing device;



FIG. 91B is a flow diagram depicting depicts one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a mobile computing device;



FIG. 92A is a block diagram depicting one embodiment of a mobile computing device and a computing device comprising a computing environment selector;



FIG. 92B is a flow diagram depicting an embodiment of the steps taken in a method for establishing a computing environment on a computing device via a mobile computing device;



FIG. 93A is a block diagram depicting one embodiment of a mobile computing device connecting to a docking station;



FIG. 93B is a block diagram depicting one embodiment of a docking station connecting a mobile computing device and a computing device;



FIG. 93C is a block diagram depicting one embodiment of a mobile computing device and computing device having a docking mechanism;



FIG. 93D is a flow diagram depicting one embodiment of the steps taken in a method of providing to a mobile computing device one or more hardware resources;



FIG. 94A is a block diagram depicting one embodiment of a mobile computing device having a plurality of processors;



FIG. 94B is a flow diagram depicting one embodiment of the steps taken in a method for switching, by a mobile computing device, between use of multiple processors;



FIG. 95 is a block diagram depicting one embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine;



FIG. 96 is a block diagram depicting an embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine; and



FIG. 97 is a block diagram depicting one embodiment of a system for identifying, by a coordinator machine, a worker machine providing, via a virtual machine, access to a computing environment.


Claims
  • 1. A system for incorporating remote windows from disparate remote desktop environments into a local desktop environment, the system comprising: a first virtual channel coupled to a first remote desktop environment provided by a native operating system, the first virtual channel conveying graphical data associated with a remote window provided by the first remote desktop environment;a second virtual channel coupled to the first remote desktop environment and conveying window attribute data associated with the remote window provided by the first remote desktop environment;a third virtual channel coupled to a second remote desktop environment provided by a virtual machine, the third virtual channel conveying graphical data associated with a remote window provided by the second remote desktop environment;a fourth virtual channel coupled to the second remote desktop environment and conveying window attribute data associated with the remote window provided by the second remote desktop environment; anda local agent coupled to the remote desktop environments via the first, second, third and fourth virtual channels, the local agent directing the formation of a first local window in the local desktop environment corresponding to the remote window provided by the first remote desktop environment and the formation of a second local window in the local desktop environment corresponding to the remote window provided by the second remote desktop environment, the first local window displaying the graphical data conveyed by the first virtual channel in accordance with the window attribute data conveyed by the second virtual channel and the second local window displaying the graphical data conveyed by the third virtual channel in accordance with the window attribute data conveyed by the fourth virtual channel.
  • 2. The system of claim 1 further comprising a combined windows list being formed and maintained by the local agent, the combined windows list representing a modifiable z-order of a window in the local desktop environment.
  • 3. The system of claim 1 wherein the window attribute data associated with the remote windows and conveyed by the second and fourth virtual channels includes the size and z-order of the remote windows.
  • 4. The system of claim 1 further comprising a local operating system forming the local desktop environment, the local agent periodically polling the local operating system to detect an attribute change in one of the first local window and the second local window, wherein the local agent transmits a message to one of the first remote desktop environment and the second remote desktop environment indicative of the attribute change.
  • 5. The system of claim 1 further comprising a local operating system forming the local desktop environment, the local agent detecting an attribute change in one of the first local window and the second local window, wherein the local agent transmits a message to one of the first remote desktop environment and the second remote desktop environment indicative of the attribute change.
  • 6. The system of claim 1 wherein the corresponding windows exhibit window attribute data substantially similar relative to the local desktop environment as the window attribute data of the remote windows relative to their respective remote desktop environment.
  • 7. The system of claim 1 further comprising a plurality of communication links coupling the local desktop environment with a plurality of remote desktop environments, the communication links including first and second virtual channels conveying graphical and window attribute data associated with remote windows from the plurality of remote desktop environments to the local agent, wherein the local agent forms corresponding windows in the local desktop environment corresponding to each of the plurality of remote windows.
  • 8. A method of incorporating remote windows from disparate remote desktop environments into a local desktop environment, the method comprising the steps of: (a) receiving graphical data associated with a remote window provided by a first remote desktop environment provided by a native operating system, the graphical data received via a first virtual channel coupled to the first remote desktop environment;(b) receiving window attribute data associated with the remote window provided by the first remote desktop environment via a second virtual channel coupled to the first remote desktop environment;(c) receiving graphical data associated with a remote window provided by a second remote desktop environment provided by a virtual machine, the graphical data received via a third virtual channel coupled to the second remote desktop environment;(d) receiving window attribute data associated with the second remote window provided by the second remote desktop environment via a fourth virtual channel coupled to the second remote desktop environment;(e) forming a first window in the local desktop environment displaying the graphical data received from the first virtual channel in accordance with the window attribute data received from the second virtual channel; and(f) forming a second window in the local desktop environment displaying the graphical data received from the third virtual channel in accordance with the window attribute data received from the fourth virtual channel.
  • 9. The method of claim 8 further comprising the step of forming a combined windows list storing at least some of the window attribute data.
  • 10. The method of claim 8 further comprising the steps of: polling a local operating system associated with the local desktop environment to detect an attribute change in one of the first local window and the second local window and transmitting a message to one of the first remote desktop environment and the second remote desktop environment indicative of the detected attribute change.
  • 11. The method of claim 8, wherein the local windows exhibit window attribute data substantially similar relative to the local desktop environment as the window attribute data of the remote windows relative to the remote desktop environments.
  • 12. A system for incorporating remote windows from remote desktop environments into a local desktop environment, the system comprising: a first virtual channel coupled to a remote desktop environment provided by a virtual machine, the first virtual channel conveying graphical data associated with a remote window provided by the remote desktop environment;a second virtual channel coupled to the remote desktop environment and conveying window attribute data associated with the remote window provided by the remote desktop environment; anda local agent coupled to the remote desktop environment via the first and second virtual channels, the local agent directing the formation of a local window in the local desktop environment corresponding to the remote window provided by the remote desktop environment, the local window displaying the graphical data conveyed by the first virtual channel in accordance with the window attribute data conveyed by the second virtual channel.
  • 13. The system of claim 12 further comprising a combined windows list being formed and maintained by the local agent, the combined windows list representing a modifiable z-order of the corresponding window in the local desktop environment.
  • 14. The system of claim 12, wherein the window attribute data associated with the remote windows and conveyed by the second virtual channel includes the size and z-order of the remote window.
  • 15. The system of claim 12 further comprising a local operating system forming the local desktop environment, the local agent periodically polling the local operating system to detect an attribute change in the local window, wherein the local agent transmits a message to the remote desktop environment indicative of the attribute change.
  • 16. The system of claim 12, wherein the corresponding window exhibits window attribute data substantially similar relative to the local desktop environment as the window attribute data of the remote window relative to the remote desktop environment.
  • 17. The system of claim 12 further comprising a plurality of communication links coupling the local desktop environment with a plurality of remote desktop environments, the communication links including first and second virtual channels conveying graphical and window attribute data associated with remote windows from the plurality of remote desktop environments to the local agent, wherein the local agent forms corresponding windows in the local desktop environment corresponding to each of the plurality of remote windows.
  • 18. The system of claim 12 further comprising: a third virtual channel coupled to a second remote desktop environment provided by a second virtual machine, the third virtual channel conveying graphical data associated with a second remote window provided by the second remote desktop environment; anda fourth virtual channel coupled to the second remote desktop environment and conveying window attribute data associated with the second remote window provided by the second remote desktop environment.
  • 19. The system of claim 18, wherein the local agent, coupled to the remote desktop environments via the first, second, third and fourth virtual channels, directs the formation of a first local window in the local desktop environment corresponding to the first remote window provided by the first remote desktop environment and the formation of a second local window in the local desktop environment corresponding to the second remote window provided by the second remote desktop environment, the first local window displaying the graphical data conveyed by the first virtual channel in accordance with the window attribute data conveyed by the second virtual channel and the second local window displaying the graphical data conveyed by the third virtual channel in accordance with the window attribute data conveyed by the fourth virtual channel.
  • 20. A method of incorporating remote windows from remote desktop environments into a local desktop environment, the method comprising the steps of: (a) receiving graphical data associated with a remote window provided by a remote desktop environment provided by a virtual machine, the graphical data received via a first virtual channel coupled to the remote desktop environment;(b) receiving window attribute data associated with the remote window provided by the remote desktop environment via a second virtual channel coupled to the remote desktop environment; and(c) forming a first window in the local desktop environment displaying the graphical data received from the first virtual channel in accordance with the window attribute data received from the second virtual channel.
  • 21. The method of claim 20 further comprising the step of forming a combined windows list storing at least some of the window attribute data.
  • 22. The method of claim 20 further comprising the steps of: polling a local operating system associated with the local desktop environment to detect an attribute change in the local window and transmitting a message to the remote desktop environment indicative of the detected attribute change.
  • 23. The method of claim 20, wherein the local window exhibits window attribute data substantially similar relative to the local desktop environment as the window attribute data of the remote window relative to the remote desktop environment.
  • 24. The method of claim 20 further comprising the steps of: receiving graphical data associated with a second remote window provided by a second remote desktop environment provided by a second virtual machine, the graphical data received via a third virtual channel coupled to the second remote desktop environment; andreceiving window attribute data associated with the second remote window provided by the second remote desktop environment via a fourth virtual channel coupled to the second remote desktop environment.
  • 25. The method of claim 24, wherein step (c) further comprises forming a second local window in the local desktop environment displaying the graphical data received form the third virtual channel in accordance with the window attribute data received from the fourth virtual channel.
Provisional Applications (1)
Number Date Country
60761674 Jan 2006 US