Type Server Dynamic Proxy Stub Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing resource sharing mechanisms in computer systems require pre-compilation and linkage of proxy and stub code, limiting flexibility as they need to know resource types at compile/link time, which may not be known in advance.

Innovation Solution

A type server dynamically provides proxy and stub code on demand during execution, using type identifiers and caching mechanisms to store and retrieve the necessary code for resource types, allowing for delayed loading and efficient inter-process communication.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If proxy and stub code are pre-compiled and linked at compile/link time, then the system has stable and reliable inter-process communication, but the system loses flexibility and adaptability when resource types are not known in advance

Engineering Contradiction:
Improveflexibility in managing resource sharingVSAvoidcomplexity of dynamic code generation and caching mechanism
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The type server pre-generates proxy and stub code when resource types are defined or registered, storing them in a cache for later retrieval. This preliminary action ensures that when inter-process communication occurs, the code is already prepared and available, eliminating the need for complex runtime generation while maintaining flexibility for unknown resource types

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A type server is introduced as an intermediary component between client and server processes. The type server manages the generation, storage, and distribution of proxy and stub code, acting as a central repository that both client and server can query. This mediator handles the complexity of code management centrally, allowing client and server to focus on their primary functions while maintaining adaptability to unknown resource types

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If proxy and stub code are generated dynamically on demand, then the system gains flexibility and adaptability, but the system may experience increased overhead and reduced efficiency due to code generation and retrieval operations

Engineering Contradiction:
Improveadaptability to unknown resource typesVSAvoidefficiency of inter-process communication
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

Proxy and stub code are generated in advance when resource types are defined or registered with the type server, and stored in a cache. This preliminary generation eliminates the need for complex runtime code synthesis, reducing overhead during actual inter-process communication operations while maintaining the ability to handle unknown resource types

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The type server creates and stores copies of proxy and stub code in its cache memory. When client or server processes need these code components, they are retrieved from the cache rather than being regenerated each time. This copying mechanism significantly reduces the overhead of dynamic code generation while maintaining full adaptability to different resource types

Inventive Principle:
Principle #26Copying

3Reliability

If a centralized type server is introduced to manage proxy and stub code, then the system achieves better coordination and consistency, but the system complexity and communication overhead increase

Engineering Contradiction:
Improveconsistency of proxy/stub generationVSAvoidcomplexity of centralized type server architecture
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The type server is designed as a universal component that handles multiple functions: generating proxy code, generating stub code, storing code in cache, and serving code to both client and server processes. This multi-functionality consolidates what would otherwise be separate code generation mechanisms into a single coordinated system, achieving consistency without proportionally increasing complexity

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The type server implements automatic code generation and caching mechanisms that operate autonomously. When resource types are registered or when code is requested, the type server automatically generates or retrieves the appropriate proxy and stub code without requiring manual intervention. This self-service capability reduces operational complexity while maintaining reliable and consistent code generation across the system

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7434235B2Type server caching the proxy/stub generation
Publication Date: 2008.10.07 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7434235B2 patent drawing
  • US7434235B2 patent drawing
  • US7434235B2 patent drawing

AI summary

A type server provides the proxy and stub code needed by client and server programs on demand (dynamically), when the code is needed during execution. When an interface for a resource is defined, the proxy code and the stub code for the type of resource is generated and stored within the type server. The client and server programs each keep a local table of type identifiers/resource type translations for each resource referenced. The local table acts like a cache: when a type identifier is not found in the table, the type server is contacted, and the type identifier for that resource type is retrieved and stored in the cache. Another local table acting as a cache stores type ID and associated proxy and stub code for the resource type. When a program needs the proxy code for a resource type, it checks its cache and it the proxy code is not found the type server is contacted, the proxy (and stub) code is retrieved from the type server and is stored in the cache.