Client-Agnostic Router for Heterogeneous Input Routing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Distributed applications face challenges in versioning and upgrading servers, requiring multiple clients on user machines to handle diverse data types and versions, which complicates data processing and communication between clients and servers.

Innovation Solution

A client-agnostic software routing component is introduced that registers as a file extension handler and protocol handler during client application installation, enabling it to route input data to the most appropriate client application version and type, with features like internal forwarding and external verification to ensure data integrity.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple client applications are installed to handle different data types and versions, then the system can support diverse functionalities and server versions, but the device complexity and difficulty of data routing increase

Engineering Contradiction:
Improvesupport for diverse data types and server versionsVSAvoidcomplexity of data routing
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a router component as an intermediary between the operating system and multiple client applications. This router intercepts all input data, parses it to identify type and version, and routes it to the appropriate client application. By placing this intermediary layer, the system achieves versatile support for multiple data types and server versions without requiring each application to directly handle all routing logic, thus managing complexity centrally rather than distributing it across all applications.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the data handling architecture by separating the routing function from the application logic. The router component is divided into distinct modules: an input data receiver, a parser that extracts type and version information, a routing decision maker, and an output sender. This segmentation allows each component to focus on a specific task, making the overall system more manageable and maintainable while supporting diverse data types and applications.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If each client application registers as the file extension handler and protocol handler, then the application can directly receive input data, but other applications cannot handle the same data types and versioning becomes problematic

Engineering Contradiction:
Improvedirect data reception by applicationVSAvoidhandling of multiple applications and versions
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The router component is designed as a universal handler that can process all input data types and versions for all client applications. Instead of each application registering as the handler for specific data types (which would limit other applications), the router registers as the universal handler for all relevant data types. It then uses internal logic to determine which application should receive which data based on type and version, enabling multiple applications to coexist and handle different versions simultaneously.

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

Solution Approach 2:

The router acts as an intermediary between the operating system's file extension and protocol handlers and the multiple client applications. When data arrives, the router intercepts it, parses the type and version information, and then forwards it to the appropriate application. This intermediary approach allows the system to maintain direct data reception efficiency while enabling versatile multi-application support through centralized routing logic.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Extent of automation

If the router is installed as a shared component, then router upgrades are automatically guaranteed with new client installations, but multiple routers may be installed by different users with different access levels

Engineering Contradiction:
Improveautomatic router upgradesVSAvoidconsistency of routing behavior
Core Design Contradiction:
Extent of automationVSReliability

Solution Approach 1:

The router is designed to be self-upgrading through the installation of new client applications. When a new client application is installed, it automatically brings the updated router component with it, ensuring the router is upgraded without requiring separate manual updates. The router also performs self-verification by checking for the presence of other router instances and determining which one should be active, thereby maintaining reliability despite multiple installations by different users with varying access levels.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7895346B2Application level router for routing heterogeneous input to the most appropriate application
Publication Date: 2011.02.22 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7895346B2 patent drawing
  • US7895346B2 patent drawing
  • US7895346B2 patent drawing

AI summary

A client-agnostic software routing component for routing input data of a type and version to a most appropriate type and version of client application of a family of related applications. The router, rather than the client application, registers as the file extension handler and as the protocol handler, and thus, receives all input data targeting the client applications. On startup, the router creates a list of available client applications, the client versions and types, and versions of input data the clients can handle. On receiving the input, the router determines if the router can parse the version of the input. The router refers to the list of available clients to determine if one or more of the client applications can handle a particular version and type of the input data. After this determination, the router routes the input to the most appropriate client.