IP Library Granted Patent US 8,762,976
Granted Patent B2
US 8,762,976 · App. 11/716,186 · Granted Jun 24, 2014

Static extensibility models with dynamic languages and scripts

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 8,762,976
App. No.
11/716,186
Granted
Jun 24, 2014
Kind
B2
Abstract

Various technologies and techniques are disclosed for generating add-in bridges that allow hosts to be extended using a dynamic language. The system programmatically determines static requirements that an add-in is required to implement in order to integrate with a particular host. The system programmatically generates the add-in bridge to conform to the requirements of the particular host and to operate like a compiled add-in while actually calling dynamic language script files that are executed by a scripting engine. The add-in bridge is generated by generating a component for the add-in that contains at least one class to conform to the host requirements. A constructor is then generated for the class. For each method the add-in is required to implement, a respective method is generated in the class that provides a stub implementation but that calls dynamic-language script files to perform a desired functionality.

Claims (39)

1. A computer storage memory having computer-executable instructions for causing a computer to perform steps comprising:

receive input from a user to generate an add-in bridge to dynamically extend functionality of a particular host application that has one or more requirements to be met by a compiled add-in, the particular host application not directly supporting dynamic languages;

programmatically determine the one or more requirements that an add-in is required to implement in order to integrate with the particular host application by examining an object model of the particular host application to find an abstract class that represents the one or more requirements, the one or more requirements being a static set of requirements that are part of a static extensibility model; and

programmatically generate the add-in bridge dynamically to conform to the one or more requirements of the particular host application and to operate like a compiled add-in while actually calling one or more script files that are executed by at least one scripting engine to implement a desired functionality, the one or more script files being written in a dynamic language, wherein the generation of the add-in bridge further comprises:

generate a component for the add-in bridge that contains at least one class to conform to the static set of requirements of the host application;

generate a constructor for the class, wherein the constructor reads a configuration to obtain an actual type to instantiate in order to create a particular script engine from a plurality of script engines; and

for each method the add-in bridge is required to implement, generate a respective method in the class that provides a stub implementation of the respective method but calls the one or more script files that are executed by the scripting engine to perform an actual implementation of a desired functionality.

2. The computer storage memory of claim 1 , wherein the component is generated as an executable file.

3. The computer storage memory of claim 1 , wherein the component is generated as an in-memory module.

4. The computer storage memory of claim 1 , wherein the constructor is operable to perform work required to start up the particular script engine and load the one or more script files.

5. The computer storage memory of claim 1 , wherein the constructor is operable to obtain an interface used to control the script engine.

6. The computer storage memory of claim 1 , wherein the generating the component stage is operable to perform an appropriate registration of the component.

7. The computer storage memory of claim 1 , wherein the configuration is read from a configuration file or by examining the one or more script files to be executed.

8. The computer storage memory of claim 1 , wherein the configuration is read by examining machine state at runtime.

9. A method for programmatically generating an add-in bridge that extends a host functionality using a dynamic script comprising the steps of:

receiving input from a user to generate an add-in bridge to dynamically extend functionality of a particular host application that has one or more requirements to be met by a compiled add-in, the particular host application not directly supporting dynamic languages;

programmatically determining the one or more requirements that an add-in is required to implement in order to integrate with the particular host application by examining an object model of the particular host application to find an abstract class that represents the one or more requirements, the one or more requirements being a static set of requirements that are part of a static extensibility model; and

programmatically generating the add-in bridge dynamically to conform to the one or more requirements of the particular host application and to operate like a compiled add-in while actually calling one or more script files that are executed by at least one scripting engine to implement a desired functionality, the one or more script files being written in a dynamic language, wherein the generation of the add-in bridge further comprises:

generating a component for the add-in bridge that contains at least one class to conform to the static set of requirements of the host application;

generating a constructor for the class, wherein the constructor reads a configuration to obtain an actual type to instantiate in order to create a particular script engine from a plurality of script engines; and

for each method the add-in bridge is required to implement, generating a respective method in the class that provides a stub implementation of the respective method but calls the one or more script files that are executed by the scripting engine to perform an actual implementation of a desired functionality.

10. The method of claim 9 , wherein the component is an executable file.

11. The method of claim 9 , wherein the component is an in-memory module.

12. The method of claim 9 , wherein the constructor will perform work required to start up the particular script engine and load the one or more script files.

13. The method of claim 12 , wherein the constructor obtains an interface used to control the particular script engine.

14. The method of claim 9 , wherein the generating the respective method step comprises the steps of:

generating code for loading one or more input parameters into the particular script engine;

generating code for notifying the particular script engine to call the particular method in the one or more script files and passing the loaded input parameters; and

generating code for passing a return value from the particular script engine back to a calling routine.

15. The method of claim 9 , wherein the dynamic language is selected from the group consisting of JavaScript, VBScript, PHP, Python, and Perl.

16. A computer system comprising:

a processing unit coupled to a memory, the memory storing computer-executable instructions which cause the processing unit to:

receive input from a user to generate an add-in bridge to dynamically extend functionality of a particular host application that has one or more requirements to be met by a compiled add-in, the particular host application not directly supporting dynamic languages;

programmatically determine the one or more requirements that an add-in is required to implement in order to integrate with the particular host application by examining an object model of the particular host application to find an abstract class that represents the one or more requirements, the one or more requirements being a static set of requirements that are part of a static extensibility model; and

programmatically generate the add-in bridge dynamically to conform to the one or more requirements of the particular host application and to operate like a compiled add-in while actually calling one or more script files that are executed by at least one scripting engine to implement a desired functionality, the one or more script files being written in a dynamic language, wherein the generation of the add-in bridge further comprises:

generate a component for the add-in bridge that contains at least one class to conform to the static set of requirements of the host application;

generate a constructor for the class, wherein the constructor reads a configuration to obtain an actual type to instantiate in order to create a particular script engine from a plurality of script engines; and

for each method the add-in bridge is required to implement, generate a respective method in the class that provides a stub implementation of the respective method but calls the one or more script files that are executed by the scripting engine to perform an actual implementation of a desired functionality.

17. The system of claim 16 , wherein the dynamic language is selected from the group consisting of JavaScript, VBScript, PHP, Python, and Perl.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 14, 2007
From: KAPLAN, JESSE D.; GUDENKAUF, JOHN C.; MILLER, JAMES S.
To: MICROSOFT CORPORATION
Reel/Frame 019284/0950 →