Application mobility service

A method and system for preserving application session states among multiple terminals. An application session state is captured from a first terminal. The application session state is stored on a central storage device or repository server. The application session state is then retrieved from the central storage device with a second terminal. At least one application on the second terminal is then placed in the application session state using the information that is retrieved from the central storage device.

FIELD OF THE INVENTION

The present invention relates generally to network computing and more particularly, to an application mobility service that enables a user to seamlessly and effortlessly transfer an active application session to any device that is accessible or convenient to the user simultaneously or at a later time.

BACKGROUND OF THE INVENTION

As people become more mobile, there is an increasing demand for computing in locations and situations that diverge from the traditional wired environment. The popularity of mobile devices such as laptop computers, personal digital assistants (PDAs) and wireless telephones, further makes nomadic computing a desirable and viable life style. However, most of today's applications are session-oriented. As used herein, the term session orientation means that a particular application is constrained by the device, platform, location, and time.

The session-oriented model places a limitation such that for the duration of an application session, a user cannot switch devices; otherwise, the user might lose their active application session and would need to restart it on a new device. Consider a scenario when a user is running an application on a stationary device (such as a desktop PC), but an alternative mobile device (such as a Pocket PC or laptop with wireless access) is available to the user. If the user would like to continue their application on the mobile device they could not do so without losing their active application session on the stationary device.

Consider another scenario when the user is running an application on their office desktop PC and must leave the office to attend a meeting at a remote location. The user can carry their laptop (with wireless access) with them on the flight to the meeting. Let's say that during the flight or at the airport the user would like to continue their application on their laptop, but again, they could not do so without losing their active application session on the laptop computer.

In both scenarios set forth above an alternative approach would be that the user saves their documents into a portable media. At a later time, the user must read or extract the documents from the portable media back into the mobile device and restart work on the documents on the mobile device. Such an approach requires the user's effort to move the document from one physical device to another physical device and is time consuming and undesirable. As such, a need exists for an Application Mobility Service (AMS) that enables a user to seamlessly and effortlessly transfer an active application to any device that is accessible or convenient to the user simultaneously or at a later time.

SUMMARY OF THE PRESENT INVENTION

A preferred embodiment of the present invention discloses a method of preserving application session states among multiple terminals. An application session state is captured from a first terminal and stored on a central storage device. The application session state is then retrieved from the central storage device with a second terminal. After the application session state is retrieved from the central storage device, at least one application is launched and restored to the application session state that is stored from the first terminal.

Another preferred embodiment of the present invention discloses an application mobility system. This preferred embodiment includes an application mobility service agent that is installed on a first terminal. An application is located on the first terminal, wherein the application mobility service agent is operable to capture an application session state of the application on the first terminal. A central storage device is connected to the first terminal, wherein the application mobility service agent is operable to transmit the application session state to the central storage device. A second terminal is connected to the central storage device, wherein the second terminal is operable to retrieve the application session state from the central storage device. Once the application session state is retrieved, the second terminal restores the application to the application session state stored from the first terminal.

A preferred embodiment of the present invention also discloses a method of preserving application session states among multiple terminals. In this embodiment, an application session state is captured from a first application on a first terminal. The application session state is then stored on a central storage device that is connected to the first terminal. The application session state is then retrieved from the central storage device using a second terminal. A second application located on the second terminal is then restored to the application session state stored from the first terminal. In this embodiment, the first terminal and the second terminal are preferentially different types of computing devices that are running different formats of similar applications. For example, the first terminal may be a PDA and the second terminal may be a personal computer that are both running copies of Microsoft Word® that are specifically designed for each computing device.

Yet another preferred embodiment of the present invention discloses an application mobility system. This embodiment includes a first terminal having a first application that has an application session state associated therewith. An application mobility service agent is also located or installed on the first terminal. A central storage device is connected to the first terminal for storing the application session state, wherein the application mobility service agent transmits the application session state to the central storage device. A second terminal is connected to the central storage device that includes a second application as well as the application mobility service agent. The second terminal is operable to restore the second application to the application session state by retrieving the application session state from the central storage device and moving the second terminal to the application session state.

Another preferred embodiment discloses a method of providing application code and preserving application session states among multiple terminals. In this embodiment, an application in a first application code format is downloaded to a first terminal from an application provider. A first application session state is then stored from the application on the first terminal on a central storage device. The application is then downloaded to a second terminal from the application provider server in a second application code format. Next, the stored application session state is then retrieved from the central storage device with the second terminal. The application is then restored with the second terminal to the application session state.

Finally, yet another preferred embodiment of the present invention discloses an application mobility system for application service providers. In this embodiment, an application in a first application code format is located on an application provider server. A first terminal is connected to the application provider server and is operable to download the application in the first application code format from the application provider server. An application mobility service agent is located on the first terminal, wherein the application mobility service agent is operable to capture an application session state from the application on the first terminal. A central storage device is connected to the first terminal, wherein the application mobility service agent is operable to store the application session state on the central storage device.

A second terminal is also preferentially connected to the application provider server and the central storage device, wherein the second terminal also includes the application mobility service agent. The second terminal is operable to download the application in a second application code format from the application provider server and the application mobility service agent on the second terminal restores the application in the second application code format to the application session state.

Further objects and advantages of the present invention will be apparent from the following description, reference being made to the accompanying drawings wherein preferred embodiments of the invention are clearly illustrated.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS OF THE INVENTION

Referring toFIG. 1, a preferred embodiment of the present invention discloses an application mobility service (AMS)10that enables a user12of a terminal14to seamlessly activate an application session16using a plurality of terminals14that are accessible or convenient to the user12simultaneously or at a later time. The application sessions16can be in various states depending on each respective application session16and the type of user interaction that is taking place on the terminal14. The terminals14may be desktop computers, laptop computers, personal digital assistants (PDAs) or any other type of device that is capable of accessing and utilizing a respective software application. The terminals14can be located in a variety of places such as at a business, a home or a location of travel.

The AMS10is used to decouple the association between the application session16and its respective terminal14, platform, location and time in favor of a new association between the application session16and the respective user12. An application session16is defined in the context of a given application to be the states of the application in its process data space that is independent of the architecture and operating system of the respective terminals14. The independence allows the application session16to move from one application session16on one terminal14to another implementation of the same application session16on another terminal14so long as this multi-platform application session16can handle session data uniformly.

The benefits of the AMS10is that it allows users12to handoff an active application session16from one terminal14to another respective terminal14without losing the application session16and having to restart the application session16on the new terminal14at a new location and time. It also allows the user12to keep track of multiple active application sessions16, freely save, and continue any active application session16at any given time from any heterogeneous terminal14.

The AMS10provides users12with seamless access to data from a wide variety of terminals14over a variety of different network environments. The preferred AMS10is illustrated inFIG. 2and contains two modules. The preferred AMS10contains an AMS agent20and an AMS repository server22. The AMS agent20is a software agent that resides on each respective terminal14and acts as a proxy between the AMS repository server22and the terminals14. The AMS agent20facilitates user authentication, session saving and restoration on the terminals14among other things.

The AMS repository server22provides the following functionalities: 1) user authorization and authentication; 2) device and user profiling; and 3) storage. During user authorization and authentication, the AMS repository server22authorizes and authenticates users12, thereby allowing them to use the AMS10. Device profiling is the process during which the AMS repository server22keeps track of and monitors device capabilities and fetches application data per user's requests. The AMS repository server22also provides an always-connected storage area for authenticated users12to store application sessions16and data that is associated with each particular application session16(such as date filed).

A user12who wants to use the AMS10must first setup the AMS repository server22. The user12can setup one of their own respective terminals14as the AMS repository server22or, preferentially, the user12will choose to use a commercial AMS repository server22. In addition, the user12will need to install and launch the AMS agent20on each of their respective terminals14. In order to utilize the AMS repository server22, the user12must login to the AMS repository server22by filling in a login window generated by the AMS agent20, which will require an AMS user name and an AMS password.

The discussion set forth below provides a detailed step-by-step description of the AMS10set forth inFIG. 2for two different categories of multi-platform applications24. Preferentially, the multi-platform application24is written in a platform independent language, such as Java or C#, which can run on any platform regardless of the underlying operating system and hardware architecture. In addition, preferably the multi-platform application24has multiple platform-specific implementations that each implementation can only run on the hardware architecture and operating system it is designed to function on during operation.

As briefly set forth above, in the preferred embodiment of the present invention the applications that are designed to function with the AMS10are preferentially applications24written in platform independent languages that run on any platform regardless of the underlying operating system and hardware architecture. Instead of requiring pre-installation the of application on the terminals14, the AMS agent20optionally saves the platform-independent application code as well as the application session data on the AMS repository server22when the user12wants to capture the application session16; and restores the platform-independent application code and application session data when the user12wants to restore the session on a respective terminal14.

Referring toFIG. 2, during normal operation a respective user12will be using an application on terminal14A. When the user12wants to switch to terminal14B, the user12will instruct the AMS agent20to save the active application session16on the AMS repository server22, which is illustrated at step26. At step28, the user12logs into terminal14B. If the user12wants to continue the active application session16from terminal14B, the user12will use the AMS agent20or terminal14B to retrieve the saved application session16from the AMS repository server22, which is illustrated at step29.

Referring toFIG. 3, the discussion below details how the AMS10saves and restores an application session16, which typically includes application code along with application session data. First, the user12turns on terminal14A. Once terminal14A is turned on, the AMS agent20on terminal14A preferentially automatically begins to run. The AMS agent20on terminal14A then requests the user12to log into the AMS repository server22, which is represented at step30. The communication between the AMS agent20on terminal14A and the AMS repository server22is preferentially accomplished using a secure network connection, such as SSL.

Once the user12is logged into the AMS10, the user will then start or launch a respective multi-platform application24on terminal14A and use the multi-platform application24to perform some of the activities that the user12desires to perform (such as edit or create data). After some time, the user12might want to leave terminal14A. At step32, the user12requests the AMS agent20on terminal14A to save the multi-platform application session16. The user can optionally assign a unique session name to the current multi-platform application session16. The AMS agent20then preferentially assigns a unique session name, such as “application X on terminal14A on DD/MM/YYYY” (DD/MM/YYYY means the month, date, and year), if the user12chooses not to name the application session16. The user12can also have an option to protect the application session16with a session password.

The AMS agent20on terminal14A then informs the multi-platform application24to save its application session data, such as the document the multi-platform application24has opened and has since been modified, into a platform-independent format. Next, the AMS agent20serializes the session name, the application code, the saved session data, and the optional session password. The serialized data (session name, application X code, session data, and optional session password) is then sent to the AMS repository server22through a secure network connection.

At step34, the AMS repository server22receives the serialized data from the AMS agent20on terminal14A. Once the serialized data is received, the AMS repository server22then places the data into a storage area. Before the user12leaves terminal14A, the user12logs off of the AMS repository server22, which is illustrated at step36inFIG. 3. The log off process disconnects terminal14A from the AMS repository server22. However, the data that has been modified or created during the application session16on terminal14A has been stored on the repository server22.

As an example, at a later time lets say that terminal14B is accessible to user12and that user12wants to use terminal14B to continue the saved application session16, which is represented at step38. The user12first logs into the AMS repository server22from the AMS agent20located on terminal14B at step40. The user12then uses the AMS agent20on terminal14B to generate a list of the user's12saved application sessions16that are stored on the AMS repository server22. At step42, the user12selects a respective application session16that the user12was last working on or wants to work on using terminal14A. If the application session16is protected by a password, the user12will need to enter the correct password to retrieve the application session16from the AMS repository server22. The AMS agent20on terminal14B then downloads the serialized data to terminal14B through a secure network connection, such as SSL.

Upon receiving the downloaded data, the AMS agent20de-serializes the application code and the application platform-independent session data. Then, the AMS agent20launches the multi-platform application24on terminal14B and restores the multi-platform application24to a state according to the saved platform-independent session data16, such as re-opens a document, which is illustrated at step44. Preferentially, the application session16open displays the page the user12was working on when the user12saved the application session16and logged off of terminal14A. Now, the user12has successfully migrated the application session16from terminal14A to terminal14B and can continue activity on terminal14B where it was left off on terminal14A. The above-referenced detailed description preferentially applies to multi-platform applications24that are platform independent applications.

Referring toFIG. 4, an AMS10is illustrated for a platform-specific application24X,24Y that is written for the specific platform and can only run on the respective terminal14A,14B it is designed to function on. Before the user12can utilize the AMS10, the user12needs to install the platform-specific applications24X,24Y on respective terminals14A,14B where the user12might save and restore application sessions16. For example, in order to enable AMS10for a Microsoft Word application between a desktop PC and a Pocket PC, the user12would need to install Microsoft Word on the desktop PC and install Pocket Word on the Pocket PC. For the purpose of the present invention, it is assumed that the user12has installed platform-specific application24X on terminal14A and platform-specific application24Y on terminal14B. Platform-specific application24X and platform-specific application24Y have the same functionalities. However, each platform-specific application24X,24Y is designed specifically for a hardware architecture and operating system installed on terminal14A and terminal14B respectively.

In this preferred embodiment of the present invention, once the user12turns on terminal14A an AMS agent20on terminal14A preferentially automatically starts to run after the user12turns on the power. At step50, the AMS agent20on terminal14A prompts the user12to log into the AMS repository server22. The communication between the AMS agent20on terminal14A and the AMS repository server22is preferentially through a secure channel or communication network, such as SSL.

At some point in time the user12launches platform-specific application24X on terminal14A and uses platform-specific application24X to perform some activities, such as editing or creating documents or data files. After some time, the user12will want to leave or log off of terminal14A. At step52, the user12requests the AMS agent20on terminal14A to save the application session16on platform-specific application24X. The user12can optionally assign a unique session name to the current application session16that is ending on platform-specific application24X. In this instance, preferentially the AMS agent20will assign a unique session name, such as “application24X on terminal14A on DD/MM/YYYY” if the user12chooses not to assign a unique name to the application session16that is ending on platform-specific application24X.

The user12is also given an option to protect the application session16with a session password. The AMS agent20on terminal14A informs platform-specific application24X to save its session data, such as the document platform-specific application24X has opened and since has modified, into a platform-independent format. Then, the AMS agent20serializes a session name, saved session data and an optional session password. The serialized data (session name, session data, and optional session password) is then preferentially sent to the AMS repository server22through a secure channel or communication network.

The AMS repository server22receives the serialized data from the AMS agent20on terminal14A and then stores the data from the application session16into a predetermined storage area, which is illustrated as step54inFIG. 4. At step56, before the user12leaves terminal14A, he or she logs off of the AMS repository server22thereby disconnecting terminal14A from the AMS repository server22.

At a later time, which is represented at step58, lets say terminal14B is accessible to user12and that user12wants to use terminal14B to continue the saved platform-specific application session16that was created on terminal14A. As illustrated at step60, the user12first logs into the AMS repository server22from AMS agent20on terminal14B. As with terminal14B, preferentially the AMS agent20on terminal14B begins operation when power is turned on. The user12uses the AMS agent20on terminal14B to generate a query that requests a list of that particular user's12saved application sessions16that are stored on the AMS repository server22.

At step62, the user12selects the saved application session16that he or she wants to work on using terminal14A. If the application session16is protected by a password, the user12will be required to enter the correct password to retrieve the application session16from the AMS repository server22. The AMS agent20on terminal14B then downloads the serialized data to terminal14B through a secure channel or communication network.

Upon receiving the downloaded data from the AMS repository server22, the AMS agent20de-serializes the application session data that was previously saved using platform-specific application24X on terminal14A. In other words, the application session16is restarted on terminal14B at the same point that it was left when user12logged off of terminal14A. As such, at step64the AMS agent20restores platform-specific application24Y on terminal14B and restores platform-specific application24Y to a state according to the saved platform specific session data, such as re-opens the document, and displays the page the user12was working on in the document or data file. As such, the AMS10has successfully migrated the application session16from application24X's session on terminal14A to terminal14B and the user12can continue activity on terminal14B.

In the preferred embodiments set forth above, it was assumed that the user12installed platform-specific applications on respective terminals14A,14B. Referring toFIG. 5, in yet another preferred embodiment of the present invention the preferred AMS10is designed to work with applications that are not installed on the terminals14A,14B. In this case, in order to utilize the AMS10an additional service is required, which is provided by an application provider70.

An application provider70, as defined herein, should be broadly construed as a service that hosts application code. When a user12wants to run an application72, the user12downloads the application code for the application72from the application provider70. The application code could be downloaded on a per use basis or on a subscription basis if the application provider70is a commercial service. Optionally, a user12can setup their terminal14A,14B to host the application code provided from the application provider70. The application72can be either written in platform-independent code or in platform-dependent code.

In this preferred embodiment, the user12turns on terminal14A and the AMS agent20on terminal14A preferentially automatically starts running after power is turned on and the operating system boots-up. At step80, the AMS agent20on terminal14A then requests the user12to log into the AMS repository server22. As with the other preferred embodiments, the communication between the AMS agent20on terminal14A and the AMS repository server22is preferentially through a secure channel or communication network, such as SSL.

During operation, user12wants to run application72X on terminal14A. However, application72X is not installed on terminal14A. As such, at step82, the AMS agent20on terminal14A downloads remote application72X from the application provider70. The application72that is downloaded to terminal14A is preferentially specifically designed for the type of platform that terminal14A is operating on. Hence, the application is designated as application72X inFIG. 5because it is related to the type of platform or operating system that terminal14A is operating on.

After the application72X has been downloaded from the application provider70, terminal14A starts application72X and the user12can use application72X to perform whatever type of activities are associated with that particular application. After some period of time the user12will want to leave or log off of terminal14A thereby ending the application session. At step84, the user12requests the AMS agent20on terminal14A to save the application session16. The user12can optionally assign a unique session name to the current application session16. The AMS agent20can also assign a unique session name to the application session16, such as “application72X on terminal14A on DD/MM/YYYY” if the user12chooses not to name the application session16. As with previous embodiments, the user12also has an option to protect the application session16with a session password.

As set forth above, the AMS agent20on terminal14A informs application72X to save its session data, such as the document the application72X has opened and has since modified, preferably into a platform-independent format, if it is available. Then, the AMS agent20serializes the session name, the saved session data and optional session password. The serialized data (session name, session data, and optional session password) is then sent to the AMS repository server22through a secure channel or communication network.

The AMS repository server22receives the serialized data from the AMS agent20on terminal14A and stores the serialized data in a predetermined storage area at step86. Before the user12leaves terminal14A, the user12logs off of the AMS repository server22, thereby disconnecting terminal14A from the AMS repository server22, which is represented at step88inFIG. 5. As such, the application session16that was created or modified using terminal14A is now stored on the AMS repository server22.

At a later period in time, let's say terminal14B is accessible to the user12and that user12wants to use terminal14B to continue the saved application session16, which is represented at step90. As such, the user12first logs into the AMS repository server22from the AMS agent20on terminal14B as illustrated in step92. The user12uses the AMS agent20on terminal14B to request a list of saved application sessions16from the AMS repository server22. The AMS repository server22generates the list of saved application sessions and sends it to terminal14B.

The user12is then able to select a respective saved application session16that he or she was working on using terminal14A. If the session is protected by a password, the user12will need to enter the correct password to retrieve the session from the AMS repository server22. The AMS agent20on terminal14B then downloads the serialized session data to terminal14B through a secure channel, which is illustrated at step94. Those skilled in the art would recognize that several different kinds of network connections exist that could be used to connect the terminals14A,14B to the AMS repository server22.

Upon receiving the downloaded session data, the AMS agent20de-serializes the application session data. The AMS agent20searches for application72Y, that performs the same functionalities on terminal14B as remote application72X on terminal14A, on terminal14B and finds application72Y is not installed. The AMS agent20then downloads the remote application code from the application provider70, which is represented at step82. After application72Y is downloaded, the AMS agent20restores application72Y on terminal14B and restores application72Y to a state according to the saved machine independent session data, such as re-opens the document and displays the page the user12was working on when the user12logged off of terminal14A. As such, the user12has successfully migrated his or her previous application session from terminal14A to terminal14B and can continue activity on terminal14B.

While the invention has been described in its currently best-known modes of operation and embodiments, other modes, embodiments and advantages of the present invention will be apparent to those skilled in the art and are contemplated herein. Although those skilled in the art would recognize that other embodiments of the present invention are envisioned, it is the claims that follow that that define the broad scope of the present invention.