In current networks, such as enterprise networks that may communicate through both the world wide web (WWW) and local area networks (LAN), it is common to have a central database and/or one or more central servers. Various remote user devices, or remote clients, may access the central server in order to provide end-users with access to data and services available at or through the server.
For a more complete understanding of examples of the present disclosure, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
In various examples disclosed herein, a request by a remote client to launch an application on a host server is directed to a shell application on the host server. The shell application causes the requested application to be launched on the remote client. Further, the shell application may use configuration data associated wall the requested application on the host server to be used in launching and running the application on the remote client.
Referring now to
In various examples, the system 100 may include one or more remote terminals, such as the client 110, from which end-users can access data and resources through the host server 120. In other examples, any number of clients may communicate with the host server 120 through the same or different networks, or through a direct connection with the host server 120.
In one example, the client 110 may be a terminal through which a user may form a remote desktop connection to the host server 120. Further, the client 110 may form a connection, through the host server 120, with other entities, such as other servers, other clients, databases or the like. In the example illustrated in
The remote client 110 illustrated in the example of
The host server 120 may be coupled to various other components, such as a database storing data and/or applications, that may be accessed by various end-users within. The database may contain server-side resources, such as various application software programs, which may be pushed to a remote terminal computer in the network, for example. Additionally, remote desktop protocol (RDP) application software, which can be run by the host server 120 in order to allow connection by end-user devices (e.g., remote clients such as client 110) may be stored on the database and run by the host server 120.
In the example of
In various examples, the host server 120 may also be provided with a variety of applications for execution by a processor of the host server 120. As noted above with reference to the client 110, applications provided on the host server 120 may include, for example, a browser (e.g., Netscape, Internet Explorer, Mozilla, etc.), a word processor (e.g., Microsoft Word), a spreadsheet application (e.g., Excel) or any other such application. As illustrated in the example of
Referring now to
The apparatus 200 includes one or more outputs 204 such as a display for displaying a graphical user interlace (GUI), one or more input devices 214 such as a keyboard and/or mouse, one or more central processing units (CPUs) 206, one or more communications interfaces 210 such as a wireless interface or an Ethernet or other wired interface, and one or more storage devices 208 such as a computer-readable medium.
The storage devices 208 may include one or more memory devices, such as random access memory (RAM), read only memory (ROM), erasable programmable ROM (EPROM), electrically EPROM (EEPROM), flash memory, or any other non-volatile or volatile memory. The storage devices 208 may store code including instructions for execution by a processor (e.g., CPU 206). For example, the storage devices 208 may store an operating system (OS) of the apparatus 200 and one or more application software programs, such as the remote desktop protocol for the server or client. The various components may be coupled to each other through a system bus 202, for example.
The various components of the example apparatus 200 of
In various examples, the CPU 206 of the apparatus 200 (e.g., host server) may execute a shell application 220. As described in greater detail below with reference to
Referring now to
In various examples, during the remote desktop connection, a request may be received by the host server from the remote client to launch an application (block 304). The request may be received in various forms. In one example, a link to a website may be selected within the remote desktop window of the remote client. Selection of the link may result in a request to launch a browser application. In another example, the request may be in the form of an attempt to open a document using a word processor or another application.
In conventional arrangements, the application may be launched on the server, thus allowing a user on the remote client to use the application running on the host server through the remote desktop. However, this arrangement can result in significant inefficiencies. For example, in the case of a browser application, web pages may be sent to the server from a web host, rendered at the server, encoded by the remote desktop application on the server, sent to the remote client, and then decoded by the remote desktop application on the remote client.
Various examples of the present disclosure eliminate such inefficiencies. For example, in the example process 300 of
In various examples, the shell application is configured to process the request from the remote client to launch an application. However, instead of launching the application on the server, the shell application may cause the application to seamlessly launch on the remote client.
In this regard, the shell application may open a virtual channel between the host server and the remote client (block 308). In various examples, the virtual channel may be opened using the same communication path as used for the remote desktop connection. In some examples, the virtual channel is opened through a virtual private network (VPN) connection between the remote client and the host server.
The shell application may cause configuration data corresponding to the requested application to be sent from the host server to the remote client (block 310). In various examples, the configuration data is sent to the remote client through the virtual channel. As noted above, the configuration data may correspond to settings associated with the application when it is run on the host server. In various examples, the configuration data may include default settings for paper size, font, user identification, bookmarks (or favorites), one or more home pages or a variety of other settings, for example. In some examples, the configuration data is transmitted to the remote client for storage in, for example, as temporary memory. In other examples, the configuration data is maintained on the host server, but the configuration data is used by the shell application and/or the remote client for operation of the requested application, as described below.
In various examples, the application is then launched on the remote client (block 312). In launching the application on the remote client, the shell application on the host server may manage or control certain aspects of the application through, for example, the virtual channel. As noted above, the configuration data may be used to configure the application on the remote client. For example, in the case of a browser application, the home page shown upon launch of the browser application may be determined by the configuration data.
As noted above, in some examples, the configuration data is stored in a temporary memory of the remote client and is accessed during launch and operation of the requested application. In other examples, the configuration data is maintained on the host server. In such cases, the shell application may monitor and provide configuration data, as necessary, to the remote client to facilitate seamless launching and operation of the requested application.
In some examples, it may be desirable to maintain an appearance to the user of the remote client that the requested application is running within the remote desktop application. In this regard, the shell application may mimic operation of a conventional remote desktop application. For example, the requested browser application may be displayed within the remote desktop window, even though the actual application may be running outside the remote desktop environment. In various examples, the display of windows of the remote desktop application and the local application on the remote client may be coordinated by the shell application. In this regard, the shell application may control the display protocol of the remote desktop application and may, accordingly, seamlessly display the local application over the remote desktop window or vice versa. Thus, from a user's perspective, the remote desktop application window and the local application window may appear as a single window.
In this regard, reference may be made to
In the example of
In accordance with various examples, as noted above, the display of windows of the remote desktop application and the local application on the remote client may be coordinated by the shell application. In the example of
Thus, an application requested within a remote desktop environment may be provided to the user of a remote client without the above-described inefficiencies associated with the remote desktop environment.
Various examples described herein are described in the general context of method steps or processes, which may be implemented in one example by a software program product or component, embodied in a machine-readable medium, including executable instructions, such as program code, executed by entities in networked environments. Generally, program modules may include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps or processes.
The foregoing description of various examples has been presented for purposes of illustration and description. The foregoing description is not intended to be exhaustive or limiting to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of various examples. The examples discussed herein were chosen and described in order to explain the principles and the nature of various examples and its practical application to enable one skilled in the art to utilize the various examples and with various modifications as are suited to the particular use contemplated. The features of the examples described herein may be combined in all possible combinations of methods, apparatus, modules, systems, and computer program products.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2013/024026 | 1/31/2013 | WO | 00 |