Various aspects and attendant advantages of one or more exemplary embodiments and modifications thereto will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
Exemplary embodiments are illustrated in referenced Figures of the drawings. It is intended that the embodiments and Figures disclosed herein are to be considered illustrative rather than restrictive.
This section describes the architecture for enabling VMs to be treated as Web objects. This architecture is depicted in
A client-side, Web browser plug-in that renders VM Web objects in a client's browser.
A set of server-side services that manage and control Web-hosted VMs.
As with other forms of Web content, the VMs hosted by a Web site are managed and run entirely by the Web site and not by the client. Instead, the job of the browser plug-in is to render an interactive, remote desktop view of the VM in the client's browser program when a corresponding option is selected by the user in the browser program.
To do this, the browser plug-in understands a new MIME Type, which is referred to as “application/vm,” used to represent a VM Web object, much in the same way that a Java plug-in has an associated MIME Type referred to as an “application/x-java-applet,” used for rending Java applets. A VM Web object includes a .vmcfg configuration file that specifies a number of parameters needed by the plug-in to locate, connect to, and authenticate itself to the remote VM. The end result is that the client sees an embedded remote desktop of the VM running within their browser program display.
The browser plug-in, combined with this new MIME Type, define a protocol for embedding VMs into Web pages. With the plug-in installed in a user's browser, VM Web objects look and behave exactly like any other type of Web object, e.g., like an icon in a Web page that can be selected to display an associated image, or play an associated sound file. Thus, the VM Web objects can be added to a Web page in much the same manner that an image, a Flash movie, or a .wav file can be included.
For example, in the past, a software company might have hosted a screenshot of their application “app,” for a new software application product of the company. Instead, using the present technology disclosed herein, the software company can now replace the screenshot with a VM that runs their new software application so that visitors to their Web site can demo the software application easily and without bothering with downloading, installation, or configuration.
Using the architecture disclosed herein, the company's site could create a Web object for this VM by adding an appropriately-defined .vmcfg file, i.e., “app.vmcfg,” for a VM in which their application can be run. An exemplary tag for this new VM Web object is as follows:
Upon visiting the updated page, browsers that include the plug-in can now render a window that displays a W×H pixels (i.e., width-by-height pixels in size) desktop of the VM running the company's new software application. Since the software application only runs within the VM, the company need not be concerned with releasing the underlying machine instructions for the new software application to the public, so that people can demo the product. Full functionality can be provided for the software application running in the VM and the application can be accessed just by the user selecting the associated Web object in the user's browser program display of the company's Web page.
While the protocol defined by the new MIME Type and browser plug-in provides users with a familiar and standard Web-based paradigm for interacting with VMs, all of the details of configuring, managing, and running the VMs are handled by the server's infrastructure. As with other Web service protocols, this architecture does not require that Web servers implement the backend support for hosting VMs in any particular way. For example, the hypertext transport protocol over a secure socket layer (HTTPS) enables the implementation of secure online shopping carts by preventing other parties from determining personal financial information, such as credit card numbers, that are submitted by a user connected to a Web site. However, developers of online shopping carts are free to use the protocol as they see fit to develop their own customized shopping cart software. The protocol's requirements in the present architecture are similar in nature, in that Web developers are free to create VMs that are run and managed by customized software. As long as these VMs are referenced in Web pages as Web objects that adhere to the protocol's MIME-Type specification, browsers that include the plug-in will render the VMs in those Web pages correctly.
This separation between the protocol and the actual implementation employed is key for making VMs “Webified.” One of the reasons that the Web is so powerful is precisely because content providers are free to use protocols like hypertext markup language (HTML), extended markup language (XML), or uniform resource locators (URLs) to innovate their own, customized content. The novel exemplary Web-enabled VM architecture disclosed herein adheres to this vision.
To demonstrate the power of this architecture, a prototype server infrastructure 10 that shows off one possible way of hosting VM Web content has been developed. The prototype's architecture is shown in
Regardless of the implementation employed, a Web server 32 running on a server computing device 30 is responsible for hosting a Web site and communicating with a client's browser program 14 that is executed on a client computing device 12, via HTTP, as shown in this exemplary prototype. In this prototype, Web pages hosted on Web server 32 contain links, or other types of HTML or Javascript input forms, which when clicked or selected by a user viewing the Web pages in the display of browser program 14, use HTTP POST to send data via an HTTP request to the Web server to either start or stop a given VM. Web server 32, which is employed in this exemplary prototype, has a computer graphics interface (CGI) script that parses the HTTP POST request to determine the appropriate action to take. The CGI script then sends this control information as a start/stop message 44 to a VM controller 40, which is a daemon running on one of a number (N) of backend VM servers (e.g., VMServer 1 through VMServer N). The daemon running on the VMServer relays this message through a VM monitor (VMM) 38 on the VM server, which takes the appropriate action and either launches or shuts down a VM 42 on the VM server, depending upon the nature of the start/stop message. A current exemplary implementation uses VMware Workstation™ as the VMM. One or more VMs 42 can be executed on each VMServer, and changes in the desktop of the VM as a selected software program is run therein, can be applied to update a remote desktop view 18 of the VM desktop in the display of browser program 14.
Backend servers are selected by the CGI script based on any number of load balancing policies. One current implementation uses a simple, LARD-like approach where VMs are striped across the backend VM servers. For example, VMs with similar installations might be grouped onto the same VM server.
Upon returning from the call to the VMM controller or daemon, CGI script dynamically generates a response HTML Web page to send back to the user's browser program, for display in browser program 14. If the request was to start a VM, then the response sent by the Web server includes an appropriately embedded VM Web object corresponding to the VM that was requested. The HTTP response is sent to client computing device 12, and the browser program on the client computing device renders the resulting Web page. In doing so, a browser plug-in 16 reads the VM Web object's configuration file to establish a remote desktop connection to the running VM on the VM server, and the plug-in displays remote desktop 18 for the running VM in the browser program display. An exemplary implementation of this approach uses the VNC remote desktop protocol. As indicated in
Other operations besides start and stop can also be implemented in this exemplary embodiment. For example, the embodiment currently includes suspend and clone operations. “Suspend HTTP requests” from the user cause the VM in question to suspend instead of shutting down. (An example showing how the user can selectively initiate a suspend request is included in
These various types of control operations enable content providers to enforce any number of policies for VM management. For example, a VM with Web controls that only allow for a start operation to be performed might be useful as a machine that can be shared among a number of simultaneous users. Each user that visits the Web site and clicks on the “start” link will get access to the same, shared VM desktop. This scenario is a perfect solution for providing shared, whiteboard-style applications over the Web.
On the other hand, the clone operation enables users of the Web site to produce their own, personal copies of a VM with any one or more application programs that are running therein. The Web page returned to the client as the result of a clone operation can have a unique URL and can embed a unique VM Web object that when selected, causes the browser program (using the plug-in module) to access the desktop of the VM running on the VM server. The exemplary prototype currently implements this functionality. A screenshot in
In the exemplary document open in the WORD software program user interface shown in
Another source of revenue that can be derived from providing users access to applications running in a VM on a server computing device would be fees that can be charged to the users for such access. There are many revenue models that can be applied to create a fee-based access to such application programs, as will be well known to those of ordinary skill in the art. For example, a user can be charged a predefined fee each time that an application running in a VM on a server computing device is accessed by the user from within the user's browser program. Alternatively, a user can be charged a predefined monthly or annual fee for accessing a specific Web site or VM that gives the user access to applications running within a VM or set of VMs. This fee can be based upon the number of different software applications running on one or more VMs that the user wants to access, or on some other basis that is acceptable to both the user and the party operating the Web site and the server computing device(s) on which the VM(s) are running to enable the software application(s) to be accessed. Control of users accessing software applications running on VMs can be exercised, for example, by employing assigned user names and passwords for each user who has paid or agreed to pay the fee for such access. Also, the fee may be paid by another party to enable the user to access the software application(s) running on a VM. It is also contemplated that the fee can be paid by a company who is advertising on either the Web page or on the VM, as a charge for exposing the user to this advertising of the company. These types of details are not essential to appreciating how revenue can thus be generated.
If the user needs to close the browser window, but has not finished working on a project that was running in a VM accessed through the browser program, the user can, for example, select a “suspend” option 70, which will enable the user to return to work on the project at a later time, effectively maintaining the state of the VM and of the application such as the WORD program that is running in the VM. When the user next selects the Web object for this VM within the display of the user's browser, the same document will be opened in the WORD program running on the VM, so that the user can continue working on it.
Cloning enables clients to bookmark their personal VM's URL, send it to friends, or share it with others, for example, using a web site such as http://del.icio.us/. All of the existing, standard Web authentication procedures and secure connection protocols can be used to enable user accounts on a Web site to maintain each registered user's set of personal VMs. This type of scenario could be easily used as a framework for building a software rental Web site, with VMs and software application specifically tailored to meet the needs of each user of the site.
Of course, these start, stop, suspend, and clone abstractions are by no means necessary. An exemplary backend infrastructure was developed to support these abstractions because it was found convenient and reusable to do so. There is nothing in the present architecture or protocol that precludes a Web developer from building a Web page that just displays a single, shared VM with no user HTML control elements whatsoever, and that approach is certainly contemplated as a very useful alternative.
The number of applications and services made possible by this architecture is limited only by the imagination of Web developers. In the list that follows, some ideas that have been developed are provided, but the list is simply exemplary and is not intended to be limiting in any fashion:
An input/output (I/O) interface 120 that includes a plurality of different types of ports, such as serial, parallel, universal serial bus, PS/2, and Firewire ports, is coupled to data bus 114 and is in turn connected to one or more input devices 124, such as a keyboard, mouse, or other pointing device, enabling a user to interact with the computing system and to provide input and control the operation of the computing system. A display interface 122 couples a display device 126 to the data bus, enabling a browser program window and other graphic and text information be displayed for viewing by a user, if computing system 100 comprises a client computing device. The computing system is coupled to a network and/or to the Internet via a network interface 128, which couples to data bus 114.
As illustrated in a flow chart 180 in
A decision step 192 determines if a specific Web VM instance exists. Typically, the user will have selected a Web object embedded in the inventory of the user's VMs displayed as the specific Web VM instance. A Web VM instance refers to VM (and possibly one or more associated application software programs running in the VM) that has previously been run by the user. If the selected Web VM instance exists, a decision step 194 determines if the user has selectively started or stopped the Web VM instance from within the user's browser program. If the user has stopped the Web VM instance, a step 196 either shuts down the Web VM (and/or associated application software) or suspends the Web VM (and/or associated software), depending upon the actual control choice made by the user. The logic then returns to step 190.
If a Web VM instance selected by the user does not exist in decision step 192, because it is not yet in the user's Web VM inventory, a step 198 creates the Web VM instance from a Web VM definition associated with the Web object selected by the user in the Web VM inventory of the user. A Web VM definition provides appropriate parameters for any associated software application(s) to be run in the VM. For example, the software application may have user specific parameters that can automatically be included in the Web VM definition based upon the identity of the user and information provided by the user when creating an account with the website. A VM definition applies to a prototypical (unbooted) representation of a VM (and any associated software). A step 200 adds the new Web VM instance, which is not booted and running, to the user's Web VM inventory, and the logic continues with step 190.
If a user has started a Web VM in decision step 194, a step 202 either starts or resumes (if suspended) the Web VM selected by the user. A step 204 then displays the Web VM as a Web page in the browser program of the user, a step 206 indicating that the plug-in is employed to render the Web VM in the browser program display. A decision step 208 determines if the user has chosen to return to the display of the user's Web VM inventory, and if not, returns to step 202. If so, the logic again returns to step 190. This logic path can be terminated if the user closes the browser program on the client computing device.
If the results at decision step 226 are affirmative, a step 228 displays the user's account in a Web page on the user's browser program. Otherwise, if the credentials are invalid, a step 230 redirects the server to a Web page that indicates the credentials are bad or have some other defect. A step 232 then closes the secure channel, returning the user's browser program to step 222, perhaps to retry entry of valid credentials by the user.
Most of the steps illustrated in
A step 256 then starts the new Web VM instance chosen by the user, and the corresponding Web VM desktop (and any associated software application running in it that was part of the user's selection) are displayed in the Web page in the user's browser program display in a step 258. A step 260 employs the plug-in module to render the Web VM in the user's browser program.
If a cookie was found in decision step 248, a step 262 provides for transmitting the cookie to the server from the user's browser program. In a step 264, the server identifies the Web VM instance that is associated with this cookie, and the logic then proceeds with step 258, as noted above.
Emphasis has been placed on the ability of a user to access and use software applications that have been pre-installed and configured on a VM, with the browser program running on the user's client computing device, without requiring any modification to the code for the software applications. However, it should be understood that almost any functionality that can be provided by a VM can be accessed and used in this manner. The concept disclosed herein is thus not limited only to access and use of software applications.
Although the concepts disclosed herein have been described in connection with the preferred form of practicing them and modifications thereto, those of ordinary skill in the art will understand that many other modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of these concepts in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.
This application is based on a prior copending provisional application Ser. No. 60/746,310, filed on May 3, 2006, the benefit of the filing date of which is hereby claimed under 35 U.S.C. § 119(e).
This invention was funded at least in part with a grant (No. CCR-0326546) from the National Science Foundation (NSF), and the U.S. government may have certain rights in this invention.
| Number | Date | Country | |
|---|---|---|---|
| 60746310 | May 2006 | US |