Framework Refactoring via Type Forwarding and Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing systems lack a framework that can support both legacy and new public surface areas simultaneously without breaking existing binaries or degrading security guarantees, particularly in environments with varying device capabilities.

Innovation Solution

A framework development system that creates reference assemblies with unique identities, uses type forwarding to forward requests between different surface areas, and provides adapters for runtime and development toolkits, ensuring interoperability and maintaining security guarantees.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a framework is rewritten or a new framework is created for use with lower capability devices, then adaptability to different device capabilities is improved, but development time and cost increase

Engineering Contradiction:
Improveadaptability to different device capabilitiesVSAvoiddevelopment time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The framework is segmented into multiple surface areas (e.g., surface area 1, surface area 2) that can be independently factored and deployed. This allows selective deployment of framework components based on device capabilities without rewriting the entire framework, thus reducing development time while maintaining adaptability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The framework employs dynamic loading and unloading of surface areas at runtime. The framework can dynamically adjust which surface areas are loaded based on the target device's capabilities, enabling a single framework to adapt to different devices without requiring separate framework versions for each device type.

Inventive Principle:
Principle #15Dynamics

2Adaptability or versatility

If framework is refactored to support new public surface areas, then adaptability is improved, but compatibility with existing binaries deteriorates

Engineering Contradiction:
Improvesupport for new public surface areasVSAvoidcompatibility with existing binaries
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

A type forwarder assembly acts as an intermediary between the new refactored framework surface areas and existing binaries. The type forwarder provides compatibility layers that map new surface area types to existing types, allowing existing binaries to continue working while the framework evolves with new surface areas.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The framework introduces new surface areas with backward compatibility attributes that preserve existing type identities. By preliminarily maintaining compatibility attributes during refactoring, the framework ensures that existing binaries can still reference and interact with the framework without requiring changes to their code.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If framework evolution is enabled through refactoring, then adaptability is improved, but security guarantees of linking model deteriorate

Engineering Contradiction:
Improveframework evolution capabilityVSAvoiddegradation of security guarantees
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The type forwarder assembly serves as a secure intermediary that maintains the integrity of the linking model. It provides controlled type mapping and forwarding mechanisms that preserve security guarantees by ensuring that only authorized types can be accessed and that the linking model's security policies remain intact during framework evolution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The framework uses type forwarders that create virtual copies or proxies of existing types. These copies maintain the same security properties and linking characteristics as the original types, allowing framework evolution without compromising security guarantees. The type forwarders act as trusted intermediaries that preserve security policies.

Inventive Principle:
Principle #26Copying

4Adaptability or versatility

If framework is split across different units for independent distribution, then adaptability is improved, but device complexity increases

Engineering Contradiction:
Improveindependent distribution of framework unitsVSAvoidcomplexity of framework structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The framework is divided into independent surface area units that can be selectively loaded and unloaded. Each surface area is a self-contained unit with its own types and interfaces, allowing independent distribution and deployment. This segmentation reduces device complexity by enabling selective loading of only the necessary surface areas for a given device.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The framework employs dynamic surface area loading that simplifies the effective framework structure at runtime. By dynamically loading only the necessary surface areas based on device capabilities and usage patterns, the framework reduces the effective complexity visible to devices while maintaining the ability to distribute and update individual surface areas independently.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8863092B2Mechanism for compatibility and preserving framework refactoring
Publication Date: 2014.10.14 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8863092B2 patent drawing
  • US8863092B2 patent drawing
  • US8863092B2 patent drawing

AI summary

The subject disclosure relates to enabling the evolution of a framework by providing public surface area factorings for both old and new public surface areas. The factoring can mitigate changes in the implementation of existing distributions of framework. The factoring can also mitigate breaking existing binaries. Further, the factoring can be provided while mitigating a degradation in the security guarantees of the linking model. The factorings can be applied for runtime and/or for a development toolkit. Thus, multiple, almost simultaneous, interoperable views of a framework implementation can be enabled at runtime and/or at design or build time. The views can represent different versions of the framework.