Abstract:
A system and method for presenting a representation of a remotely located storage resource includes: using a processor device for: receiving a first request from a user, said first request including an identification of the storage resource; authenticating the user request; virtualizing the storage resource by creating a node for presentation to the user, wherein said node represents the storage resource; presenting the node to the user; receiving a second request from the user for data stored in the storage resource represented by the node; retrieving the requested data from the storage resource; and presenting the requested data to the user on the node.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a non-provisional of, and claims the benefit of, commonly-owned and co-pending U.S. Provisional Patent Application No. 61/160,965, filed on Mar. 17, 2009. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The invention disclosed broadly relates to the field of information processing systems, and more particularly relates to the field of cloud computing. 
       BACKGROUND OF THE INVENTION 
       [0003]    Many web applications/services have been developed since the inception of the Internet, and more and more are being developed. However, there are some problems that prevent these applications and services from being adopted to work cohesively together. Some online storage services can be difficult to use. Web browser are generally fairly easy to use but are limited in providing web storage. Web Applications are isolated because they are used in a proprietary web browser. There is no easy way to allow information to flow from one service provider to another. 
         [0004]    Using a real-world example, assume website  1  is Amazon S3 (Amazon Simple Storage Service) by Amazon Web Services LLC. A user has a document in website  1 . Now assume that website  2  is ZOHO (by ZOHO Corporation) and contains a web application such as ZOHO Writer. The problem is how to make ZOHO Writer modify the document served by Amazon S3 when by nature, there is no connection between the two providers. Doing this manually would require the following steps: 
         [0005]    1. Download the file from Amazon S3 to your local desktop. 2. Manually upload the file to ZOHO Writer. 3. Use the ZOHO Writer web application to modify the file. 4. Download the modified file from ZOHO Writer. 5. Upload the modified file back up to Amazon S3. 
         [0006]    People today are “plugged in” with so many devices (laptop, desktop at home, desktop at work, cell phone, personal digital assistant). These devices are often not within the same local area network (LAN) and use their own proprietary interfaces, making it difficult to combine and organize the multiple documents from the various devices. 
         [0007]    There exists a need for a system and method to address the above-stated shortcomings of the known art. 
       SUMMARY OF THE INVENTION 
       [0008]    Briefly, according to an embodiment of the invention a computer-implemented method for virtualization of a remotely located storage resource includes steps or acts of: receiving a first request from a user, said request including an identification of the storage resource; authenticating the user request; virtualizing the storage resource by creating a node for presentation to the user, wherein said node represents the storage resource; presenting the node to the user; receiving a second request from the user for data stored in the storage resource represented by the node; retrieving the requested data from the storage resource; and presenting the requested data to the user on the node. 
         [0009]    According to another embodiment of the present invention, a computer-implemented method for application virtualization includes steps or acts of: receiving a command from a user to open a file on a first website using an application from a second website that is different from the first website, said command including a location of the first website and a location of the second website; creating a global namespace for the user; and defining a generic application interface for the application, said interface including the following application settings: the location of the second website, a type of the application, and supported commands for the application. The method continues by virtualizing the application settings as a generic application object represented as an application node in the global namespace; retrieving the generic application object using a full path of the application in the global namespace; checking a configuration of the application by verifying the application settings; determining whether the application supports accessing the first website as defined by its uniform resource locator; using the uniform resource locator of the first website, invoking the web application using said uniform resource locator as one parameter as instructed by the application setting, wherein invoking the web application causes said application to execute using the file as input; and transmitting results of the execution of the file to the user. 
         [0010]    According to another embodiment of the present invention, a system for virtualizing web applications and remotely located storage resources includes: a processor device; a memory with an operating system, an internet operating system, and at least one plug-in for implementing a generic interface between the user and the virtualized web applications; a peer to peer high speed channel to all devices in the internet operating system; and a presentation medium for facilitating a user interaction between the virtualized web applications and the virtualized storage resources. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    To describe the foregoing and other exemplary purposes, aspects, and advantages, we use the following detailed description of an exemplary embodiment of the invention with reference to the drawings, in which: 
           [0012]      FIG. 1  shows a screenshot of the start page, according to an embodiment of the present invention; 
           [0013]      FIG. 2  shows a screenshot of the drive mapping page, according to an embodiment of the present invention; 
           [0014]      FIG. 3  shows a screenshot of the mounting of a service provider into storage directory dialog, according to an embodiment of the present invention; 
           [0015]      FIG. 4  shows a screenshot of the virtual drive, according to an embodiment of the present invention; 
           [0016]      FIG. 5  shows a screenshot of the mounting and selection page for alternate online storage, according to an embodiment of the present invention; 
           [0017]      FIG. 6  shows a screenshot of the virtual folder for the alternate online storage, according to an embodiment of the present invention; 
           [0018]      FIG. 7  shows a screenshot of an online storage selection page, according to an embodiment of the present invention; 
           [0019]      FIG. 8  shows a screenshot of the user-generated web albums shown as folders, according to an embodiment of the present invention; 
           [0020]      FIG. 9  shows a screenshot of the online photos appearing as image files, according to an embodiment of the present invention; 
           [0021]      FIG. 10  shows a screenshot of the Virtual Directory Manager mounting dialog, according to an embodiment of the present invention; 
           [0022]      FIG. 11  shows a screenshot of the folders listed for the Virtual Directory Manager of  FIG. 10 , according to an embodiment of the present invention; 
           [0023]      FIG. 12  shows a screenshot of a system tray application, according to an embodiment of the invention; 
           [0024]      FIG. 13  shows a screenshot of the proprietary virtual drive, according to an embodiment of the present invention; 
           [0025]      FIG. 14  shows a screenshot of the virtual directory access, according to an embodiment of the present invention; 
           [0026]      FIG. 15  shows a screenshot of the Virtual Directory Manager for managing virtual directory information, according to an embodiment of the present invention; 
           [0027]      FIG. 16  shows a screenshot of the drop-down menu for applications, according to an embodiment of the present invention; 
           [0028]      FIG. 17  shows a screenshot of the menu selection for the menu of  FIG. 16 , according to an embodiment of the present invention; 
           [0029]      FIG. 18  shows a screenshot of the Application Manager login page, according to an embodiment of the present invention; 
           [0030]      FIG. 19  shows a screenshot of the system menu, according to an embodiment of the present invention; 
           [0031]      FIG. 20  shows a screenshot of the mail application, according to an embodiment of the present invention; 
           [0032]      FIG. 21  shows a screenshot of the document selection page, according to an embodiment of the present invention; 
           [0033]      FIG. 22  shows a screenshot of a save feature; 
           [0034]      FIG. 23  shows a screenshot of the Safe Card Manager, according to an embodiment of the present invention; 
           [0035]      FIG. 24  shows a screenshot of the Task Manager, according to an embodiment of the present invention; 
           [0036]      FIG. 25A  shows a screenshot of the upgrade menu, according to an embodiment of the present invention; 
           [0037]      FIG. 25B  shows a screenshot of the version switch dialog box, according to an embodiment of the present invention; 
           [0038]      FIG. 26  shows a screenshot of the login page, according to an embodiment of the present invention; 
           [0039]      FIG. 27  shows a screenshot of a directory menu, according to an embodiment of the present invention; 
           [0040]      FIG. 28  shows a screenshot of the Share Manager page, according to an embodiment of the present invention; 
           [0041]      FIG. 29  shows a screenshot of the selection from Windows Explorer, according to an embodiment of the present invention; 
           [0042]      FIG. 30  shows a screenshot of the Share Manager creation page, according to an embodiment of the present invention; 
           [0043]      FIG. 31  shows a screenshot of the Share Manager transmittal page, according to an embodiment of the present invention; 
           [0044]      FIG. 32  shows a screenshot of the virtual drive with the imported documents, according to an embodiment of the present invention; 
           [0045]      FIG. 33  shows a screenshot of the share notification page, according to an embodiment of the present invention; 
           [0046]      FIG. 34  shows a screenshot of the Virtual Directory Manager, according to an embodiment of the present invention; 
           [0047]      FIG. 35  shows a screenshot of the virtual drive, according to an embodiment of the present invention; 
           [0048]      FIG. 36  shows a screenshot of the menu for adding a folder to the virtual drive, according to an embodiment of the present invention; 
           [0049]      FIG. 37  shows a screenshot of the port map manager, according to an embodiment of the present invention; 
           [0050]      FIG. 38  shows a screenshot of the port configuration page, according to an embodiment of the present invention; 
           [0051]      FIG. 39  shows a screenshot of the virtual drive as accessed from a desktop, according to an embodiment of the present invention; 
           [0052]      FIG. 40  shows a screenshot of the virtual drive accessed via a web browser, according to an embodiment of the present invention; 
           [0053]      FIG. 41  shows a screenshot of the menu selection from the virtual drive of  FIG. 40 , according to an embodiment of the present invention; 
           [0054]      FIG. 42  is a high level flowchart of a processing flow according to an embodiment of the present invention; 
           [0055]      FIG. 43  is a high level block diagram of a computer system in which the invention can be advantageously implemented; 
           [0056]      FIG. 44  is a simplified depiction of application virtualization, according to an embodiment of the present invention; 
           [0057]      FIG. 45  is a high level flow chart of a method for application virtualization, according to an embodiment of the present invention; and 
           [0058]      FIG. 46  is a high level flow chart of processing path A from  FIG. 45 , according to an embodiment of the present invention. 
       
    
    
       [0059]    While the invention as claimed can be modified into alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the scope of the present invention. 
       DETAILED DESCRIPTION 
       [0060]    We disclose an Internet Operating System (IOS) which provides the following benefits: A) virtualizes differing, remotely-located resources into generic resources; B) enables user interaction among various resources regardless of where these resources reside; C) central aggregation and management of personal, Internet, and local resources; and D) enabling differing presentations of the virtualized resources from any location. 
         [0061]    Referring now to the drawings and to  FIG. 44  in particular, we illustrate the functionality that provides these four benefits. Many definitions of “virtualization” can be found in today&#39;s technology lexicon. For the purposes of this invention, we define the term “virtualize” to mean “create a virtual (simulated) version of a node on a user&#39;s device such that the virtual version behaves in the same manner as the actual node resident on a remote system.” The node can be all or a partition of a storage resource, an application, an application interface, an object, and/or a document. Also for purposes of this invention, we define “remotely located” to mean those resources which are separated by the Internet, including being separated by firewalls. 
         [0062]    Each of the four benefits to be described herein correspond to a layer of the virtualization diagram of  FIG. 44 , in order from top to bottom: 
         [0063]    A. Virtualize Different Resources into Generic Resources. 
         [0064]    In the top-most Virtualization Layer  4460 , we employ plug-ins  4420 ,  4422 ,  4424 , and  4426  to 1) virtualize remote storage services into generic storage interfaces and objects; and 2) virtualize application objects into generic applications. By generic we mean that the nodes are not specific to a local operating system (OS) so that they can be presented differently if need be (such as to present it to the local OS, or present it to a web page inside of a web browser. 
         [0065]    In Storage Virtualization, various storage providers are virtualized as file system objects, and can be mounted as a virtual directory. Web application virtualization has two meanings 1) add thin proprietary web app layer to make it a generic Web Application that can be used by the Internet Operating System (IOS). It is represented as a web app file system object located under the web apps&#39; virtual directory. 2) We generate public link, so that web apps can access local resources. This link is ticketed, and cannot be used by others. By ticketing, we mean the conventional meaning of link authentication for a session. It works as follows. 
         [0066]    Assume we want to give ZOHO Writer, the ticket holder, a five-minute window for it to read a file called demo.txt where demo.txt is virtualized into the global namespace as /local_drive/dir1/dir2/demo.txt. To generate a public link, the local IOS agent will look into the file such as /local drive/dir1/dir2/demo.txt and translate it to the real physical file demo.txt. The local IOS agent will then talk to a service on a web server such as www.gladinet.com and tell the service that it needs to generate a ticket for five minutes for this file demo.txt. so that the service will record the request in a database, recording the time to expire, the file name, and the IP address where the request is coming from. The web service generates a ticket in some format such as a_long_string with_some_random_digits. Then the ticket can be translated into a public link such as http://www.gladinet.com/ticket/a_long_string_with_some_random_digits. Someone visiting this link will invoke the service on the web server; the web server does a database lookup and finds the IP address of the request it is coming from. The web server can then proxy the request back to the IOS agent running on that IP address through a peer to peer (P2P) method and retrieve the demo.txt file. 
         [0067]    To virtualize an application we first need to define a generic application interface that includes the following information: a) the location (for example: http://docs.google.com, an IP address); b) the type of application (for example, a web application, native application, terminal server application, and so forth); and c) the supported method requested by the user (for example, open or save). Secondly, we need to use a plugin to implement the generic interface if the app itself doesn&#39;t have the interface. Thirdly, virtualize the settings above as a generic application object. The object becomes a node in the Global Namespace (please refer to  FIG. 42 ). 
         [0068]    An application object can live in the global namespace. For example /root/applications/google_docs.xml can be the virtual path to a file object. This file object contains the settings of the google_docs application. When someone makes a request to the IOS agent for this specific file, an XML file can be retrieved with the settings embedded inside the file. So in this manner the settings are virtualized into an XML file, address-able by the path /root/applications/google-docs.xml. 
         [0069]    B. Enable Interaction Among Various Resources. 
         [0070]    There is a tremendous amount and variety of resources that exist in the Internet today, but the utilization of these resources is quite low due to the lack of interaction among the resources. We address this problem in the Interaction Layer  4462  by virtualizing applications so that they are able to interact with virtualized storage objects in the global namespace defined in  FIG. 42 . 
         [0071]    1) enabling interaction of physical resources such as personal computer (PCs) and handhelds by providing high speed peer to peer channels. We enable interaction of these resources even if they are located behind firewalls. 
         [0072]    2) enabling interaction of various resources (local or online) by providing a thin virtualization layer. In one example of this layer, a Web Application from Web Site A can interact with a file located on Web Site B directly, even if the two websites had no knowledge of each other beforehand. 
         [0073]    C. Central Aggregation and Management of Personal Resources. 
         [0074]    In the IOS Layer  4464 , we provide central profile functionality (a global namespace) to manage a user&#39;s resources either locally or located on the Internet, just like conventional operating systems manage local resources for the user. The aggregation of all resources belonging to the user is made up of Internet and local storage and computing resources, which can be published via a generic interface, thus the IOS functionality can be presented to the user as a) part of the desktop (desktop integration to extend existing desktop); b) WebTop; and c) third party integration. The centralized user profile management functionality is provided by: 
         [0075]    1) geo-based profile management server—the profile is always locally stored. 
         [0076]    2) virtual desktop—the product defines and maintains a virtual desktop or virtual pc, which represents all the apps (web, local) available to the user, and personal visual preferences; 
         [0077]    3) virtual directory management—Most (if not all) resources belonging to the user can be mounted as a virtual directory, the user profile maintains all virtual directory mounted by the user, which is represented as a virtual drive. 
         [0078]    4) unified contact management—a user&#39;s contacts can come from various sources, i.e., Facebook, Gmail, the product provides a unified way to manage/use all these contacts. 
         [0079]    5) My Safe—central storage for user&#39;s secure data, such as passwords, account info; 
         [0080]    6) Access user profile via an interface such as WebDav, providing an open interface for bi-directional third party integration. 
         [0081]    7) Publish Share—User can create a share using local resource, the share can be accessed by others, even the resources located behind firewall/NAT, the share is ticketed, thus user can control who, when can access the share. Additionally, we provide the functionality to Send Share via system messages—sending a share directly to other IOS users. The user is able to import share as a Virtual Directory—The user of the product can import the share he received as virtual directory, and access it just like other virtual directory already exists, in a desktop environment, this share just become part of his local file system. 
         [0082]    8) Single sign-on—We provide single sign on for all integrated storage and web apps using My safe functionality. 
         [0083]    9) IOS Agent (Web Directory Integration)—The product works with a web directory service to provide semantic, organized internet service, this feature is called IOS agent service, for the first release, the agent only provides such service for web apps, we will extend this service in the following release. 
         [0084]    10) Personal Agent to provide organized Internet service—Another reason that prevents the average user from utilizing the huge amount of available Internet resources better is that the useful information is almost always overwhelmed by the huge amount of unrelated information. This problem is not much improved even with the help of a search engine. ISO acts as personal agent interacts with Nextgate Web directory, or with other IOS instance to provide organized internet service. 
         [0085]    D. Enabling Differing Presentations of the Virtualized Resources. 
         [0086]    In the Presentation Layer  4466 , we bind the virtual objects into a local presentation with a local app running on a local or network mapped drive. Alternatively, we can bind the virtual objects into a web presentation that can run from a web page (see the webtop example shown in  FIGS. 39-41 ) or as a local native application. We can bind the storage into a file server for access by any standard file sharing protocol. A webtop is a desktop environment embedded in a Web browser. A virtual disk can be mapped as a local or network drive. 
         [0087]    Alternatively, the storage can be presented on a File Server so that collaborators can access it through network file sharing protocols such as CIFS/SMB protocols by Microsoft Corporation. CIFS is short for Common Internet File System Protocol, a dialect of SMB (Server Message Block). Both SMB and CIFS are also available on VMS (Virtual Memory System), several versions of Unix, and other operating systems. Just like a conventional operating system (OS), the Internet OS requires a human-computer interface (i.e., a desktop for windows) to use the OS functionality. This product defines a virtual desktop/computer that can be represented to the user in various configurations to expose the functionality in a setting familiar to the user. 
         [0088]    Feature List. 
         [0089]    Peer to Peer high speed channel. The product provides high speed channel among all devices configured in the user&#39;s profile, the channel can be established above: 
         [0090]    high speed TCP channel traversing a firewall; 
         [0091]    bundled TCP links when UDP is not usable; 
         [0092]    profile server forwarded channel (when firewall/NAT traversing is not available. The channel can automatically detect if the data can be compressed, and then turn on/off compression automatically. 
         [0093]    The following are some of the features that directly take advantage of the high speed channel: 
         [0094]    Port Map—map a remote port as a local port to use the channel, use one server as proxy, such as while in home, can use office machine as proxy to access resource that cannot be accessed directly from home. 
         [0095]    RDP—automatically port map, remote in box behind firewall/Nat with better quality (similar in functionality to gotomypc and logmein). 
         [0096]    Local storage based virtual directory. Access hard drive located on a box behind firewall/Nat with BT performance. 
         [0097]    HTTP proxy—use any one machine as an http proxy, such as using home pc as http proxy to access website that cannot be accessed from office pc otherwise. 
         [0098]    Multi-Directional Firewall 
         [0099]    Installation—Installation is done through MSI packages. There are two MSI packages, one for 32-bit and one for 64-bit. 
         [0100]    Descriptions of Various Screenshots. 
         [0101]    Program Start up—Upon start up you will see a simple start page (see  FIG. 1 ). Click on the Explore My Gladinet Drive to bring you to the Mapped Drive shown in  FIG. 2  (GCD will map a virtual drive into Windows). After the Gladinet Z: drive (the virtual drive) is open, the click to mount is a usability feature that allows you to click on the virtual link (Click to mount) and start mounting virtual storages. When you click on the Click to Mount [here we use Amazon Storage], you will see the box shown in  FIG. 3 . Here you can type in the Amazon S3 AccessKeyId and Secret Access Key to mount Amazon S3 storage. After it is mounted, you can see it from the Gladinet Virtual Drive as shown in  FIG. 4 . 
         [0102]    You can do the same thing for other online storages: after the Google Docs is mounted as a virtual folder in  FIG. 5 , you can drag and drop files into it, you can drag and drop files out of it into windows local hard drive, shown in  FIG. 6 . You can click on the file to modify the online file using a local word processor. They are just like local files, allowing the user to process the data on the user&#39;s own machine by downloading (caching) copies of the remotely stored data locally. Click to mount Google Picasa shown in  FIG. 7 . 
         [0103]    Now as shown in  FIG. 8  the Web Albums appear as folders, with online Photos appearing as image files as shown in  FIG. 9 . If you have multiple SkyDrive accounts or multiple Google accounts, you can mount them all. See  FIGS. 10 and 11 . 
         [0104]    The main user interface is a system tray application shown in  FIG. 12 . Clicking on My Gladinet Drive will open the Gladinet Virtual Drive shown in  FIG. 13 . Clicking on My Virtual Directories opens Virtual Directory which will allow you to quickly get access to the mounted directories as shown in  FIG. 14 . 
         [0105]    Referring to  FIG. 15 , there is shown a Virtual Directory Manager which is an application that allows you to mount/unmount/edit virtual directory information. Referring to  FIG. 16 , you can enable/configure web applications and integrate them into the Windows Explorer. Clicking on Enable/Configure Google Mail—see  FIG. 17 . After Gmail is configured in  FIG. 18  you can open it from Systray Menu shown in  FIG. 19 . 
         [0106]    After clicking the gmail entry, the gmail will start in a standalone window application as shown in  FIG. 20 . You can do the same for Google Docs, after Google docs (as an online application, not just storage), you can right click a word document or excel spread sheet to edit (Use online application to edit local file). See  FIG. 21 . 
         [0107]    An important feature is that inside the online application Google Docs, when you do save, it can save back to the local file on your hard drive. See  FIG. 22 . It also works for ZOHO Writer, ZOHO Sheet; you can right click a local document and modify using online document. After you are done, you can save the document back to your local hard drive. 
         [0108]    A Safecard Manager is a password manager to manage different passwords for your online application. See  FIG. 23 . Referring to  FIG. 24 , a Task Manager is an application to monitor the upload/download tasks going on in the background. 
         [0109]    By default, upon install and program starts, the GCD is in stand-alone operation mode. However, a user can pick to upgrade to Standard Version from System Tray menu as shown in  FIG. 25A  and  FIG. 25B . Upon starting the Standard version, you see a login screen ( FIG. 26 ) because it requires a Gladinet Account to operate. You can either register for a new account or you can switch back to the stand-alone mode which doesn&#39;t need an account. The standard version has more features; the system tray menu is longer too. 
         [0110]    My Favorites are shown in  FIG. 27 . The “My favorites” feature is an aggregation of all the bookmarks from all the PCs that runs GCD with the same Gladinet account. One of the important features in the system of the invention is the ability to share local files/folders with friends. This is shown in FIG.  28 —Share Manager. You can publish a local file/folder as a share, you can import a share sent to you, you can also review received shares. You can also right click a folder/file in Windows Explorer and do share in  FIG. 29 . After you receive a share, you can import the share into the Gladinet Virtual Drive shown in  FIG. 30 . 
         [0111]    If you are not a Gladinet user and you receive a share from a Gladinet user, you will receive a link such as the one shown in  FIG. 31 . In  FIG. 32  you can select “My Imported Shares” and in  FIG. 33  you can download the share. It is very easy to mount the share as a new virtual directory as shown in  FIG. 34  by selecting a directory from  FIG. 35  and adding to the Gladinet Virtual Drive in  FIG. 36 . 
         [0112]    Remote access to your computer begins as shown in  FIG. 37 . Next in  FIG. 38  the user has the ability to map a port.  FIG. 39 through 41  are all webtop screens.  FIG. 39  shows the Virtual Directory Manager and  FIG. 40  shows the contents of the user&#39;s Gladinet Drive. 
         [0113]      FIG. 41  shows a Gladinet Web Desktop screen. This is one example of an actual presentation of the virtual computer made up of all of the user&#39;s resources from different sources (such as from Outlook contacts, Gmail, and so on). 
         [0114]    Referring to  FIG. 42 , there is shown a high level block diagram of a system according to an embodiment of the invention. The Name space root  4200  is part of the user&#39;s profile. The Name space root  4200  provides a unified view of all resources belonging to a user. The Name space root  4200  also provides a generic way to locate and access various storage items or settings items (application settings) for a user and is actually a merge view of multiple physical or virtual name space from various providers. 
         [0115]    The namespace node  4200  as defined in the user profile is either a dummy node to create the hierarchy or it is a mounting point that defines a start point of name space from other providers. A link node  4202  contains settings that defines what plug-in  4204  (C) will be used to access the underlying name space  4200 , and other items. The same plug-in  4204  can be used in multiple link nodes with different parameters. 
         [0116]    The plug-in  4204  can also be implemented on top of other plug-ins to provide advanced functionality, such as tiered or RAID storage  4222  across multiple providers. The user also has a virtual directory called my tiered storage  4243  which is a tiered storage from remote storages  4244  and  4242 . The virtual directory is the appearance of a drive on your desktop, but the drive is not actually physically located within your computer. 
         [0117]    Finally a user can obtain the functionality/settings of application services from remote sites across the internet by a Virtual Directory called My Applications  4246 . In  FIG. 42 , the starting point is the name space root  4200 . A mounting point  4202  that marks the start point of sub-name space from a storage provider, the node contains the settings/parameters regarding how to access the name space/service provided by the provider. 
         [0118]    The plug-in  4204  is the thin layer that virtualizes underlying storage as a generic storage object (node) in the system. A Dummy node  4208 , is a place-holder, a helper object that organizes the mounting point in the system. A mounting point  4222  that has a nested plug-in  4226  mounted, this plug-in provides a RAID plug-in  4224  that can be configured to use multiple plug-ins, to create RAID service using storage service from multiple providers. These providers may belong to different business organization. 
         [0119]    A tiered plug-in  4234  that provides tiered storage service, in the chart, the tiered storage node manages a RAID plug-in node  4226 , and simple plug-in node, the tiered storage plug-in will choose the right plug-in node based on predefined criteria. It is a mounting point that has a system plug-in mounted. This plug-in exposes all application owned by the user. A Generic Application Object  4246  contains information on how to access the underlying application. 
         [0120]    Referring to  FIG. 43 , there is shown a simplified diagram of an information handling system  4300  consistent with an embodiment of the present invention. For purposes of this invention, information handling system  4300  may represent any type of computer, information processing system or other programmable electronic device, including a client computer, a server computer, a portable computer such as a laptop, an embedded controller, a personal digital assistant, and so on. The computer system  4300  may be a stand-alone device or networked into a larger system. 
         [0121]    The system  4300  could include a number of operators and peripheral devices including inter alia one or more processor devices  4302 , a memory  4304 , and an input/output (I/O) subsystem  4306 . The processors  4302  may be general or special purpose microprocessors operating under control of computer program instructions executed from a memory. 
         [0122]    The processor devices  4302  may include a number of special purpose sub-processors, each sub-processor for executing particular portions of the computer program instructions. Each sub-processor device may be a separate circuit able to operate substantially in parallel with the other sub-processors. Some or all of the sub-processors may be implemented as computer program processes (software) tangibly stored in a memory that performs their respective functions when executed. These may share an instruction processor, such as a general purpose integrated circuit microprocessor, or each sub-processor may have its own processor for executing instructions. Alternatively, some or all of the sub-processors may be implemented in an ASIC. RAM may be embodied in one or more memory chips. The memory may be partitioned or otherwise mapped to reflect the boundaries of the various memory subcomponents. 
         [0123]    The memory  4304  represents either a random-access memory or mass storage. It can be volatile or non-volatile. The system  4300  can also comprise a magnetic media mass storage device such as a hard disk drive  4309 . The memory  4304  comprises an operating system (OS)  4310 , an Internet Operating System (IOS)  4320  and plug-ins  4330 , each providing an interface between the web browser and the remote application. The plug-in  4330  uses the application program interface (api) of the web application (these are public apis) to get the remote web application to act as if it were a local application. It will then allow the user to save the data generated on the remote app to the user&#39;s computer. 
         [0124]    The I/O subsystem  4306  includes any of various end user interfaces such as a display, keyboards, mouse, pointing device, and so on. The I/O subsystem  4306  may further include a connection to a network such as a local area network (LAN) or a wide-area network (WAN) such as the Internet. A display interface is operable for forwarding graphics, text, and other data from the Internet for display to a user. It does this by placing the web app in a frame. The user is able to access the web app by clicking on the frame. 
         [0125]    Processor  4302  and memory  4304  components are physically interconnected using bus architecture. The system  4300  also includes removable storage unit  4390  which may be a compact disc (CDROM), digital video disk (DVD), magnetic tape, optical disk, removable memory chip, and others. The removable storage unit has stored therein program instructions for enabling computer  4300  to operate according to an embodiment of the present invention. 
         [0126]    What has been shown and discussed is a highly-simplified depiction of a programmable computer apparatus. Those skilled in the art will appreciate that a variety of alternatives are possible for the individual elements, and their arrangement, described above, while still falling within the scope of the invention. Thus, while it is important to note that the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of signal bearing media include ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communication links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The signal bearing media make take the form of coded formats that are decoded for use in a particular data processing system. 
         [0127]    Referring now to  FIG. 44 , there is shown a simplified diagram of an embodiment  4400  of application virtualization. Application virtualization as described herein will allow a user  4490  to invoke a generic web application with the appropriate channel/mechanism to access another object (data) stored on the Web by another service provider. Continuing with the real-world example stated earlier, assume website  1   4401  contains a file (such as a document from Amazon S3 (Amazon Simple Storage Service) by Amazon Web Services LLC. Website  2   4402  has a web application  4413  such as Zoho Writer. Automating the interaction of the two disparate resources (the document from website  1  and the web application from website  2 ) involves the user  4490 , through a Virtual Desktop Service (VDS)  4430  accessing the Internet Operating System (IOS)  4450  through a user interface  4406 . The following descriptions of  FIGS. 45 and 46  will serve to describe the method for application virtualization. 
         [0128]    In  FIG. 45  we present a simplified flow chart of the automatic method for application virtualization. First in step  4510 , the user  4490  (via an agent, such as a browser or application shell) issues a command to the VDS to open a file on website  1  ( 4401 ) using a web application  4413  provided by website  2  ( 4402 ) by using a generic application to open the file inside the user&#39;s name space. For example the user will open file  1  located at file=/amazons3/dir1/dir1/demo.txt (file&#39;s virtual path to amazons3) or file=/local drive/dir1/dir2/demo1 .txt (file on local file system). The web application the user wants to use is at http://docs.google.com which supports editing a text file by URL (http://docs.google.com/edit?url=xxx). 
         [0129]    Next in step  4512 , the VDS retrieves the application object using the full path of the application in the name space. In step  4514  the VDS redirects the user agent to an application proxy with configuration information. In step  4516  the application proxy checks the configuration of the application. If at decision  4518  it is determined that the application supports accessing the desired resource defined in the url (uniform resource locator), we perform the steps shown in  FIG. 46 , discussed later. 
         [0130]    If, however, at decision  4518  it is determined that the application does not support accessing the desired resource as defined in the url, we go on to step  4520  where the application proxy retrieves the file from VDS and uploads the file to the location specified in the application&#39;s profile. Then in step  4522 , the application then transmits the result back to the user agent. The result is transmitted back in the form of a binary stream of the file content. It is transmitted back to the user&#39;s PC, where the IOS agent is running So the IOS agent knows where the transmit target is in the namespace, it will then send the request to the proper plug-in for the part of the name space and the plug-in will save the file. 
         [0131]    In step  4530  the user now sees that his/her file from one provider is opened by a web application from another provider and processes the file accordingly. Lastly, in step  4532  the application proxy saves the modified file by reversing the steps it took to retrieve the file. 
         [0132]    In  FIG. 46  we discuss the method steps performed when it has been determined that the application supports accessing the desired resource defined in the URL. In step  4610 , the application proxy asks the local ticket manager for a ticketed URL. In step  4612 , the ticket manager determines if the instance of the requested resource can be accessed directly. If it can, then in step  4614 , the ticket manager generates a local url to the application proxy (e.g., http://localhost:port/sharable_url_for_demo.txt). If not, then in step  4615 , the ticket manager asks a global node to retrieve a global access url (e.g., http://share.gladinet.com/sharable_url_for_demo1_with ticket.txt). In step  4616 , the application is able to retrieve the url and invokes the web application with the url as one parameter as instructed by the application setting profile. In step  4618  the application proxies the result back to the user agent. Since the web application is virtualized into a shell, an app frame hosting the web page, the hosting app, can launch the Google docs such as: 
         [0133]    http://docs.google.com/edit?url=http://share.gladinet.com/sharable_url_f or demo1_with_ticket.txt. 
         [0134]    Then the share.gladinet.com has a channel with the local PC that hosting the demo1.txt and the demo 1  will be retrieved on demand from the local PC to the share.gladinet.com and then go to docs.google.com for editing. 
         [0135]    Therefore, while there has been described what is presently considered to be the preferred embodiment, it will understood by those skilled in the art that other modifications can be made within the spirit of the invention. The above descriptions of embodiments are not intended to be exhaustive or limiting in scope. The embodiments, as described, were chosen in order to explain the principles of the invention, show its practical application, and enable those with ordinary skill in the art to understand how to make and use the invention. It should be understood that the invention is not limited to the embodiments described above, but rather should be interpreted within the full meaning and scope of the appended claims.