METHODS AND SYSTEMS FOR INTERACTING, VIA A HYPERMEDIUM PAGE, WITH A VIRTUAL MACHINE EXECUTING IN A TERMINAL SERVICES SESSION

Information

  • Patent Application
  • 20070171921
  • Publication Number
    20070171921
  • Date Filed
    November 14, 2006
    18 years ago
  • Date Published
    July 26, 2007
    17 years ago
Abstract
A method for making a hypermedium page interactive, the hypermedium page displayed by a network browser, includes the step of selecting a hyperlink on the hypermedium page displayed on a client machine, the hyperlink identifying a desired computing resource. A hyperlink configuration file is retrieved, the hyperlink configuration file corresponding to the hyperlink and identifying a server machine. A client agent is started on the client machine. The client agent creates, via a terminal services session, a communication link to a virtual machine executing on the server identified by the hyperlink configuration file, the virtual machine executed by a hypervisor executing in the terminal services session provided by an operating system executing on the server. The client agent receives data from the virtual machine and displays, on the client machine, the received data without intervention by the network browser.
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 method for making a hypermedium page interactive, the hypermedium page displayed by a network browser, comprising the steps of: (a) selecting a hyperlink on the hypermedium page displayed on a client node, the hyperlink identifying a desired computing resource;(b) retrieving a hyperlink configuration file, the hyperlink configuration file corresponding to the hyperlink and identifying a server machine;(c) starting a client agent on the client node;(d) creating by the client agent, via a terminal services session, a communication link to a virtual machine executing on the server identified by the hyperlink configuration file, the virtual machine executed by a hypervisor executing in the terminal services session provided by an operating system executing on the server; and(e) receiving, by the client agent, data from the virtual machine and displaying on the client node the received data without intervention by the network browser.
  • 2. The method of claim 1 further comprising the step of starting execution of an identified application on the virtual machine in response to the created communication link.
  • 3. The method of claim 1, wherein step (d) is performed without intervention by the network browser.
  • 4. The method of claim 1, wherein step (c) further comprises starting the client agent by the network browser upon a successful match of information associated with the hyperlink configuration file with an identifier associated with the client agent in a registration file accessible by the network browser.
  • 5. The method of claim 1, wherein step (c) further comprises starting the client agent by the network browser upon a successful match of an entry in the hyperlink configuration file with an identifier associated with the client agent in a registration file accessible by the network browser.
  • 6. The method of claim 1 further comprising employing a presentation protocol for communication over the communication link.
  • 7. The method of claim 1 further comprising registering the client agent with the network browser.
  • 8. The method of claim 1 further comprising the step of displaying the received data from the virtual machine in a display window on the client machine.
  • 9. The method of claim 1 further comprising the step of obtaining a hypermedium page from a network server prior to step (a).
  • 10. The method of claim 1 further comprising the step of starting a server agent on the virtual machine.
  • 11. The method of claim 1 further comprising launching a virtual machine.
  • 12. A system for making a hypermedium page interactive, the hypermedium page displayed by a network browser, the system comprising: a client node executing a browser application, said browser application displaying a hypermedium page including a hyperlink identifying a desired computing resource;a network server transmitting, in response to selection of said hyperlink, a network configuration file to said client node, said network configuration file corresponding to said identified computing resource; anda client agent executing on said client node, said client agent establishing, responsive to data in said configuration file, a communications link with a server machine, the server machine executing an operating system providing a terminal services session launching a hypervisor executing the virtual machine providing the computing resource,wherein said client agent receives data for display from the virtual machine without intervention by said browser application.
  • 13. The system of claim 12 further comprising a process obtaining said hypermedium page from said network server and providing said hypermedium page to said client node.
  • 14. The system of claim 12, wherein said client agent displays data received from said virtual machine in a display window located at said client node.
  • 15. The system of claim 14, wherein the display window is located within the boundaries of the hypermedium page.
  • 16. The system of claim 14, wherein the application display window is located outside the boundaries of the hypermedium page.
  • 17. The system of claim 12, wherein said hyperlink configuration file comprises a resource identifier corresponding to said hyperlink and an identifier of the virtual machine corresponding to said hyperlink.
  • 18. The system of claim 12 wherein the client agent establishes, responsive to data associated with the configuration file, a communications link with a helper program executing on a server machine.
  • 19. The system of claim 12 wherein the client agent establishes, responsive to data in the configuation file, a communications link with a helper program executing on a server machine.
  • 20. The system of claim 19 wherein the helper program executes a virtual machine providing the desired computing resource.
Provisional Applications (1)
Number Date Country
60761674 Jan 2006 US