IP Library › Granted Patent US 9,600,351
Granted Patent B2
US 9,600,351 · App. 13/714,607 · Granted Mar 21, 2017

Inversion-of-control component service models for virtual environments

Inventors: Blaise Aguera y Arcas (Seattle, WA); Hen Fitoussi (Tel-Aviv, IL); John Daniell Hebert (San Francisco, CA); Benny Schlesinger (Ramat Hasharon, IL); Eran Yariv (Zichron Yaakov, IL)
Assignee: Microsoft Technology Licensing, LLC
G06F9/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,600,351
App. No.
13/714,607
Filed
Dec 14, 2012
Granted
Mar 21, 2017
Kind
B2
Art Unit
2195
USPC
718/1
Abstract

In the field of computing, many scenarios involve the execution of an application within a virtual environment of a device (e.g., web applications executing within a web browser). Interactions between applications and device components are often enabled through hardware abstractions or component application programming interfaces (API), but such interactions may provide more limited and/or inconsistent access to component capabilities for virtually executing applications than for native applications. Instead, the device may provide hardware interaction as a service to the virtual environment utilizing a callback model, wherein applications within the virtual environment initiate component request specifying a callback, and the device initiates the component requests with the components and invokes associated callbacks upon completion of a component request. This model may enable the applications to interact with the full capability set of the components, and may reduce blocked execution of the application within the virtual application in furtherance of application performance.

Claims (88)

1. A method of fulfilling component requests received from applications within a virtual environment on a device executing on a device having a processor and at least two hardware components that each have an associated capability, the method comprising:

executing on the processor instructions configured to:

upon receiving, from an application executing within the virtual environment, a component request specifying a callback of the application and a one of the hardware components the capability of which is to be invoked,

store the callback associated with the component request and the application,

send the component request to the one hardware component, and

resume execution of the application within the virtual environment; and

upon detecting a completion of the component request by the one hardware component,

retrieve the callback associated with the component request, and

invoke the callback on behalf of the application

wherein:

the completion of the component request comprises at least one component result;

the instructions are configured to, upon receiving at least one component result from the component, generate a condensed component result having a smaller size than the at least one component result; and

the instructions are further configured to provide the condensed component result of the component request to the application within the virtual environment.

2. The method of claim 1 , wherein the instructions are further configured to, upon receiving the component request, initiate a worker process outside of the virtual environment and configured to:

send the component request to the one hardware component; and

notify the application associated with the callback of the completion of the component request.

3. The method of claim 1 , wherein the instructions are further configured to, upon receiving a component request from an application executing outside of the virtual environment on the device:

store the callback associated with the component request and the application; and

send the component request to the one hardware component.

4. The method of claim 1 , wherein the instructions are further configured to:

upon receiving a component request from a remote process executing on a second device:

store the callback associated with the component request and the remote application; and

send the component request to the one hardware component; and

upon detecting a completion of a component request associated with a remote process, invoke the callback on behalf of the remote application.

5. The method of claim 4 , wherein the remote process initiates the component request on behalf of the application executing within the virtual environment on the device.

6. The method of claim 5 , wherein:

the application comprises at least one credential;

the component request received from the remote process includes at least one credential authenticating the component request on behalf of the application; and

the instructions are further configured to, before sending the component request to the one hardware component, authenticate the credential of the component request.

7. The method of claim 1 , wherein:

the component request specifies at least one requested result type that has been requested by the application; and

generating the condensed component result comprises generating a condensed component result excluding at least one portion of the component result that is not related to the at least one requested result type.

8. The method of claim 1 , wherein:

the instructions are further configured to receive from a user of the device a condensing preference; and

generating the condensed component result comprises generating a condensed component result using the condensing preference.

9. A system configured to fulfill component requests received from applications within a virtual environment on a device executing on a device having a processor and at least two hardware components that each have an associated capability, the system comprising:

a component request initiating component configured to, upon receiving from an application executing within the virtual environment a component request specifying a-a callback of the application and a one of the hardware components the capability of which is to be invoked,

store the callback associated with the component request and the application,

send the component request to the one hardware component, and

resume execution of the application within the virtual environment; and

a callback invoking component configured to, upon detecting a completion of the component request by the one hardware component,

retrieve the callback associated with the component request, and

invoke the callback on behalf of the application,

wherein the completion of the component request yields at least one component result, and

wherein the system further comprises a component service that is configured to

scrutinize the component request and at least one of the at least one component result for security issues that include at least one of inclusion of malicious code and an accessing or leakage of private user information.

10. The system of claim 9 , wherein

respective components of the device are identified by a request address; and

the component request initiating component comprises a server configured to receive component requests specifying a request address identifying the one hardware component of the component request.

11. The system of claim 10 , wherein:

the server is configured to receive the component requests during a communication session initiated by the application executing within the virtual environment; and

the callback invoking component is further configured to:

until the completion of the component request, maintain the communication session with the application; and

upon detecting the completion of the component request, notify the application of the completion of the component request via the communication session.

12. The system of claim 11 , wherein:

the server comprises a hypertext transport protocol (HTTP) server;

the communication session comprises a hypertext transport protocol (HTTP) session; and

the request address comprises a uniform resource locator (URL) identifying the component.

13. The system of claim 9 , wherein:

the system further comprises, for respective components, a component model of the component presented within the virtual environment;

the component request initiating component is configured to receive the component request from the application as a component model request initiated by the application and specifying the component model within the virtual environment; and

the system further comprises: a callback invoking component configured to, upon detecting the completion of the component request by the one hardware component, notify the application of the completion of the component request through the component model within the virtual environment.

14. The system of claim 9 , wherein:

the completion of the component request comprises at least one component result;

the system further comprises a memory region accessible to the application within the virtual environment; and

the callback invoking component is further configured to store the component result in the memory region.

15. The system of claim 9 ,

wherein the system further comprises a component service that is configured to

initiate interactions with the hardware components of the device on behalf of the applications.

16. A nonvolatile computer-readable storage device comprising instructions that, when executed on a processor of a device comprising a virtual environment and at least one component, fulfill component requests received from applications executing within the virtual environment by:

upon receiving from an application executing within the virtual environment a component request specifying a component and a callback of the application,

storing the callback associated with the component request and the application,

sending the component request to the component, and

resuming execution of the application within the virtual environment;

upon receiving from the application within the virtual environment a device capability enumeration request, enumerating for the application the component capabilities of respective components of the device; and

upon receiving from the application within the virtual environment a device capability request specifying a component capability, translating the device capability request into a component request specifying a component having the component capability specified by the device capability request; and

upon detecting a completion of the component request by the component:

retrieving the callback associated with the component request, and

invoking the callback on behalf of the application.

17. The nonvolatile computer-readable storage device of claim 16 , wherein:

the component request specifies a component capability of the component; and

the instructions are further configured to:

upon receiving a component request, present to a user an offer to initiate the component request identifying the component capabilities requested by the application; and

initiate the component request to the component only after receiving from the user an acceptance of the offer.

18. The nonvolatile computer-readable storage device of claim 16 , wherein

the instructions are further configured to

upon receiving from the application within the virtual environment

a component enumeration request, enumerating for the application the components of the device that are identifiable in a component request.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2012
From: Y ARCAS, BLAISE AGUERA; FITOUSSI, HEN; HEBERT, JOHN DANIELL; SCHLESINGER, BENNY; YARIV, ERAN
To: MICROSOFT CORPORATION
Reel/Frame 029476/0374 →
Continuity (1)
Related Publication 20140173592A1 · Jun 19, 2014