Application remoting using network vector rendering
First Claim
1. A computer-implemented method for improving one or more computer technologies, comprising:
- under control of an execution computing device that is remotely located, separate, and distinct from a rendering computing device;
receiving from the rendering computing device a request to initiate a remote application in the execution computing device while the rendering computing device executes an instance of a local application;
instantiating an instance of the remote application in the execution computing device, the remote application instance having a compositor and a region renderer;
responsive to the request, providing one or more files to the local application instance to facilitate the rendering computing device to display output of the remote application instance and to facilitate the local application instance to connect to the remote application instance and to perform one or more of intercept events from an event loop to listen for events associated with the local application instance or generate a drawing canvas;
under control of the connected remote application instance;
intercepting first draw commands from the compositor of the remote application instance, the first draw commands corresponding to one or more tiles to be rendered and representing only a portion of all draw commands used to provide a current output of the remote application instance;
capturing first position information from the region renderer of the remote application instance for the one or more tiles that correspond to the first draw commands;
intercepting second draw commands from the region renderer of the remote application instance that correspond to one or more regions to be rendered and capturing second position information for the one or more corresponding regions; and
providing to the rendering computing device the first and second draw commands with the first and second captured position information to cause the local application instance to render one or more portions of the output of the remote application instance based on the first and second draw commands and the first and second captured position information.
3 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and techniques for application isolation by remote-enabling applications are provided. Example embodiments provide an Adaptive Rendering Application Isolation System (“ARAIS”), which transparently and dynamically enables applications to run in an isolated execution environment yet be rendered locally in a manner that minimizes the amount of data to be transferred and the latency caused by expensive computation and/or by overburdening available bandwidth by remoting rendering using draw commands over rendering using pixel pushing or other techniques. In one embodiment, the ARAIS includes an orchestrator server which comprises remoting level determination logic and rules engine, pre-computed graphics libraries, connection support logic, data repositories for objects such as a render cache, whitelists, blacklists, client privileges, and application information, and one or more secure containers running remote application instances. These components cooperate to deliver isolation-ready technology to client applications.
148 Citations
30 Claims
-
1. A computer-implemented method for improving one or more computer technologies, comprising:
under control of an execution computing device that is remotely located, separate, and distinct from a rendering computing device; receiving from the rendering computing device a request to initiate a remote application in the execution computing device while the rendering computing device executes an instance of a local application; instantiating an instance of the remote application in the execution computing device, the remote application instance having a compositor and a region renderer; responsive to the request, providing one or more files to the local application instance to facilitate the rendering computing device to display output of the remote application instance and to facilitate the local application instance to connect to the remote application instance and to perform one or more of intercept events from an event loop to listen for events associated with the local application instance or generate a drawing canvas; under control of the connected remote application instance; intercepting first draw commands from the compositor of the remote application instance, the first draw commands corresponding to one or more tiles to be rendered and representing only a portion of all draw commands used to provide a current output of the remote application instance; capturing first position information from the region renderer of the remote application instance for the one or more tiles that correspond to the first draw commands; intercepting second draw commands from the region renderer of the remote application instance that correspond to one or more regions to be rendered and capturing second position information for the one or more corresponding regions; and providing to the rendering computing device the first and second draw commands with the first and second captured position information to cause the local application instance to render one or more portions of the output of the remote application instance based on the first and second draw commands and the first and second captured position information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
12. A computer-implemented method for improving one or more computer technologies, comprising:
under control of a code execution computing device that is remotely located, separate, and distinct from an output rendering computing device; receiving from the output rendering computing device a request to initiate a remote application in the code execution computing device while the output rendering computing device executes a an instance of a local application, the request indicating an operating system of the output rendering computing device and an application type of the local application; instantiating an instance of the remote application in the code execution computing device, the remote application instance having a compositor, a region renderer, and a rules engine; executing the rules engine to determine one or more of a current compositor, a current region renderer, or a current graphics library based on one or more of the operating system of the output rendering computing device and/or the application type of the local application in the output rendering computing device; and determining and providing a set of files to the output rendering computing device on demand based on the received request and the one or more of the current compositor, the current region renderer, or the current graphics library, the set of files containing compiled draw commands and information that modifies the local application instance to display output of the remote application instance, wherein one or more files in the set of files is configured to interface with an application programming interface (“
API”
) of the local application instance to cause the local application instance to load one or more files in the set of files, is configured to intercept events from an event loop to listen for events associated with the local application instance and invoke draw handling code, and is configured to initiate a connection from the local application instance to the remote application instance,wherein one or more files in the set of files includes the draw handling code in a compiled instance of a graphics library of the remote application instance, the compiled instance of the graphics library being configured to cause draw commands to be rendered in the same manner on the local application instance as on the remote application instance to facilitate consistent rendering on the local application instance and on the remote application instance, and wherein one or more files in the set of files is configured to cause the local application instance to generate a drawing canvas; causing a connection between the remote application instance and the local application instance to facilitate the output rendering computing device to display the output of the remote application instance; and under control of the connected remote application instance, providing to the output rendering computing device draw commands to facilitate the one or more loaded files to cause the local application instance to render one or more portions of the output of the remote application instance based on the draw commands. - View Dependent Claims (13, 14, 15, 16, 17)
-
18. A computer-implemented method for improving one or more computer technologies, comprising:
under control of a server computing device that is remotely located, separate, and distinct from a client computing device; receiving from the client computing device a request to initiate a remote application in the server computing device while the client computing device executes an instance of a client application, the request indicating an operating system of the client computing device and an application type of the client application; instantiating an instance of the remote application in the server computing device, the remote application instance having a compositor, a region renderer, and a rules engine; executing the rules engine to determine one or more of a current compositor, a current region renderer, or a current graphics library based on one or more of the operating system of the client computing device and/or the application type of the client application in the client computing device; determining and providing a set of files to the client computing device on demand based on the received request and the one or more of the current compositor, the current region renderer, or the current graphics library, the set of files including a script file, an executable code file, and a Hypertext Markup Language (“
HTML”
) file that include information that modifies the client application instance to display output of the remote application instance,wherein the script file is configured to interface with an application programming interface (“
API”
) of the client application instance to cause the client application instance to load the executable code file, is configured to intercept events from an event loop to listen for events associated with the client application instance and invoke draw handling code, and is configured to initiate a connection from the client application instance to the remote application instance,wherein the executable code file includes the draw handling code in a compiled instance of a graphics library of the remote application instance, the compiled instance of the graphics library being configured to cause draw commands to be rendered in the same manner on the client application instance as on the remote application instance to facilitate consistent rendering on the client application instance and on the remote application instance, and wherein the HTML file is configured to cause the client application interface to generate a drawing canvas; under control of the connected remote application instance; intercepting first draw commands from the compositor of the remote application instance, the first draw commands corresponding to one or more tiles to be rendered and representing only a portion of all draw commands used to provide a current output; capturing first position information from the region renderer of the remote application instance for the one or more tiles that correspond to the first draw commands; intercepting second draw commands from the region renderer of the remote application instance that correspond to one or more regions to be rendered and capturing second position information for the one or more corresponding regions; providing to the client computing device the first and second draw commands with the first and second captured position information to facilitate the loaded executable code file to cause the client application instance to render one or more portions of the output of the remote application instance based on the first and second draw commands and the first and second captured position information; receiving from the client computing device an indication of a user action based on an event intercepted by the script file; and causing the client application instance to update on the client computing device the output received from the remote application instance by providing to the client computing device one or more third draw commands with position information based on the received indication of the user action. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
28. A computer-implemented method for improving one or more computer technologies, comprising:
under control of a server computing device that is remotely located, separate, and distinct from a rendering computing device; receiving from the rendering computing device a request to initiate a remote application in the server computing device while the rendering computing device executes an instance of a local application; instantiating an instance of the remote application in the server computing device, the remote application instance having multiple portions of code for rendering output; causing a connection between the remote application instance and the local application instance to facilitate the rendering computing device to display output of the remote application instance; under control of the connected remote application instance; intercepting first draw commands from a first portion of the multiple portions of code of the remote application instance, the first draw commands corresponding to one or more first portions of the output and representing only a first portion of all draw commands used to render the output; capturing first position information from the remote application instance that corresponds to the first draw commands; intercepting second draw commands from a second portion of the multiple portions of code of the remote application instance that correspond to one or more second portions of the output and representing only a second portion of all draw commands used to render the output; capturing second position information from the remote application instance that corresponds to the second draw commands; and providing to the rendering computing device the first and second draw commands with the corresponding first and second captured position information to cause the application instance to render one or more portions of the output of the remote application instance based on the first and second draw commands and the corresponding first and second captured position information. - View Dependent Claims (29, 30)
Specification