US20170163553A1 - Methods and systems for providing software applications - Google Patents
Methods and systems for providing software applications Download PDFInfo
- Publication number
- US20170163553A1 US20170163553A1 US15/437,971 US201715437971A US2017163553A1 US 20170163553 A1 US20170163553 A1 US 20170163553A1 US 201715437971 A US201715437971 A US 201715437971A US 2017163553 A1 US2017163553 A1 US 2017163553A1
- Authority
- US
- United States
- Prior art keywords
- application
- resource
- host
- resources
- software application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H04L67/42—
Definitions
- the described embodiments relate to methods and systems for providing software applications.
- Computer systems generally require, at least, an operating system and certain other system resources (hardware and/or software) to provide applications to users.
- Operating systems can generally operate as an intermediary between the system resources at the computer systems and the applications. Different operating systems are, therefore, available for different computer architectures.
- Operating systems are generally configured to manage, at least, all the system resources at a computer system. Upon receipt of any application request, the computer system will typically implement the operating system in full even if only a subset of the functionality of the operating system is required for providing the requested application. Consequently, to provide the requested application, a computer system is likely to launch many unnecessary resources, such as a desktop environment, and requiring use of system computational and/or storage bandwidth for those unnecessary resources.
- the various embodiments described herein generally relate to methods (and associated systems configured to implement the methods) for providing one or more software applications.
- the host computer server can include, at least, a host memory for storing a host operating system and a host processor configured for operating the host operating system.
- the method can include: receiving an application request from a user device, where the application request can include an application identifier associated with a requested software application, the requested software application can be a software application to be provided by the host computer server, and the user device includes a device processor and a device memory; providing a resource library for the host computer server, where the resource library can define one or more resources required for providing each software application of the one or more software applications; identifying, from the resource library, a set of resources required for providing the requested software application based on the application identifier, where the set of resources can include at least one resource required for an application operating system to support the requested software application, the application operating system can be an operating system operable for providing the requested software application and the application operating system can be different from the host operating system; and providing the requested software
- the described methods can include operating the host processor to launch the set of resources as a containerized resource instance for providing the requested software application, where the containerized resource instance can be operationally isolated from one or more other containerized resource instances being provided by the host computer server.
- the described methods can include, prior to operating the host processor to launch the set of resources as the containerized resource instance for providing the requested software application, providing a session log for the host computer server, where the session log records one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, and the one or more active containerized resource instances can be containerized resource instances currently provided by the host computer server; determining, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, providing the requested software application with one of the at least one active containerized resource instance, otherwise, operating the host processor to launch the set of resources for providing the requested software application as a new containerized resource instance.
- the described methods can include providing an application interface at the host computer server, where the application interface can facilitate electronic communication between the one or more active containerized resource instances and the user device.
- the described methods can include allocating an application memory portion within the host memory for launching the set of resources, where the application memory portion can be dedicated for providing the requested software application and each containerized resource instance can be associated with a different application memory portion within the host memory; and launching the set of resources within the application memory portion.
- the application request can include, at least, a user identifier corresponding to a user account from which the application request was received
- the described methods can include providing a session log for the host computer server, where the session log can record the user identifier in association with the containerized resource instance providing the requested software application; and upon detecting the user device is not in electronic communication with the host computer server, continuing to provide the requested software application with the containerized resource instance for that user account.
- the described methods can include determining the requested software application is incompatible with the host operating system when at least one resource of the set of resources identified for the requested software application is inoperable at the host operating system; and if the requested software application is incompatible with the host operating system, then identifying an emulation application operable for providing the software application at the host operating system, where the emulation application can be operable for facilitating compatibility between the host operating system and the requested software application, otherwise, sending an error message to the user device to indicate the requested software application is unavailable.
- the described methods can include generating one or more resource templates, where each resource template can be a predefined resource set launchable by the host processor for providing at least one software application, and the predefined resource set can include one or more resources required for providing the at least one software application.
- a system for providing one or more software applications can include: at least one storage component for storing, at least, a host operating system and a resource library defining one or more resources required for providing each software application of the one or more software applications; and a host processor configured for operating the host operating system.
- the host processor can be configured to: receive an application request from a user device, where the application request can include an application identifier associated with a requested software application, and the requested software application can be a software application to be provided; identify, from the resource library, a set of resources required for providing the requested software application based on the application identifier, where the set of resources can include at least one resource required for an application operating system to support the requested software application, the application operating system can be an operating system operable for providing the requested software application and the application operating system can be different from the host operating system; and provide the requested software application with the identified set of resources.
- the at least one storage component can include a host memory for storing the host operating system and one or more storage components for storing the resource library.
- the one or more storage components may be physically separate from the host memory.
- the host processor can be configured to launch the set of resources as a containerized resource instance for providing the requested application, where the containerized resource instance can be operationally isolated from one or more other containerized resource instances being provided.
- the at least one storage component can include a session log for recording one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, where the one or more active containerized resource instances can be containerized resource instances currently provided by the host computer server; and the host processor can be configured, prior to launching the set of resources as the containerized resource instance for providing the requested software application, to: determine, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, provide the requested software application with one of the at least one active containerized resource instance, otherwise, the host processor is configured to launch the set of resources for providing the requested software application as a new containerized resource instance.
- the host processor can be configured to provide an application interface for facilitating electronic communication between the one or more active containerized resource instances and the user device.
- the host processor can be configured to: allocate an application memory portion within the at least one storage component for launching the set of resources, where the application memory portion can be dedicated for providing the requested software application and each containerized resource instance can be associated with a different application memory portion within the at least one storage component; and launch the set of resources within the application memory portion.
- the application request can include a user identifier corresponding to a user account from which the application request was received.
- the at least one storage component may then include a session log for recording the user identifier in association with the containerized resource instance providing the requested software application; and the host processor can be configured, upon detecting the user device is not in electronic communication with the system, to continue to provide the requested software application with the containerized resource instance for that user account.
- the host processor can be configured to: determine the requested software application is incompatible with the host operating system when the requested software application is operable on a software architecture different from a software architecture of the host operating system; and if the requested software application is incompatible with the host operating system, then identify an emulation application operable for providing the software application at the host operating system, where the emulation application can be operable for facilitating compatibility between the host operating system and the requested software application, otherwise, the host processor is configured to send an error message to the user device to indicate the requested software application is unavailable.
- the described systems can, in some embodiments, operate on a MicrosoftTM Windows architecture.
- the host processor can be configured to:
- each resource template can be a predefined resource set launchable by the host processor to provide at least one software application, and the predefined resource set can include one or more resources required for providing the at least one software application.
- the one or more resources identified in the resource library can include at least one of a binary file and a library file.
- the set of resources can include at least the requested software application.
- the one or more resource templates can, in some embodiments, include at least one resource template launchable by the host processor for providing the at least one software application on a Windows-based operating system.
- FIG. 1 is a block diagram illustrating a host computer system in communication with other components in accordance with an example embodiment
- FIG. 2 is a flowchart of an example method for providing one or more software applications
- FIGS. 3A and 3B are computer architecture diagrams of a host computer system in accordance with example embodiments
- FIG. 4 is a computer architecture diagram of an example implementation of the host computer system of FIG. 3A in accordance with an example embodiment
- FIG. 5 is a computer architecture diagram of another example implementation of the host computer system of FIG. 3A in accordance with yet another example embodiment.
- FIG. 6 is a computer architecture diagram of another example implementation of the host computer system of FIG. 3A in accordance with a further example embodiment.
- software applications can generally include any program file executable, or launchable, by a processor at a computer system for providing functionality to one or more user devices.
- the described systems described herein When the systems described herein receive an application request requesting a software application to be provided for a user device, the described systems can then operate to determine an application identifier from the application request and one or more resources required for providing the requested software application using the application identifier.
- the described systems can determine the required resources from a resource library that defines the resources required for providing various different software applications.
- the one or more resources, or set of resources, required for providing the software application can include system resources and/or application resources.
- System resources can include resources associated with an operating system configured for providing the software application.
- Application resources can include resources that are specific to providing the software application itself.
- the described systems can then operate to provide the requested software application with the identified set of resources.
- the described systems can likely use less computational and/or storage bandwidth for providing the software application in comparison with systems that implement complete instances of each operating system regardless of the set of resources required for providing the requested software application.
- the described systems may also provide the software applications by launching the set of resources in a containerized resource instance.
- the containerized resource instance can generally be operationally isolated from other containerized resource instances so that the operation of one containerized resource instance would not affect the operation of the other containerized resource instances. It may be possible for a containerized resource instance to be used for fulfilling multiple application requests, as will be described. As a result, further reduction in computational and/or storage bandwidth may be possible with the systems and methods described herein.
- the embodiments of the systems and methods described herein may be implemented in hardware or software, or a combination of both. These embodiments may be implemented in computer programs executing on programmable computers, each computer including at least one processor, a data storage system (including volatile memory or non-volatile memory or other data storage elements or a combination thereof), and at least one communication interface.
- the programmable computers (referred to below as computing devices) may be a server, network appliance, embedded device, computer expansion module, a personal computer, laptop, personal data assistant, cellular telephone, smart-phone device, tablet computer, a wireless device or any other computing device capable of being configured to carry out the methods described herein.
- the communication interface may be a network communication interface.
- the communication interface may be a software communication interface, such as those for inter-process communication (IPC).
- IPC inter-process communication
- there may be a combination of communication interfaces implemented as hardware, software, and combination thereof.
- Program code may be applied to input data to perform the functions described herein and to generate output information.
- the output information is applied to one or more output devices, in known fashion.
- Each program may be implemented in a high level procedural or object oriented programming and/or scripting language, or both, to communicate with a computer system.
- the programs may be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language.
- Each such computer program may be stored on a storage media or a device (e.g. ROM, magnetic disk, optical disc) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage media or device is read by the computer to perform the procedures described herein.
- Embodiments of the system may also be considered to be implemented as a non-transitory computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer to operate in a specific and predefined manner to perform the functions described herein.
- system, processes and methods of the described embodiments are capable of being distributed in a computer program product comprising a computer readable medium that bears computer usable instructions for one or more processors.
- the medium may be provided in various forms, including one or more diskettes, compact disks, tapes, chips, wireline transmissions, satellite transmissions, internet transmission or downloadings, magnetic and electronic storage media, digital and analog signals, and the like.
- the computer useable instructions may also be in various forms, including compiled and non-compiled code.
- FIG. 1 is an example block diagram 100 illustrating a host computer system 140 in communication with one or more components.
- the host computer system 140 may communicate with one or more user devices 110 , such as 110 A and 1106 , and a network storage component 130 via a network 120 . Similarly, each user device 110 may communicate with the network storage component 130 via the network 120 . It will be understood that, although two user devices, namely 110 A and 1106 , are illustrated in FIG. 1 , a fewer or a greater number of user devices 110 may communicate with the host computer system 140 via the network 120 .
- the host computer system 140 can include one or more components, such as a host processor 142 , a host interface component 144 , and a host storage component 146 .
- the host processor 142 , the host interface component 144 , and the host storage component 146 may be combined into a fewer number of components or may be separated into further components.
- the host processor 142 , the host interface component 144 , and the host storage component 146 may be implemented in software or hardware, or a combination of software and hardware.
- the host computer system 140 may be provided using one or more user devices 110 described herein.
- FIG. 1 only one host computer system 140 is shown in FIG. 1 . It will be understood that multiple host computer systems 140 may be distributed over a wide geographic area and be in electronic communication with each other, and with the other components shown in FIG. 1 , via the network 120 .
- the host processor 142 may generally be configured to control the operation of the host computer system 140 .
- the host processor 142 can initiate and manage the operations of each of the other components at the host computer system 140 .
- the host processor 142 may also determine, based on received and/or stored data, user preferences and/or predefined settings, how the host computer system 140 may generally operate.
- the host processor 142 may be any suitable processor(s), controller(s) and/or digital signal processor(s) that can provide sufficient processing power depending on the configuration, purposes and requirements of the host computer system 140 .
- the host processor 142 can include more than one processor with each processor being configured to perform different dedicated tasks.
- the host interface component 144 may be any interface that enables the host computer system 140 to communicate with other devices and systems.
- the host interface component 144 can include at least one of a serial port, a parallel port or a USB port.
- the host interface component 144 may also include at least one of an Internet, Local Area Network (LAN), Ethernet, Firewire, modem or digital subscriber line connection. Various combinations of these elements may be incorporated within the host interface component 144 .
- the host interface component 144 may receive an application request from the user device 110 via the network 120 .
- the host interface component 144 may include an application interface for facilitating electronic communication between any of the containerized resource instances being provided by the host computer system 140 and the user devices 110 .
- the application interface may include a manager application that can enable the user device 110 to access one or more active containerized resource instances.
- FIG. 3B which is an example computer architecture diagram 300 B for the host computer system 140 .
- an application interface 360 can be provided for managing access to the various different software applications 310 a to 310 d being provided by the host computer system 140 .
- the host storage component 146 can generally store data and/or resources associated with providing software applications by the host computer system 140 .
- the host storage component 146 can store resource data that define the resources required for providing each software application.
- One or more of the resources may be stored at the host storage component 146 , and/or at the network storage component 130 .
- Session data related to each application request and corresponding application session may also be stored in the host storage component 146 .
- the host storage component 146 can include one or more storage and/or database components for storing the various different data and/or resources.
- the host storage component 146 can include a resource library 150 , a session log 152 and a host memory 154 .
- the resource library 150 can include suitable data storage elements, such as one or more databases. Generally, the resource library 150 can store data for defining the resources required for providing the software applications. The resource library 150 may define the resources required for providing the software applications that the host computer system 140 can be configured to provide. For example, the host processor 142 may identify, from the resource library 150 , a set of resources required for providing a requested software application for the user device 110 . It will be understood that the resource library 150 may similarly be provided as another type of storage component.
- the resource library 150 may also store data related to resource templates.
- a resource template may generally include one or more resources grouped together as a predefined resource set, and can be launched by the host processor 142 for providing at least one software application.
- at least one resource template can be associated with providing a software application on a Microsoft WindowsTM-based operating system, such as, but not limited to, Windows 7TM, Windows XPTM, Windows VistaTM, Windows METM, Windows 8TM, etc.
- the resource library 150 can include a resource template for more commonly requested software applications. It is possible that some resource templates may include two or more resources that are more commonly required for providing various software applications, but require other resources in order to provide any software applications. The resource templates can, as a result, minimize the processing required by the host processor 142 for providing certain software applications.
- a resource template can include the resources required for providing the software application, CorelDRAWTM.
- the resource template can include the various resources required for providing CorelDRAW, such as certain binary files and library files associated with Windows 7, such as, but not limited to, the system binary file, “ntoskrnl.exe”, and the library file, “Win32k.dll”. It will be understood that the listed example files are merely for illustration and that other binary and library files may be required.
- the host computer system 140 receives an application request corresponding to CorelDRAW, the host processor 142 can determine from the resource library 150 that the resources required for providing CorelDRAW is the resource template, which includes the multiple resources required for providing CorelDRAW. As a result, the host processor 142 does not need to retrieve the various required resources individually.
- the session log 152 can include suitable data storage elements, such as one or more databases, for recording data associated with containerized resource instances that are active, or currently being provided by the host computer server 140 (referred herein as “active containerized resource instances”).
- the session log 152 may define the active containerized resource instances being currently provided by the host computer system 140 .
- An entry in the session log 152 can identify, for a particular software application being provided, the resources that have been launched for providing that software application, user data associated with a user account for which the software application is being provided (e.g., user identifier corresponding to the user account, etc.) and an application identifier corresponding to the software application being provided. It will be understood that other information may also be provided in the session log 152 .
- the host memory 154 may also store data and/or resources for providing the software application at the host computer system 140 .
- the host memory 154 can generally include RAM, ROM, one or more hard drives, or some other data storage elements, such as disk drives.
- the host memory 154 may store the host operating system that is operated by the host processor 142 .
- the host operating system can provide various basic operational processes for the host computer system 140 .
- the host operating system may include an operating system that operates on the Windows architecture, such as Windows Server 2008TM.
- the host memory 154 may be configured such that portions may also be allocated as application memory portions for providing the requested software applications, as will be described. Each application memory portion can be dedicated for that containerized resource instance.
- the host storage component 146 may also store other data and/or resources associated with providing software applications at the host computer system 140 .
- various user data may also be stored at the host storage component 146 .
- Each user is associated with a user account and each user account can be associated with a corresponding user identifier.
- the user account can include personal information (e.g., user name, contact information, etc.), user preferences associated with the host computer system 140 and other relevant user information.
- the host storage component 146 may, in some embodiments, also store the resources required for providing the software applications (e.g., binary files and library files associated with various different operating systems, resource templates defined for certain software applications and/or operating systems, etc.) as well as the software applications themselves.
- the host processor 142 may operate to apply the related software updates to the resources.
- the host computer system 140 may receive the software updates, or an update indication that software updates are available, from the software providers via the network 120 . In response to receiving the software updates or the update indication from the software providers, the host computer system 140 can determine an operational status of the relevant resource.
- the resource When the resource is not being used for providing a software application, the resource may have the operational status of available and the host processor 142 can then operate to update the available relevant resource.
- the resource When the resource is being used for providing a software application, the resource may have the operational status of unavailable and the host processor 142 can indicate in the resource library 150 that the software update is required for the resource. The host processor 142 can then operate to monitor the operational status of the relevant resource and to apply the software update in response to a change in the operational status to the available status.
- the network storage component 130 can also store certain data and/or resources associated with providing the software applications by the host computer system 140 .
- the network storage component 130 may store the resources that are less frequently required and/or data that is not as frequently accessed by the host computer system 140 and/or the user devices 110 in order to more effectively allocate the storage capacity of the host storage component 146 .
- the network storage component 130 may operate as a back-up storage component for the host computer system 140 , and receive, at predefined time intervals, data already stored at the host storage component 146 .
- the network storage component 130 may store data and resources that are common to the various host computer systems 140 .
- the user devices 110 may be any networked computing device operable to connect to the network 120 .
- a networked device is a device capable of communicating with other devices through a network such as the network 120 .
- a networked device may couple to the network 120 through a wired or wireless connection.
- These computing devices may include at least a processor and memory (not shown), and may be an electronic tablet device, a personal computer, workstation, server, portable computer, mobile device, personal digital assistant, laptop, smart phone, WAP phone, an interactive television, video display terminals, gaming consoles, and portable electronic devices or any combination of these.
- these computing devices may be a laptop, or a smartphone device equipped with a network adapter for connecting to the Internet.
- the connection request initiated from the user devices 110 may be initiated from a web browser application stored at the user device 110 and directed at a browser-based application at the host computer system 140 for receiving the connection request.
- the connection request may also include an authentication request for obtaining access to a user account at the host computer system 140 for a user operating the user device 110 A. The host computer system 140 can then receive application requests from the user device 110 A via the user account.
- the network 120 may be any network capable of carrying data, including the Internet, Ethernet, plain old telephone service (POTS) line, public switch telephone network (PSTN), integrated services digital network (ISDN), digital subscriber line (DSL), coaxial cable, fiber optics, satellite, mobile, wireless (e.g. Wi-Fi, WiMAX), SS7 signaling network, fixed line, local area network, wide area network, and others, including any combination of these, capable of interfacing with, and enabling communication between the host computer system 140 , the network storage component 130 and/or the user devices 110 .
- POTS plain old telephone service
- PSTN public switch telephone network
- ISDN integrated services digital network
- DSL digital subscriber line
- coaxial cable fiber optics
- satellite mobile
- wireless e.g. Wi-Fi, WiMAX
- SS7 signaling network fixed line, local area network, wide area network, and others, including any combination of these, capable of interfacing with, and enabling communication between the host computer system 140 , the network storage component 130 and/or the user devices 110
- FIG. 2 is a flowchart 200 of an example method for providing one or more software applications.
- FIGS. 3A to 6 illustrate various example computer architecture diagrams of the host computer system 140 .
- the host computer system 140 receives an application request from a user device, such as 110 A or 1108 .
- the application request can include various information, such as data related to the software application to be provided by the host computer system 140 .
- the application request can include an application identifier associated with the software application being requested.
- the application request may, in some embodiments, also include data associated with the user account from which the application request was provided to the host computer system 140 .
- the software application as identified in the application request can generally include any program that is executable, or launchable, by the host processor 142 for providing functionality to the user device 110 .
- Example software applications can include, but is not limited to, various text, image, and/or video processing tools or programs (e.g., Microsoft WORDTM, CorelDRAW, etc.), gaming applications, software development tools and/or applications, etc.
- the host computer system 140 provides the resource library 150 .
- the resource library 150 can be stored at the host storage component 146 and/or the network storage component 130 .
- the resource library 150 can generally define one or more resources required for providing each software application of the one or more software applications.
- the resources required for providing the software application can include application resources, which are specific to providing the software application, and/or system resources, which are specific to the software architecture and/or operating systems on which the software application is to be provided.
- application resources which are specific to providing the software application
- system resources which are specific to the software architecture and/or operating systems on which the software application is to be provided.
- a complete instance of an operating system and related system resources such as the desktop environment, are launched for providing any software applications.
- those computer systems typically launch resources that are unnecessary for providing the specific software application and also occupy unnecessary computational and storage bandwidth.
- the host computer system 140 can provide the software applications with fewer resources, as compared to the typical computer systems, since the host computer system 140 can provide a particular software application by launching the required resources for that software application, as determined from the resource library 150 .
- the resources required for providing a software application can include one or more binary files and/or one or more library files.
- Each of the binary file and the library file can be specific to a software architecture, such as Windows, and/or an application operating system (e.g., Windows 7, Windows XP, etc.).
- the application operating system is an operating system for supporting the requested software application, and is different from the host operating system.
- the host operating system is a basic operating system for providing basic functionalities, such as file systems, at the host computer system 140 (e.g., Windows Server 2008) whereas the application operating systems are configured for providing various functionalities to the user devices 110 through the software applications (e.g., Windows 7).
- the host operating system can generally provide a kernel that can be common to the various application operating systems and on which the application operating systems can be provided.
- a software application may be designed for the Windows software architecture and configured to be compiled with Microsoft's Visual C++TM compiler.
- the resource library 150 can indicate that the resources required for providing that software application includes, at least, library files for the Visual C+ compiler, such as C-style input/output calls and/or C-style memory allocation.
- Another example software application may also be designed for the Windows software architecture but configured for another compiler, such as compiler based on C# or another Microsoft .NETTM language.
- the resource library 150 can indicate that the resources required include, at least, the library files within the Microsoft .NET framework, which are different from the resources required for providing the software application configured for the Visual C++ compiler.
- the host computer system 140 identifies, from the resource library 150 , a set of resources required for providing the requested software application based on the application identifier.
- the host processor 142 can operate to determine, from the resource library 150 , the one or more resources, or the set of resources, required for providing the software application.
- FIG. 3A is an example computer architecture diagram 300 A for the host computer system 140 .
- the host computer system 140 includes the host operating system 340 and host hardware components 350 .
- the host hardware components 350 can include hardware components for supporting the operation of the host computer system 140 , such as the host processor 142 and the host storage component 146 . It will be understood that, depending on the host computer system 140 , other hardware components may also be provided at the host computer system 140 , such as sounds cards, video cards, optical drives, etc.
- the host operating system 340 can provide basic operational processes and functionality for the host computer system 140 .
- Example functionalities can include providing a file system for the host storage component 146 , communicating with the host hardware components 350 , communicating with the network 120 via the host interface component 144 (e.g., a network printer, etc.) and other operations associated with the various containerized resource instances that can be provided by the host computer system 140 .
- the host computer system 140 can operate to provide one or more software applications 310 , such as “Application A” 310 a, “Application B” 310 b, “Application C” 310 c, and “Application D” 310 d.
- the host computer system 140 generally requires resources in addition to the host operating system 340 in order to provide the software applications 310 .
- the additional resources may be specific to the requirements of the software applications 310 and/or the software architecture on which the software applications 310 are to be launched.
- the host computer system 140 may operate to provide a fewer or greater number of software applications 310 .
- the number of software applications 310 provided by the host computer system 140 may be limited by the computational and/or storage capacities of the host computer system 140 .
- the host computer system 140 can determine from the resource library 150 that providing the software application 310 a requires the resources in the resource set ‘I’ 320 ( i ). To provide the software applications 310 b and 310 c, the host computer system 140 can determine from the resource library 150 that the resources in the resource set ‘II’ 320 ( ii ) can be used for providing both software applications 310 b and 310 c. It is possible that software application 310 a is configured for the same software architecture as software application 310 b, but due to differences in the resources required for software application 310 a and software application 310 b, a different resource instance is provided for software application 310 b.
- the host computer system 140 can determine from the resource library 150 that the software application 310 d is designed for a software architecture that is incompatible with the software architecture of the host operating system 340 . That is, the software application 310 d can be incompatible with the host operating system 340 when at least one resource of the resources 322 defined in the resource library 150 is inoperable at the host operating system 340 .
- the software application 310 d may be configured for operation on AndroidTM but the host operating system 340 may be Windows-based.
- the host processor 142 can then determine that an emulation application, such as 324 , is required for facilitating compatibility between the host operating system 340 and the software application 310 d since at least one resource of the resources 322 is inoperable on the host operating system 340 .
- the emulation application 324 and the resources 322 may then form the resource set 320 ( iii ) to be launched by the host processor 142 for providing the software application 310 d.
- the emulation application 324 may be stored at the host storage component 146 and/or the network storage component 130 .
- the emulation application 324 may operate to facilitate compatibility between specific types of operating systems. For example, one emulation application 324 may facilitate compatibility between only a Windows-based system and an Android-based system, whereas another emulation application 324 may facilitate compatibility between a Windows-based system and both an Android-based system and a Mac OSX-based system.
- the emulation application 324 may be operable for providing a virtual platform using various virtualization techniques and/or tools.
- the virtual platform can operate as an interface tool between different software architectures, such as, but limited to, variations of LinuxTM, variations of Programmed Data Processors (PDP) architectures and other types of mainframe operating systems.
- different software architectures such as, but limited to, variations of LinuxTM, variations of Programmed Data Processors (PDP) architectures and other types of mainframe operating systems.
- the emulation application 324 required for facilitating compatibility may not be available.
- the host processor 142 and the host interface component 144 may operate to send an error message to the corresponding user device 110 via the network 120 to indicate that the requested software application 310 is unavailable.
- FIG. 3B illustrates another example computer architecture diagram 300 B for the host computer system 140 .
- the computer architecture diagram 300 B shown in FIG. 3B is generally similar to the computer architecture diagram 300 A of FIG. 3A except the computer architecture diagram 300 B includes the application interface 360 .
- the application interface 360 can operate to manage access to the various different software applications 310 a to 310 d being provided by the host computer system 140 .
- the application interface 360 can include a manager application that operates to track the various different software applications being provided.
- the manager application may be operated by the host processor 142 for maintaining the session log 152 and also facilitating access to the various software applications 310 .
- the host computer system 140 may provide the user device 110 A with access to both software applications 310 a and 310 b.
- the software applications 310 a and 310 b may be associated with different operating systems.
- the software application 310 a may be associated with Windows 7 and the software application 310 b may be associated with Windows 8.
- Access to both software applications 310 a and 310 b may be desirable for a user operating the user device 110 A to facilitate the migration of user data from an older operating system (e.g., Windows 7) to a new operating system (e.g., Windows 8TM).
- an older operating system e.g., Windows 7
- a new operating system e.g., Windows 8TM
- the host computer system 140 provides the requested software application 310 with the set of resources 320 identified at 230 .
- the host processor 142 can proceed to provide the software application 310 for the user device 110 using the identified set of resources 320 .
- the host processor 142 may, in some embodiments, operate to launch the identified set of resources as a containerized resource instance.
- the example computer architecture diagram 300 A for the host computer system 140 illustrates three different containerized resource instances 302 ( i ), 302 ( ii ) and 302 ( iii ).
- Each containerized resource instance 302 generally corresponds to a launched instance of the set of resources 320 required for providing a corresponding software application 310 .
- a containerized resource instance 302 may also refer to a launched instance of the software application 310 .
- each containerized resource instance 302 can be operationally isolated from one or more other containerized resource instances 302 being provided by the host computer system 140 so that the operations conducted by the host processor 142 for one containerized resource instance, such as 302 ( i ), will not affect the operations conducted by the host processor 142 for another containerized resource instance, such as 302 ( ii ). For example, if the containerized resource instance 302 ( i ) is terminated due to an error in one of the resources in the corresponding resource set 420 ( i ), the operation of the containerized resource instances 302 ( ii ) and 302 ( iii ) can continue as long as no failure errors occur in their respective resource sets 320 ( ii ) and 320 ( iii ).
- the host processor 142 can allocate a portion of the host memory 154 to be dedicated for providing that software application 310 .
- the allocated portion of the host memory 154 may be referred to as an application memory portion.
- the host processor 142 can then provide the software application 310 by launching the corresponding set of resources 320 within the application memory portion.
- the host computer system 140 can provide the software applications 310 without launching unnecessary resources and as a result, reduce use of computational and processing bandwidth.
- the host computer system 140 may provide an enhanced user experience for the various users operating the user devices 110 . No matter how reliable an electronic communication is between the user device 110 and the host computer system 140 , it may be possible for a user device 110 to lose electronic communication with the host computer system 140 while the host computer system 140 is providing the software application 310 to the user device 110 . With the containerized resource instances 302 , certain memory portions and possibly other components at the host computer system 140 are dedicated for providing the software application 310 and thus, the host computer system 140 can continue to provide the containerized resource instances 302 for the corresponding user account even when the host computer system 140 detects that a corresponding user device 110 is no longer in electronic communication with the host computer system 140 .
- the host computer system 140 can continue to provide the containerized resource instance 302 for a predefined time period and/or until a predefined event occurs.
- the predefined time periods and predefined event may vary according to the user preferences corresponding to a particular user account and/or system settings.
- a system setting may indicate that the host computer system 140 will terminate any containerized resource instance 302 when the corresponding user device 110 has lost electronic communication with the host computer system 140 for more than an hour.
- a user preference may indicate that the host computer system 140 should never terminate any containerized resource instance 302 until a specific input is received from that user account.
- the host computer system 140 may be configured to prefer the system setting over user preferences, or vice versa, in the case of conflicting settings.
- the host computer system 140 can reinstate access to the previous one or more containerized resource instances 302 for the user device 110 .
- FIG. 4 is another example computer architecture diagram 400 for the host computer system 140 . Similar to the computer architecture diagram 300 in FIG. 3A , the computer architecture diagram 400 includes the host operating system 340 and the host hardware components 350 .
- the host computer system 140 operates to provide two different containerized resource instances, namely 402 ( i ) and 402 ( ii ).
- Each containerized resource instance 402 ( i ), 402 ( ii ) is associated with a different software application, Microsoft WORD (software application 410 a ) and Gaming XYZ application (software application 410 b ), respectively.
- the host computer system 140 can provide the software applications 410 a, 410 b in response to one or more application requests received from one or more user devices 110 .
- an application request received from one user device, such as 110 A can correspond to both software applications 410 a and 410 b.
- an application request corresponding to the software application 410 a can be received from the user device 110 A while an application request corresponding to the software application 410 b can be received from the user device 110 B.
- the host processor 142 can determine the application identifier in the application request corresponds to the software application 410 a, Microsoft WORD. The host processor can then proceed to determine, from the resource library 150 , that the resources required for providing software application 410 a is the resource set 420 ( i ).
- the resource set 420 ( i ) determined for the software application 410 a is associated with the application operating system, Windows 7.
- the host processor 142 can determine that the software application 410 a may be provided with resources associated with multiple different application operating systems.
- the software application 410 a Microsoft WORD
- the host processor 142 may select one set of resource based on predefined system settings or user preferences, or provide a selection interface for receiving a user selection of one of the resource sets from the user device 110 .
- the host processor 142 is operated to launch the resource set 420 ( i ) as the containerized resource instance 402 ( i ) for providing the software application 410 a.
- the host processor 142 can proceed to determine that the resource set 420 ( ii ) is required for providing the software application 410 b, and to launch the resource set 420 ( ii ) as the containerized resource instance 402 ( ii ).
- the host computer system 140 can operate to provide the software applications 410 a and 410 b so that the operation of the containerized resource instance 402 ( i ) will not affect the operation of the containerized resource instance 402 ( ii ).
- each containerized resource instance 402 ( i ), 402 ( ii ) can be associated with a different application memory portion within the host memory 154 . It may also be possible to dedicate certain processing bandwidth of the host processor 142 for each of the containerized resource instances 402 ( i ) and 402 ( ii ).
- FIG. 5 is yet another example computer architecture diagram 500 .
- the computer architecture diagram 500 continues from the example shown in FIG. 4 .
- the host computer system 140 can also store data associated with each of these containerized resource instances 402 ( i ) and 402 ( ii ) in the session log 152 .
- These containerized resource instances 402 ( i ) and 402 ( ii ) can also be referred to as active containerized resource instances since the host computer system 140 is currently providing them for the user account associated with the respective user devices 110 A, 1106 .
- Each entry in the session log 152 can include various information associated with each active containerized resource instance 402 , such as the resources launched for that containerized resource instance 402 and the associated user identifier.
- the host processor 142 can track and review the active containerized resource instances 402 .
- the host processor 142 may determine from the session log 152 at least one of the active containerized resource instance 402 that can be used to fulfil another application request. That is, if the resources launched for one of the active containerized resource instances 402 correspond to a set of resources required for providing a newly requested software application 310 , the host processor 142 may provide the newly requested software application 310 with that active containerized resource instance 402 . Otherwise, the host processor 142 can proceed to provide the newly requested software application 310 by launching the corresponding set of resources 320 as a new containerized resource instance 302 .
- the host computer system 140 may receive another application request corresponding also to the software application 410 a, Microsoft WORD, but from another user account via the user device 110 B.
- the host processor 142 may determine, from the session log 152 , that the active containerized resource instance 402 ( i ) is also associated with the resource set 420 ( i ). As described with respect to FIG.
- the host computer system 140 is currently providing the software application 410 a (Microsoft WORD) with the containerized resource instance 402 ( i ). Therefore, from the session log 152 , the host processor 142 can determine that the software application 410 a can also be provided for the user device 110 B using the containerized resource instance 402 ( i ). As shown in FIG. 5 , different user sessions can be provided in the containerized resource instance 402 ( i )—a user session 512 can be provided for the user device 110 A and a user session 514 can be provided for the user device 110 B, in this example.
- a user session 512 can be provided for the user device 110 A
- a user session 514 can be provided for the user device 110 B, in this example.
- Another example application request received by the host computer system 140 may be associated with another software application 510 a, such as “Word Editor Application”.
- the host processor 142 may determine that the resource set 320 required for providing the software application 510 a is the resource set 420 ( i ). Before launching the resource set 420 ( i ) as a new containerized resource instance 302 , the host processor 142 may determine that the active containerized resource instance 402 ( i ) is associated with resources within the resource set 420 ( i ), and can therefore provide the software application 510 a with the active containerized resource instance 402 ( i ).
- the host computer system 140 may receive another application request associated with a software application 510 b, such a “Video Editor Application”. From the resource library 150 , the host processor 142 may determine that the resource set required for providing the software application 510 b is the resource set 520 . Although, like the resource set 420 ( i ), the resource set 520 is also associated with the Windows 7 software architecture, the resource set 520 includes one or more resources that are specific to the software application 510 b that are not present in the resource set 420 ( i ).
- the resource set 520 may include resources for encoding and/or decoding multimedia video files, which are required for providing the software application 510 b (a video editor application), but are not required for providing the software application 510 a (a word editor application). Therefore, the host processor 142 can proceed to provide the software application 510 b by launching the resource set 520 as a new containerized resource instance 502 .
- FIG. 6 is another example computer architecture diagram 600 and, like the computer architecture diagram 500 of FIG. 5 , the computer architecture diagram 600 continues from the example shown in FIG. 4 .
- the host computer system 140 may receive an application request associated with a software application that is configured for an application operating system that is incompatible with the host operating system 340 .
- the host operating system 340 is Window Server 2008
- the application operating system for a newly requested software application may be Android.
- the resources required for the newly requested software application are, therefore, inoperable on the host operating system 340 of this example.
- the host computer system 140 may receive an application request associated with a software application 610 configured for the Android software architecture, such as “Android's Messenger Application”. From the resource library 150 , the host processor 142 may determine the resources 622 required for providing the software application 610 . The host processor 142 may also determine from the resource library 150 that, at least one of the resources 622 is inoperable on the host operating system 340 (Windows Server 2008) since the software application 610 is configured for Android. The host processor 142 can then determine that the emulation application 624 is required for facilitating compatibility between the software application 610 and the host operating system 340 . The resource set 620 for providing the software application 610 can include the resources 622 and the emulation application 624 .
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
- This application is a continuation of U.S. patent application Ser. No. 14/600,246 filed on Jan. 20, 2015, entitled “METHODS AND SYSTEMS FOR PROVIDING SOFTWARE APPLICATIONS” which is incorporated herein by reference.
- The described embodiments relate to methods and systems for providing software applications.
- Computer systems generally require, at least, an operating system and certain other system resources (hardware and/or software) to provide applications to users. Operating systems can generally operate as an intermediary between the system resources at the computer systems and the applications. Different operating systems are, therefore, available for different computer architectures.
- Operating systems are generally configured to manage, at least, all the system resources at a computer system. Upon receipt of any application request, the computer system will typically implement the operating system in full even if only a subset of the functionality of the operating system is required for providing the requested application. Consequently, to provide the requested application, a computer system is likely to launch many unnecessary resources, such as a desktop environment, and requiring use of system computational and/or storage bandwidth for those unnecessary resources.
- The various embodiments described herein generally relate to methods (and associated systems configured to implement the methods) for providing one or more software applications.
- In accordance with some embodiments, there is provided a method for providing one or more software applications at a host computer server. The host computer server can include, at least, a host memory for storing a host operating system and a host processor configured for operating the host operating system. The method can include: receiving an application request from a user device, where the application request can include an application identifier associated with a requested software application, the requested software application can be a software application to be provided by the host computer server, and the user device includes a device processor and a device memory; providing a resource library for the host computer server, where the resource library can define one or more resources required for providing each software application of the one or more software applications; identifying, from the resource library, a set of resources required for providing the requested software application based on the application identifier, where the set of resources can include at least one resource required for an application operating system to support the requested software application, the application operating system can be an operating system operable for providing the requested software application and the application operating system can be different from the host operating system; and providing the requested software application with the identified set of resources.
- In some embodiments, the described methods can include operating the host processor to launch the set of resources as a containerized resource instance for providing the requested software application, where the containerized resource instance can be operationally isolated from one or more other containerized resource instances being provided by the host computer server.
- In some embodiments, the described methods can include, prior to operating the host processor to launch the set of resources as the containerized resource instance for providing the requested software application, providing a session log for the host computer server, where the session log records one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, and the one or more active containerized resource instances can be containerized resource instances currently provided by the host computer server; determining, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, providing the requested software application with one of the at least one active containerized resource instance, otherwise, operating the host processor to launch the set of resources for providing the requested software application as a new containerized resource instance.
- In some embodiments, the described methods can include providing an application interface at the host computer server, where the application interface can facilitate electronic communication between the one or more active containerized resource instances and the user device.
- In some embodiments, the described methods can include allocating an application memory portion within the host memory for launching the set of resources, where the application memory portion can be dedicated for providing the requested software application and each containerized resource instance can be associated with a different application memory portion within the host memory; and launching the set of resources within the application memory portion.
- In some embodiments, the application request can include, at least, a user identifier corresponding to a user account from which the application request was received, and the described methods can include providing a session log for the host computer server, where the session log can record the user identifier in association with the containerized resource instance providing the requested software application; and upon detecting the user device is not in electronic communication with the host computer server, continuing to provide the requested software application with the containerized resource instance for that user account.
- In some embodiments, the described methods can include determining the requested software application is incompatible with the host operating system when at least one resource of the set of resources identified for the requested software application is inoperable at the host operating system; and if the requested software application is incompatible with the host operating system, then identifying an emulation application operable for providing the software application at the host operating system, where the emulation application can be operable for facilitating compatibility between the host operating system and the requested software application, otherwise, sending an error message to the user device to indicate the requested software application is unavailable.
- In some embodiments, the described methods can include generating one or more resource templates, where each resource template can be a predefined resource set launchable by the host processor for providing at least one software application, and the predefined resource set can include one or more resources required for providing the at least one software application.
- In accordance with some embodiments, there is provided a system for providing one or more software applications. The system can include: at least one storage component for storing, at least, a host operating system and a resource library defining one or more resources required for providing each software application of the one or more software applications; and a host processor configured for operating the host operating system. The host processor can be configured to: receive an application request from a user device, where the application request can include an application identifier associated with a requested software application, and the requested software application can be a software application to be provided; identify, from the resource library, a set of resources required for providing the requested software application based on the application identifier, where the set of resources can include at least one resource required for an application operating system to support the requested software application, the application operating system can be an operating system operable for providing the requested software application and the application operating system can be different from the host operating system; and provide the requested software application with the identified set of resources.
- In accordance with some embodiments, the at least one storage component can include a host memory for storing the host operating system and one or more storage components for storing the resource library. The one or more storage components may be physically separate from the host memory.
- In accordance with some embodiments, the host processor can be configured to launch the set of resources as a containerized resource instance for providing the requested application, where the containerized resource instance can be operationally isolated from one or more other containerized resource instances being provided.
- In accordance with some embodiments, the at least one storage component can include a session log for recording one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, where the one or more active containerized resource instances can be containerized resource instances currently provided by the host computer server; and the host processor can be configured, prior to launching the set of resources as the containerized resource instance for providing the requested software application, to: determine, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, provide the requested software application with one of the at least one active containerized resource instance, otherwise, the host processor is configured to launch the set of resources for providing the requested software application as a new containerized resource instance.
- In accordance with some embodiments, the host processor can be configured to provide an application interface for facilitating electronic communication between the one or more active containerized resource instances and the user device.
- In accordance with some embodiments, the host processor can be configured to: allocate an application memory portion within the at least one storage component for launching the set of resources, where the application memory portion can be dedicated for providing the requested software application and each containerized resource instance can be associated with a different application memory portion within the at least one storage component; and launch the set of resources within the application memory portion.
- In accordance with some embodiments, the application request can include a user identifier corresponding to a user account from which the application request was received. The at least one storage component may then include a session log for recording the user identifier in association with the containerized resource instance providing the requested software application; and the host processor can be configured, upon detecting the user device is not in electronic communication with the system, to continue to provide the requested software application with the containerized resource instance for that user account.
- In accordance with some embodiments, the host processor can be configured to: determine the requested software application is incompatible with the host operating system when the requested software application is operable on a software architecture different from a software architecture of the host operating system; and if the requested software application is incompatible with the host operating system, then identify an emulation application operable for providing the software application at the host operating system, where the emulation application can be operable for facilitating compatibility between the host operating system and the requested software application, otherwise, the host processor is configured to send an error message to the user device to indicate the requested software application is unavailable.
- The described systems can, in some embodiments, operate on a Microsoft™ Windows architecture.
- In accordance with some embodiments, the host processor can be configured to:
- generate one or more resource templates, where each resource template can be a predefined resource set launchable by the host processor to provide at least one software application, and the predefined resource set can include one or more resources required for providing the at least one software application.
- In some embodiments, the one or more resources identified in the resource library can include at least one of a binary file and a library file.
- In some embodiments, the set of resources can include at least the requested software application.
- The one or more resource templates can, in some embodiments, include at least one resource template launchable by the host processor for providing the at least one software application on a Windows-based operating system.
- Several embodiments will now be described in detail with reference to the drawings, in which:
-
FIG. 1 is a block diagram illustrating a host computer system in communication with other components in accordance with an example embodiment; -
FIG. 2 is a flowchart of an example method for providing one or more software applications; -
FIGS. 3A and 3B are computer architecture diagrams of a host computer system in accordance with example embodiments; -
FIG. 4 is a computer architecture diagram of an example implementation of the host computer system ofFIG. 3A in accordance with an example embodiment; -
FIG. 5 is a computer architecture diagram of another example implementation of the host computer system ofFIG. 3A in accordance with yet another example embodiment; and -
FIG. 6 is a computer architecture diagram of another example implementation of the host computer system ofFIG. 3A in accordance with a further example embodiment. - The drawings, described below, are provided for purposes of illustration, and not of limitation, of the aspects and features of various examples of embodiments described herein. The drawings are not intended to limit the scope of the teachings in any way. For simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. The dimensions of some of the elements may be exaggerated relative to other elements for clarity. It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements or steps.
- The various embodiments described herein generally relate to methods (and related systems) for providing one or more software applications. As will be described, software applications can generally include any program file executable, or launchable, by a processor at a computer system for providing functionality to one or more user devices.
- When the systems described herein receive an application request requesting a software application to be provided for a user device, the described systems can then operate to determine an application identifier from the application request and one or more resources required for providing the requested software application using the application identifier. The described systems can determine the required resources from a resource library that defines the resources required for providing various different software applications. The one or more resources, or set of resources, required for providing the software application can include system resources and/or application resources. System resources can include resources associated with an operating system configured for providing the software application. Application resources can include resources that are specific to providing the software application itself.
- After determining the set of resources required for providing the requested software application, the described systems can then operate to provide the requested software application with the identified set of resources. By providing the software applications with the required set of resources, the described systems can likely use less computational and/or storage bandwidth for providing the software application in comparison with systems that implement complete instances of each operating system regardless of the set of resources required for providing the requested software application.
- The described systems may also provide the software applications by launching the set of resources in a containerized resource instance. As will be described, the containerized resource instance can generally be operationally isolated from other containerized resource instances so that the operation of one containerized resource instance would not affect the operation of the other containerized resource instances. It may be possible for a containerized resource instance to be used for fulfilling multiple application requests, as will be described. As a result, further reduction in computational and/or storage bandwidth may be possible with the systems and methods described herein.
- It will be appreciated that numerous specific details are set forth in order to provide a thorough understanding of the example embodiments described herein. However, it will be understood by those of ordinary skill in the art that the embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the embodiments described herein. Furthermore, this description and the drawings are not to be considered as limiting the scope of the embodiments described herein in any way, but rather as merely describing the implementation of the various embodiments described herein.
- In addition, as used herein, the wording “and/or” is intended to represent an inclusive-or. That is, “X and/or Y” is intended to mean X or Y or both, for example. As a further example, “X, Y, and/or Z” is intended to mean X or Y or Z or any combination thereof.
- The embodiments of the systems and methods described herein may be implemented in hardware or software, or a combination of both. These embodiments may be implemented in computer programs executing on programmable computers, each computer including at least one processor, a data storage system (including volatile memory or non-volatile memory or other data storage elements or a combination thereof), and at least one communication interface. For example and without limitation, the programmable computers (referred to below as computing devices) may be a server, network appliance, embedded device, computer expansion module, a personal computer, laptop, personal data assistant, cellular telephone, smart-phone device, tablet computer, a wireless device or any other computing device capable of being configured to carry out the methods described herein.
- In some embodiments, the communication interface may be a network communication interface. In embodiments in which elements are combined, the communication interface may be a software communication interface, such as those for inter-process communication (IPC). In still other embodiments, there may be a combination of communication interfaces implemented as hardware, software, and combination thereof.
- Program code may be applied to input data to perform the functions described herein and to generate output information. The output information is applied to one or more output devices, in known fashion.
- Each program may be implemented in a high level procedural or object oriented programming and/or scripting language, or both, to communicate with a computer system. However, the programs may be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language. Each such computer program may be stored on a storage media or a device (e.g. ROM, magnetic disk, optical disc) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage media or device is read by the computer to perform the procedures described herein. Embodiments of the system may also be considered to be implemented as a non-transitory computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer to operate in a specific and predefined manner to perform the functions described herein.
- Furthermore, the system, processes and methods of the described embodiments are capable of being distributed in a computer program product comprising a computer readable medium that bears computer usable instructions for one or more processors. The medium may be provided in various forms, including one or more diskettes, compact disks, tapes, chips, wireline transmissions, satellite transmissions, internet transmission or downloadings, magnetic and electronic storage media, digital and analog signals, and the like. The computer useable instructions may also be in various forms, including compiled and non-compiled code.
- Reference is first made to
FIG. 1 , which is an example block diagram 100 illustrating ahost computer system 140 in communication with one or more components. - The
host computer system 140 may communicate with one or more user devices 110, such as 110A and 1106, and anetwork storage component 130 via anetwork 120. Similarly, each user device 110 may communicate with thenetwork storage component 130 via thenetwork 120. It will be understood that, although two user devices, namely 110A and 1106, are illustrated inFIG. 1 , a fewer or a greater number of user devices 110 may communicate with thehost computer system 140 via thenetwork 120. - As shown in
FIG. 1 , thehost computer system 140 can include one or more components, such as ahost processor 142, ahost interface component 144, and a host storage component 146. Thehost processor 142, thehost interface component 144, and the host storage component 146 may be combined into a fewer number of components or may be separated into further components. Also, thehost processor 142, thehost interface component 144, and the host storage component 146 may be implemented in software or hardware, or a combination of software and hardware. - In some embodiments, the
host computer system 140 may be provided using one or more user devices 110 described herein. - Also, for ease of exposition, only one
host computer system 140 is shown inFIG. 1 . It will be understood that multiplehost computer systems 140 may be distributed over a wide geographic area and be in electronic communication with each other, and with the other components shown inFIG. 1 , via thenetwork 120. - The
host processor 142 may generally be configured to control the operation of thehost computer system 140. For example, thehost processor 142 can initiate and manage the operations of each of the other components at thehost computer system 140. Thehost processor 142 may also determine, based on received and/or stored data, user preferences and/or predefined settings, how thehost computer system 140 may generally operate. - The
host processor 142 may be any suitable processor(s), controller(s) and/or digital signal processor(s) that can provide sufficient processing power depending on the configuration, purposes and requirements of thehost computer system 140. In some embodiments, thehost processor 142 can include more than one processor with each processor being configured to perform different dedicated tasks. - The
host interface component 144 may be any interface that enables thehost computer system 140 to communicate with other devices and systems. In some embodiments, thehost interface component 144 can include at least one of a serial port, a parallel port or a USB port. Thehost interface component 144 may also include at least one of an Internet, Local Area Network (LAN), Ethernet, Firewire, modem or digital subscriber line connection. Various combinations of these elements may be incorporated within thehost interface component 144. For example, thehost interface component 144 may receive an application request from the user device 110 via thenetwork 120. - Also, the
host interface component 144 may include an application interface for facilitating electronic communication between any of the containerized resource instances being provided by thehost computer system 140 and the user devices 110. The application interface may include a manager application that can enable the user device 110 to access one or more active containerized resource instances. Briefly referring toFIG. 3B , which is an example computer architecture diagram 300B for thehost computer system 140. As shown inFIG. 3B , anapplication interface 360 can be provided for managing access to the variousdifferent software applications 310 a to 310 d being provided by thehost computer system 140. - The host storage component 146 can generally store data and/or resources associated with providing software applications by the
host computer system 140. For example, the host storage component 146 can store resource data that define the resources required for providing each software application. One or more of the resources may be stored at the host storage component 146, and/or at thenetwork storage component 130. Session data related to each application request and corresponding application session may also be stored in the host storage component 146. - Depending on the requirements and design of the
host computer system 140, the host storage component 146 can include one or more storage and/or database components for storing the various different data and/or resources. For example, as shown inFIG. 1 , the host storage component 146 can include aresource library 150, asession log 152 and ahost memory 154. - The
resource library 150 can include suitable data storage elements, such as one or more databases. Generally, theresource library 150 can store data for defining the resources required for providing the software applications. Theresource library 150 may define the resources required for providing the software applications that thehost computer system 140 can be configured to provide. For example, thehost processor 142 may identify, from theresource library 150, a set of resources required for providing a requested software application for the user device 110. It will be understood that theresource library 150 may similarly be provided as another type of storage component. - In some embodiments, the
resource library 150 may also store data related to resource templates. A resource template may generally include one or more resources grouped together as a predefined resource set, and can be launched by thehost processor 142 for providing at least one software application. In some embodiments, at least one resource template can be associated with providing a software application on a Microsoft Windows™-based operating system, such as, but not limited to,Windows 7™, Windows XP™, Windows Vista™, Windows ME™, Windows 8™, etc. - Instead of defining the resources required for providing a particular software application individually, the
resource library 150 can include a resource template for more commonly requested software applications. It is possible that some resource templates may include two or more resources that are more commonly required for providing various software applications, but require other resources in order to provide any software applications. The resource templates can, as a result, minimize the processing required by thehost processor 142 for providing certain software applications. - For example, a resource template can include the resources required for providing the software application, CorelDRAW™. The resource template can include the various resources required for providing CorelDRAW, such as certain binary files and library files associated with
Windows 7, such as, but not limited to, the system binary file, “ntoskrnl.exe”, and the library file, “Win32k.dll”. It will be understood that the listed example files are merely for illustration and that other binary and library files may be required. When thehost computer system 140 receives an application request corresponding to CorelDRAW, thehost processor 142 can determine from theresource library 150 that the resources required for providing CorelDRAW is the resource template, which includes the multiple resources required for providing CorelDRAW. As a result, thehost processor 142 does not need to retrieve the various required resources individually. - The
session log 152 can include suitable data storage elements, such as one or more databases, for recording data associated with containerized resource instances that are active, or currently being provided by the host computer server 140 (referred herein as “active containerized resource instances”). Thesession log 152 may define the active containerized resource instances being currently provided by thehost computer system 140. An entry in thesession log 152 can identify, for a particular software application being provided, the resources that have been launched for providing that software application, user data associated with a user account for which the software application is being provided (e.g., user identifier corresponding to the user account, etc.) and an application identifier corresponding to the software application being provided. It will be understood that other information may also be provided in thesession log 152. - The
host memory 154 may also store data and/or resources for providing the software application at thehost computer system 140. Thehost memory 154 can generally include RAM, ROM, one or more hard drives, or some other data storage elements, such as disk drives. Thehost memory 154 may store the host operating system that is operated by thehost processor 142. The host operating system can provide various basic operational processes for thehost computer system 140. In some embodiments, the host operating system may include an operating system that operates on the Windows architecture, such as Windows Server 2008™. - Also, the
host memory 154 may be configured such that portions may also be allocated as application memory portions for providing the requested software applications, as will be described. Each application memory portion can be dedicated for that containerized resource instance. - Although not explicitly shown in
FIG. 1 , the host storage component 146 may also store other data and/or resources associated with providing software applications at thehost computer system 140. For example, various user data may also be stored at the host storage component 146. Each user is associated with a user account and each user account can be associated with a corresponding user identifier. The user account can include personal information (e.g., user name, contact information, etc.), user preferences associated with thehost computer system 140 and other relevant user information. - The host storage component 146 may, in some embodiments, also store the resources required for providing the software applications (e.g., binary files and library files associated with various different operating systems, resource templates defined for certain software applications and/or operating systems, etc.) as well as the software applications themselves. When the resources are not being used by the
host computer system 140 for providing software application(s), thehost processor 142 may operate to apply the related software updates to the resources. Thehost computer system 140 may receive the software updates, or an update indication that software updates are available, from the software providers via thenetwork 120. In response to receiving the software updates or the update indication from the software providers, thehost computer system 140 can determine an operational status of the relevant resource. When the resource is not being used for providing a software application, the resource may have the operational status of available and thehost processor 142 can then operate to update the available relevant resource. When the resource is being used for providing a software application, the resource may have the operational status of unavailable and thehost processor 142 can indicate in theresource library 150 that the software update is required for the resource. Thehost processor 142 can then operate to monitor the operational status of the relevant resource and to apply the software update in response to a change in the operational status to the available status. - Referring still to
FIG. 1 , thenetwork storage component 130 can also store certain data and/or resources associated with providing the software applications by thehost computer system 140. For example, thenetwork storage component 130 may store the resources that are less frequently required and/or data that is not as frequently accessed by thehost computer system 140 and/or the user devices 110 in order to more effectively allocate the storage capacity of the host storage component 146. In some embodiments, thenetwork storage component 130 may operate as a back-up storage component for thehost computer system 140, and receive, at predefined time intervals, data already stored at the host storage component 146. - Also, in embodiments where multiple
host computer systems 140 are provided, thenetwork storage component 130 may store data and resources that are common to the varioushost computer systems 140. - The user devices 110 may be any networked computing device operable to connect to the
network 120. A networked device is a device capable of communicating with other devices through a network such as thenetwork 120. A networked device may couple to thenetwork 120 through a wired or wireless connection. - These computing devices may include at least a processor and memory (not shown), and may be an electronic tablet device, a personal computer, workstation, server, portable computer, mobile device, personal digital assistant, laptop, smart phone, WAP phone, an interactive television, video display terminals, gaming consoles, and portable electronic devices or any combination of these.
- In some embodiments, these computing devices may be a laptop, or a smartphone device equipped with a network adapter for connecting to the Internet. In some embodiments, the connection request initiated from the user devices 110 may be initiated from a web browser application stored at the user device 110 and directed at a browser-based application at the
host computer system 140 for receiving the connection request. For example, the connection request may also include an authentication request for obtaining access to a user account at thehost computer system 140 for a user operating theuser device 110A. Thehost computer system 140 can then receive application requests from theuser device 110A via the user account. - The
network 120 may be any network capable of carrying data, including the Internet, Ethernet, plain old telephone service (POTS) line, public switch telephone network (PSTN), integrated services digital network (ISDN), digital subscriber line (DSL), coaxial cable, fiber optics, satellite, mobile, wireless (e.g. Wi-Fi, WiMAX), SS7 signaling network, fixed line, local area network, wide area network, and others, including any combination of these, capable of interfacing with, and enabling communication between thehost computer system 140, thenetwork storage component 130 and/or the user devices 110. - Referring now to
FIG. 2 , which is aflowchart 200 of an example method for providing one or more software applications. To illustrate the example method inFIG. 2 , reference will be made simultaneously toFIGS. 3A to 6 , which illustrate various example computer architecture diagrams of thehost computer system 140. - At 210, the
host computer system 140 receives an application request from a user device, such as 110A or 1108. - The application request can include various information, such as data related to the software application to be provided by the
host computer system 140. For example, the application request can include an application identifier associated with the software application being requested. The application request may, in some embodiments, also include data associated with the user account from which the application request was provided to thehost computer system 140. - The software application as identified in the application request can generally include any program that is executable, or launchable, by the
host processor 142 for providing functionality to the user device 110. Example software applications can include, but is not limited to, various text, image, and/or video processing tools or programs (e.g., Microsoft WORD™, CorelDRAW, etc.), gaming applications, software development tools and/or applications, etc. - At 220, the
host computer system 140 provides theresource library 150. - As described, the
resource library 150 can be stored at the host storage component 146 and/or thenetwork storage component 130. Theresource library 150 can generally define one or more resources required for providing each software application of the one or more software applications. - Generally, the resources required for providing the software application can include application resources, which are specific to providing the software application, and/or system resources, which are specific to the software architecture and/or operating systems on which the software application is to be provided. In typical computer systems, a complete instance of an operating system and related system resources, such as the desktop environment, are launched for providing any software applications. As a result, those computer systems typically launch resources that are unnecessary for providing the specific software application and also occupy unnecessary computational and storage bandwidth. With the methods described herein, the
host computer system 140 can provide the software applications with fewer resources, as compared to the typical computer systems, since thehost computer system 140 can provide a particular software application by launching the required resources for that software application, as determined from theresource library 150. - In some embodiments, the resources required for providing a software application can include one or more binary files and/or one or more library files. Each of the binary file and the library file can be specific to a software architecture, such as Windows, and/or an application operating system (e.g.,
Windows 7, Windows XP, etc.). The application operating system is an operating system for supporting the requested software application, and is different from the host operating system. Generally, the host operating system is a basic operating system for providing basic functionalities, such as file systems, at the host computer system 140 (e.g., Windows Server 2008) whereas the application operating systems are configured for providing various functionalities to the user devices 110 through the software applications (e.g., Windows 7). The host operating system can generally provide a kernel that can be common to the various application operating systems and on which the application operating systems can be provided. - For example, a software application may be designed for the Windows software architecture and configured to be compiled with Microsoft's Visual C++™ compiler. To provide that software application, the
resource library 150 can indicate that the resources required for providing that software application includes, at least, library files for the Visual C+ compiler, such as C-style input/output calls and/or C-style memory allocation. - Another example software application may also be designed for the Windows software architecture but configured for another compiler, such as compiler based on C# or another Microsoft .NET™ language. To launch that software application, the
resource library 150 can indicate that the resources required include, at least, the library files within the Microsoft .NET framework, which are different from the resources required for providing the software application configured for the Visual C++ compiler. - At 230, the
host computer system 140 identifies, from theresource library 150, a set of resources required for providing the requested software application based on the application identifier. - To provide the requested software application, the
host processor 142 can operate to determine, from theresource library 150, the one or more resources, or the set of resources, required for providing the software application. - Reference is now made to
FIG. 3A , which is an example computer architecture diagram 300A for thehost computer system 140. - As shown in the computer architecture diagram 300, the
host computer system 140 includes thehost operating system 340 andhost hardware components 350. Thehost hardware components 350 can include hardware components for supporting the operation of thehost computer system 140, such as thehost processor 142 and the host storage component 146. It will be understood that, depending on thehost computer system 140, other hardware components may also be provided at thehost computer system 140, such as sounds cards, video cards, optical drives, etc. - The
host operating system 340 can provide basic operational processes and functionality for thehost computer system 140. Example functionalities can include providing a file system for the host storage component 146, communicating with thehost hardware components 350, communicating with thenetwork 120 via the host interface component 144 (e.g., a network printer, etc.) and other operations associated with the various containerized resource instances that can be provided by thehost computer system 140. - The
host computer system 140 can operate to provide one or more software applications 310, such as “Application A” 310 a, “Application B” 310 b, “Application C” 310 c, and “Application D” 310 d. However, as shown inFIG. 3A , thehost computer system 140 generally requires resources in addition to thehost operating system 340 in order to provide the software applications 310. The additional resources may be specific to the requirements of the software applications 310 and/or the software architecture on which the software applications 310 are to be launched. Also, although only fourdifferent software applications 310 a to 310 d are shown inFIG. 3A , it should be understood that thehost computer system 140 may operate to provide a fewer or greater number of software applications 310. The number of software applications 310 provided by thehost computer system 140 may be limited by the computational and/or storage capacities of thehost computer system 140. - For example, as shown in
FIG. 3A , thehost computer system 140 can determine from theresource library 150 that providing thesoftware application 310 a requires the resources in the resource set ‘I’ 320(i). To provide thesoftware applications host computer system 140 can determine from theresource library 150 that the resources in the resource set ‘II’ 320(ii) can be used for providing bothsoftware applications software application 310 a is configured for the same software architecture assoftware application 310 b, but due to differences in the resources required forsoftware application 310 a andsoftware application 310 b, a different resource instance is provided forsoftware application 310 b. - For providing the
software application 310 d, thehost computer system 140 can determine from theresource library 150 that thesoftware application 310 d is designed for a software architecture that is incompatible with the software architecture of thehost operating system 340. That is, thesoftware application 310 d can be incompatible with thehost operating system 340 when at least one resource of theresources 322 defined in theresource library 150 is inoperable at thehost operating system 340. - For example, the
software application 310 d may be configured for operation on Android™ but thehost operating system 340 may be Windows-based. Thehost processor 142 can then determine that an emulation application, such as 324, is required for facilitating compatibility between thehost operating system 340 and thesoftware application 310 d since at least one resource of theresources 322 is inoperable on thehost operating system 340. Theemulation application 324 and theresources 322, together, may then form the resource set 320(iii) to be launched by thehost processor 142 for providing thesoftware application 310 d. - The
emulation application 324 may be stored at the host storage component 146 and/or thenetwork storage component 130. - The
emulation application 324 may operate to facilitate compatibility between specific types of operating systems. For example, oneemulation application 324 may facilitate compatibility between only a Windows-based system and an Android-based system, whereas anotheremulation application 324 may facilitate compatibility between a Windows-based system and both an Android-based system and a Mac OSX-based system. - The
emulation application 324 may be operable for providing a virtual platform using various virtualization techniques and/or tools. The virtual platform can operate as an interface tool between different software architectures, such as, but limited to, variations of Linux™, variations of Programmed Data Processors (PDP) architectures and other types of mainframe operating systems. - In some embodiments, the
emulation application 324 required for facilitating compatibility may not be available. As a result, thehost processor 142 and thehost interface component 144 may operate to send an error message to the corresponding user device 110 via thenetwork 120 to indicate that the requested software application 310 is unavailable. -
FIG. 3B illustrates another example computer architecture diagram 300B for thehost computer system 140. The computer architecture diagram 300B shown inFIG. 3B is generally similar to the computer architecture diagram 300A ofFIG. 3A except the computer architecture diagram 300B includes theapplication interface 360. As described, theapplication interface 360 can operate to manage access to the variousdifferent software applications 310 a to 310 d being provided by thehost computer system 140. Theapplication interface 360 can include a manager application that operates to track the various different software applications being provided. The manager application may be operated by thehost processor 142 for maintaining thesession log 152 and also facilitating access to the various software applications 310. - With the
application interface 360, thehost computer system 140 may provide theuser device 110A with access to bothsoftware applications software applications software application 310 a may be associated withWindows 7 and thesoftware application 310 b may be associated with Windows 8. Access to bothsoftware applications user device 110A to facilitate the migration of user data from an older operating system (e.g., Windows 7) to a new operating system (e.g., Windows 8™). - At 240, the
host computer system 140 provides the requested software application 310 with the set ofresources 320 identified at 230. - After identifying the set of
resources 320 required for providing the software application 310, thehost processor 142 can proceed to provide the software application 310 for the user device 110 using the identified set ofresources 320. - The
host processor 142 may, in some embodiments, operate to launch the identified set of resources as a containerized resource instance. Referring still toFIG. 3A , as shown, the example computer architecture diagram 300A for thehost computer system 140 illustrates three different containerized resource instances 302(i), 302(ii) and 302(iii). Each containerizedresource instance 302 generally corresponds to a launched instance of the set ofresources 320 required for providing a corresponding software application 310. In some embodiments, a containerizedresource instance 302 may also refer to a launched instance of the software application 310. Generally, each containerizedresource instance 302 can be operationally isolated from one or more othercontainerized resource instances 302 being provided by thehost computer system 140 so that the operations conducted by thehost processor 142 for one containerized resource instance, such as 302(i), will not affect the operations conducted by thehost processor 142 for another containerized resource instance, such as 302(ii). For example, if the containerized resource instance 302(i) is terminated due to an error in one of the resources in the corresponding resource set 420(i), the operation of the containerized resource instances 302(ii) and 302(iii) can continue as long as no failure errors occur in their respective resource sets 320(ii) and 320(iii). - To provide a containerized
resource instance 302, thehost processor 142 can allocate a portion of thehost memory 154 to be dedicated for providing that software application 310. The allocated portion of thehost memory 154 may be referred to as an application memory portion. Thehost processor 142 can then provide the software application 310 by launching the corresponding set ofresources 320 within the application memory portion. With the containerized resource instances, thehost computer system 140 can provide the software applications 310 without launching unnecessary resources and as a result, reduce use of computational and processing bandwidth. - By providing the software applications 310 with the containerized
resource instances 302, thehost computer system 140 may provide an enhanced user experience for the various users operating the user devices 110. No matter how reliable an electronic communication is between the user device 110 and thehost computer system 140, it may be possible for a user device 110 to lose electronic communication with thehost computer system 140 while thehost computer system 140 is providing the software application 310 to the user device 110. With the containerizedresource instances 302, certain memory portions and possibly other components at thehost computer system 140 are dedicated for providing the software application 310 and thus, thehost computer system 140 can continue to provide the containerizedresource instances 302 for the corresponding user account even when thehost computer system 140 detects that a corresponding user device 110 is no longer in electronic communication with thehost computer system 140. - Despite detecting the user device 110 is no longer in electronic communication with the
host computer system 140, thehost computer system 140 can continue to provide the containerizedresource instance 302 for a predefined time period and/or until a predefined event occurs. For example, the predefined time periods and predefined event may vary according to the user preferences corresponding to a particular user account and/or system settings. For example, a system setting may indicate that thehost computer system 140 will terminate any containerizedresource instance 302 when the corresponding user device 110 has lost electronic communication with thehost computer system 140 for more than an hour. A user preference may indicate that thehost computer system 140 should never terminate any containerizedresource instance 302 until a specific input is received from that user account. Depending on the design and requirements of thehost computer system 140 and/or the type of the user accounts, thehost computer system 140 may be configured to prefer the system setting over user preferences, or vice versa, in the case of conflicting settings. - When the
host computer system 140 detects the user device 110 has resumed electronic communication with the host computer system, thehost computer system 140 can reinstate access to the previous one or morecontainerized resource instances 302 for the user device 110. - An example operation of the
host computer server 140 for providing software applications 310 will now be described with reference toFIG. 4 .FIG. 4 is another example computer architecture diagram 400 for thehost computer system 140. Similar to the computer architecture diagram 300 inFIG. 3A , the computer architecture diagram 400 includes thehost operating system 340 and thehost hardware components 350. - In the example of
FIG. 4 , thehost computer system 140 operates to provide two different containerized resource instances, namely 402(i) and 402(ii). Each containerized resource instance 402(i), 402(ii) is associated with a different software application, Microsoft WORD (software application 410 a) and Gaming XYZ application (software application 410 b), respectively. - The
host computer system 140 can provide thesoftware applications software applications - In some embodiments, an application request corresponding to the
software application 410 a can be received from theuser device 110A while an application request corresponding to thesoftware application 410 b can be received from theuser device 110B. In response to the application request from theuser device 110A, thehost processor 142 can determine the application identifier in the application request corresponds to thesoftware application 410 a, Microsoft WORD. The host processor can then proceed to determine, from theresource library 150, that the resources required for providingsoftware application 410 a is the resource set 420(i). - In the example of
FIG. 4 , the resource set 420(i) determined for thesoftware application 410 a is associated with the application operating system,Windows 7. In some embodiments, thehost processor 142 can determine that thesoftware application 410 a may be provided with resources associated with multiple different application operating systems. For example, thesoftware application 410 a, Microsoft WORD, may be provided with resources associated with various Windows-based operating systems, such asWindows 7, Windows XP, etc. In response to determining that different sets of resources may be available, thehost processor 142 may select one set of resource based on predefined system settings or user preferences, or provide a selection interface for receiving a user selection of one of the resource sets from the user device 110. - As shown in
FIG. 4 , thehost processor 142 is operated to launch the resource set 420(i) as the containerized resource instance 402(i) for providing thesoftware application 410 a. To provide thesoftware application 410 b, thehost processor 142 can proceed to determine that the resource set 420(ii) is required for providing thesoftware application 410 b, and to launch the resource set 420(ii) as the containerized resource instance 402(ii). - By providing the
software applications host computer system 140 can operate to provide thesoftware applications host memory 154. It may also be possible to dedicate certain processing bandwidth of thehost processor 142 for each of the containerized resource instances 402(i) and 402(ii). -
FIG. 5 is yet another example computer architecture diagram 500. The computer architecture diagram 500 continues from the example shown inFIG. 4 . - When the
software applications host computer system 140 can also store data associated with each of these containerized resource instances 402(i) and 402(ii) in thesession log 152. These containerized resource instances 402(i) and 402(ii) can also be referred to as active containerized resource instances since thehost computer system 140 is currently providing them for the user account associated with therespective user devices 110A, 1106. Each entry in thesession log 152 can include various information associated with each activecontainerized resource instance 402, such as the resources launched for that containerizedresource instance 402 and the associated user identifier. - With the
session log 152, thehost processor 142 can track and review the activecontainerized resource instances 402. In some embodiments, thehost processor 142 may determine from thesession log 152 at least one of the activecontainerized resource instance 402 that can be used to fulfil another application request. That is, if the resources launched for one of the activecontainerized resource instances 402 correspond to a set of resources required for providing a newly requested software application 310, thehost processor 142 may provide the newly requested software application 310 with that activecontainerized resource instance 402. Otherwise, thehost processor 142 can proceed to provide the newly requested software application 310 by launching the corresponding set ofresources 320 as a newcontainerized resource instance 302. - Referring still to
FIG. 5 and continuing with the example shown inFIG. 4 , thehost computer system 140 may receive another application request corresponding also to thesoftware application 410 a, Microsoft WORD, but from another user account via theuser device 110B. Before thehost processor 142 operates to launch the resource set 420(i) as a newcontainerized resource instance 402 for providing thesoftware application 410 a (Microsoft WORD), thehost processor 142 may determine, from thesession log 152, that the active containerized resource instance 402(i) is also associated with the resource set 420(i). As described with respect toFIG. 4 , thehost computer system 140 is currently providing thesoftware application 410 a (Microsoft WORD) with the containerized resource instance 402(i). Therefore, from thesession log 152, thehost processor 142 can determine that thesoftware application 410 a can also be provided for theuser device 110B using the containerized resource instance 402(i). As shown inFIG. 5 , different user sessions can be provided in the containerized resource instance 402(i)—auser session 512 can be provided for theuser device 110A and auser session 514 can be provided for theuser device 110B, in this example. - Another example application request received by the
host computer system 140 may be associated with anothersoftware application 510 a, such as “Word Editor Application”. From theresource library 150, thehost processor 142 may determine that the resource set 320 required for providing thesoftware application 510 a is the resource set 420(i). Before launching the resource set 420(i) as a newcontainerized resource instance 302, thehost processor 142 may determine that the active containerized resource instance 402(i) is associated with resources within the resource set 420(i), and can therefore provide thesoftware application 510 a with the active containerized resource instance 402(i). - Continuing with reference to
FIG. 5 , thehost computer system 140 may receive another application request associated with asoftware application 510 b, such a “Video Editor Application”. From theresource library 150, thehost processor 142 may determine that the resource set required for providing thesoftware application 510 b is the resource set 520. Although, like the resource set 420(i), the resource set 520 is also associated with theWindows 7 software architecture, the resource set 520 includes one or more resources that are specific to thesoftware application 510 b that are not present in the resource set 420(i). For example, the resource set 520 may include resources for encoding and/or decoding multimedia video files, which are required for providing thesoftware application 510 b (a video editor application), but are not required for providing thesoftware application 510 a (a word editor application). Therefore, thehost processor 142 can proceed to provide thesoftware application 510 b by launching the resource set 520 as a newcontainerized resource instance 502. -
FIG. 6 is another example computer architecture diagram 600 and, like the computer architecture diagram 500 ofFIG. 5 , the computer architecture diagram 600 continues from the example shown inFIG. 4 . - As described with reference to
FIG. 3A , thehost computer system 140 may receive an application request associated with a software application that is configured for an application operating system that is incompatible with thehost operating system 340. For example, in the example ofFIGS. 4 to 6 , thehost operating system 340 is Window Server 2008, and the application operating system for a newly requested software application may be Android. The resources required for the newly requested software application are, therefore, inoperable on thehost operating system 340 of this example. - Referring now to
FIG. 6 and continuing with the example shown inFIG. 4 , thehost computer system 140 may receive an application request associated with asoftware application 610 configured for the Android software architecture, such as “Android's Messenger Application”. From theresource library 150, thehost processor 142 may determine theresources 622 required for providing thesoftware application 610. Thehost processor 142 may also determine from theresource library 150 that, at least one of theresources 622 is inoperable on the host operating system 340 (Windows Server 2008) since thesoftware application 610 is configured for Android. Thehost processor 142 can then determine that theemulation application 624 is required for facilitating compatibility between thesoftware application 610 and thehost operating system 340. The resource set 620 for providing thesoftware application 610 can include theresources 622 and theemulation application 624. - Various embodiments have been described herein by way of example only. Various modification and variations may be made to these example embodiments without departing from the spirit and scope of the invention, which is limited only by the appended claims.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/437,971 US20170163553A1 (en) | 2015-01-20 | 2017-02-21 | Methods and systems for providing software applications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/600,246 US9614931B2 (en) | 2015-01-20 | 2015-01-20 | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
US15/437,971 US20170163553A1 (en) | 2015-01-20 | 2017-02-21 | Methods and systems for providing software applications |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/600,246 Continuation US9614931B2 (en) | 2015-01-20 | 2015-01-20 | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170163553A1 true US20170163553A1 (en) | 2017-06-08 |
Family
ID=56407970
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/600,246 Expired - Fee Related US9614931B2 (en) | 2015-01-20 | 2015-01-20 | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
US15/437,971 Abandoned US20170163553A1 (en) | 2015-01-20 | 2017-02-21 | Methods and systems for providing software applications |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/600,246 Expired - Fee Related US9614931B2 (en) | 2015-01-20 | 2015-01-20 | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
Country Status (1)
Country | Link |
---|---|
US (2) | US9614931B2 (en) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403099B2 (en) | 2015-07-27 | 2022-08-02 | Sony Interactive Entertainment LLC | Backward compatibility by restriction of hardware resources |
US9857871B2 (en) | 2015-09-04 | 2018-01-02 | Sony Interactive Entertainment Inc. | Apparatus and method for dynamic graphics rendering based on saccade detection |
US10915333B2 (en) | 2016-03-30 | 2021-02-09 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
US10303488B2 (en) | 2016-03-30 | 2019-05-28 | Sony Interactive Entertainment Inc. | Real-time adjustment of application-specific operating parameters for backwards compatibility |
US10275239B2 (en) | 2016-03-30 | 2019-04-30 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
US10401952B2 (en) | 2016-03-31 | 2019-09-03 | Sony Interactive Entertainment Inc. | Reducing rendering computation and power consumption by detecting saccades and blinks |
US10372205B2 (en) | 2016-03-31 | 2019-08-06 | Sony Interactive Entertainment Inc. | Reducing rendering computation and power consumption by detecting saccades and blinks |
US10192528B2 (en) | 2016-03-31 | 2019-01-29 | Sony Interactive Entertainment Inc. | Real-time user adaptive foveated rendering |
US10169846B2 (en) | 2016-03-31 | 2019-01-01 | Sony Interactive Entertainment Inc. | Selective peripheral vision filtering in a foveated rendering system |
US10216498B2 (en) * | 2016-05-13 | 2019-02-26 | Tibco Software Inc. | Custom-built process engine with minimal memory and disk resource consumption |
CA2972178A1 (en) * | 2016-06-29 | 2017-10-05 | Sphere 3D Inc. | Systems and methods for emulating resources using abstract containerization with abstract categorization and policy setting |
CN108388524A (en) * | 2016-12-21 | 2018-08-10 | 伊姆西Ip控股有限责任公司 | For data cached method and apparatus |
US10579427B2 (en) * | 2017-02-01 | 2020-03-03 | Datera, Inc. | Method and system for translating resource requirement of application into tangible infrastructural resources |
US11972244B2 (en) * | 2020-11-13 | 2024-04-30 | Iron Gaming Limited | Method and apparatus for improving a mobile application |
US20240037229A1 (en) * | 2022-07-28 | 2024-02-01 | Pure Storage, Inc. | Monitoring for Security Threats in a Container System |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001067245A2 (en) * | 2000-03-08 | 2001-09-13 | Marbles, Inc. | Remote operation of real-time graphical applications |
US8726294B2 (en) * | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US7577722B1 (en) * | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
US7774762B2 (en) * | 2003-09-15 | 2010-08-10 | Trigence Corp. | System including run-time software to enable a software application to execute on an incompatible computer platform |
US20070255798A1 (en) * | 2006-04-26 | 2007-11-01 | Sap Ag | Brokered virtualized application execution |
US7971182B1 (en) * | 2006-05-09 | 2011-06-28 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using undefined symbols |
US7685413B2 (en) * | 2006-11-01 | 2010-03-23 | Dell Products L.P. | Use driven configurator and system optimization |
US20080239985A1 (en) * | 2007-03-30 | 2008-10-02 | International Business Machines Corporation | Method and apparatus for a services model based provisioning in a multitenant environment |
US8219987B1 (en) | 2007-08-24 | 2012-07-10 | Vmware, Inc. | Optimized virtual machine specification for provisioning application specific runtime environment |
US8127017B2 (en) * | 2007-06-22 | 2012-02-28 | Citrix Systems, Inc. | Methods and servers for displaying and activating disconnected sessions |
US8127291B2 (en) * | 2007-11-02 | 2012-02-28 | Dell Products, L.P. | Virtual machine manager for managing multiple virtual machine configurations in the scalable enterprise |
US8543998B2 (en) * | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
US8161479B2 (en) * | 2008-06-13 | 2012-04-17 | Microsoft Corporation | Synchronizing virtual machine and application life cycles |
US8281307B2 (en) * | 2009-06-01 | 2012-10-02 | International Business Machines Corporation | Virtual solution composition and deployment system and method |
US8607200B2 (en) * | 2010-06-01 | 2013-12-10 | Red Hat, Inc. | Executing a web application at different stages in the application life cycle |
US8707301B2 (en) * | 2010-11-08 | 2014-04-22 | Microsoft Corporation | Insertion of management agents during machine deployment |
US9965151B2 (en) * | 2011-09-09 | 2018-05-08 | Cloudon Ltd. | Systems and methods for graphical user interface interaction with cloud-based applications |
US9378255B2 (en) * | 2012-05-11 | 2016-06-28 | Sap Se | Cloud logistics |
US9178886B2 (en) * | 2012-08-29 | 2015-11-03 | Red Hat Israel, Ltd. | Flattening permission trees in a virtualization environment |
-
2015
- 2015-01-20 US US14/600,246 patent/US9614931B2/en not_active Expired - Fee Related
-
2017
- 2017-02-21 US US15/437,971 patent/US20170163553A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20160210173A1 (en) | 2016-07-21 |
US9614931B2 (en) | 2017-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9614931B2 (en) | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system | |
JP7493450B2 (en) | Dynamic migration of groups of containers | |
CN110032413B (en) | Desktop virtualization method, related equipment and computer storage medium | |
US9952845B2 (en) | Provisioning machines having virtual storage resources | |
KR102102168B1 (en) | Appratus for a virtual desktop service and method thereof | |
US8935687B2 (en) | Incrementally updating a software appliance | |
US11030025B2 (en) | Managing inter-process communications in a containerized application environment | |
CN110780930B (en) | Method and device for starting Android system, electronic equipment and storage medium | |
CN101650660B (en) | Booting a computer system from central storage | |
US11080041B1 (en) | Operating system management for virtual workspaces | |
US9207989B2 (en) | System and method for providing virtual device | |
US20090300601A1 (en) | Methods and systems for providing a hosted appliance and migrating the appliance to an on-premise environment | |
US20220236875A1 (en) | Techniques for persisting data across instances of a cloud shell | |
US20190182246A1 (en) | Updating database drivers for client applications through a database server push | |
CN108234551B (en) | Data processing method and device | |
CN111124288A (en) | VPD storage management method, device, equipment and readable storage medium | |
CN111399936A (en) | BMC customization method, system, equipment and readable storage medium | |
KR20130127629A (en) | Apparatus and method for providing virtual application | |
CA2878759C (en) | Methods and systems for providing software applications | |
CN116467704A (en) | Resource calling method and device | |
WO2021135326A1 (en) | Data backup method, apparatus and device, and medium | |
US9191445B2 (en) | Systems and methods for managing emulation sessions | |
US20230359450A1 (en) | Cloud application engine deployment method for shielding web framework from users and apparatus, device and storage medium thereof | |
WO2023066246A1 (en) | Method and system for installing application on cloudphone, and client cloudphone | |
KR101889942B1 (en) | Apparatus and method for controlling video processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SPHERE 3D INC., CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOOKMAN, PETER G.;MORELLI, GIOVANNI;COWEN, BRANDON;AND OTHERS;SIGNING DATES FROM 20160129 TO 20160202;REEL/FRAME:041319/0240 |
|
AS | Assignment |
Owner name: OPUS BANK, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNORS:OVERLAND STORAGE, INC.;SPHERE 3D CORP.;SPHERE 3D INC.;AND OTHERS;REEL/FRAME:042921/0674 Effective date: 20170620 |
|
AS | Assignment |
Owner name: OPUS BANK, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNORS:OVERLAND STORAGE, INC.;SPHERE 3D CORP.;SPHERE 3D INC.;AND OTHERS;REEL/FRAME:043424/0318 Effective date: 20170802 |
|
AS | Assignment |
Owner name: SPHERE 3D INC., CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:FBC HOLDINGS S.A R.L;REEL/FRAME:047605/0027 Effective date: 20181113 Owner name: V3 SYSTEMS HOLDINGS, INC., UTAH Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:FBC HOLDINGS S.A R.L;REEL/FRAME:047605/0027 Effective date: 20181113 Owner name: SPHERE 3D CORP, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:FBC HOLDINGS S.A R.L;REEL/FRAME:047605/0027 Effective date: 20181113 Owner name: OVERLAND STORAGE, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:FBC HOLDINGS S.A R.L;REEL/FRAME:047605/0027 Effective date: 20181113 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |