Add-in Bridge for Dynamic Language Extensibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software development frameworks limit extensibility by requiring hosts to pre-define supported scripting languages and environments, locking developers into specific languages and restricting the ability to extend applications that do not support dynamic languages.

Innovation Solution

A system generates an add-in bridge that programmatically determines and conforms to host requirements, allowing dynamic language scripts to implement functionality, effectively creating a compiled-like add-in that interacts with scripting engines, enabling extension of hosts using dynamic languages.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a host pre-defines supported scripting languages and environments, then the host can provide a stable and known extension interface, but developers are locked into specific languages and cannot extend the host with dynamic languages

Engineering Contradiction:
Improvelanguage flexibilityVSAvoidhost configuration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces an add-in bridge as an intermediary component that translates between dynamic language scripts and the host's expected interface. The bridge acts as a mediator that allows dynamic languages to communicate with hosts that expect static, compiled add-ins, resolving the contradiction by enabling language flexibility without requiring the host to pre-define dynamic language support

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The extension system is segmented into three distinct components: the host, the add-in bridge, and the script engine. This segmentation allows each component to maintain its original characteristics while working together - the host remains stable with pre-defined interfaces, the bridge provides translation and adaptation, and the script engine executes dynamic languages. This resolves the contradiction by allowing the host to maintain simplicity while enabling language flexibility through the separate bridge component

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If a host implements a scripting engine environment for extensibility, then developers can extend the host with scripts, but the host must pre-define the script engine and execution environment which limits language choices

Engineering Contradiction:
Improvescripting language optionsVSAvoidhost development complexity
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The add-in bridge serves as an intermediary that eliminates the need for the host to pre-define scripting engine support. Instead of the host implementing complex script execution capabilities, the bridge handles the complexity of script engine interaction, allowing the host to remain simple while still supporting multiple scripting languages through the bridge's mediation

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The bridge creates a virtual copy of the add-in interface that can execute scripts. Rather than the host directly implementing script execution, the bridge provides a simulated add-in environment that translates script calls into host-compatible operations, enabling language versatility without increasing host complexity

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If developers use compiled add-ins to extend a host, then the extension integrates seamlessly with the host, but developers cannot use dynamic languages and are locked into the host's pre-defined interface

Engineering Contradiction:
Improvelanguage freedomVSAvoidintegration stability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The add-in bridge acts as a reliable intermediary that maintains stable integration between dynamic language scripts and the host. The bridge provides consistent translation and communication protocols, ensuring that scripts written in any dynamic language integrate reliably with the host's expected interface, thus maintaining integration stability while enabling language freedom

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The bridge is pre-configured with the host's interface requirements and translation rules before the script is executed. This preliminary setup ensures that when a dynamic language script runs, it automatically interfaces correctly with the host without requiring runtime configuration or compromising integration stability, thus resolving the contradiction between language freedom and integration reliability

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8762976B2Static extensibility models with dynamic languages and scripts
Publication Date: 2014.06.24 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8762976B2 patent drawing
  • US8762976B2 patent drawing
  • US8762976B2 patent drawing

AI summary

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.