Shared IPC Library for Client-Server Code Complexity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Client/Server high-performance Inter Process Communication (IPC) is challenging due to the need for separate and potentially buggy implementations by each client and server, resulting in a large and complex codebase.

Innovation Solution

A shared reusable IPC library is introduced, comprising a client IPC library and a server IPC library, providing unified mechanisms for creating, destroying, sending, and receiving IPC messages, with the server library offering initialization functions and the client library handling communication functions, allowing for unified development across different machines or within the same system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If each client and server uses their own implementation of sockets and shared memory, then customization and adaptability are improved, but code complexity and the risk of bugs increase significantly

Engineering Contradiction:
ImprovecustomizationVSAvoidcode complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system is divided into distinct segments: a unified core IPC library that handles the complex communication protocols, and application-specific modules that remain simple. This segmentation allows the core complexity to be isolated and reused, while individual applications maintain simplicity through standardized interfaces.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The unified IPC library acts as an intermediary layer between applications and the underlying communication mechanisms (sockets, shared memory). This mediator abstracts the complexity of multiple communication methods, providing a single standardized interface that applications use regardless of the underlying implementation details.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If each client and server uses their own implementation of sockets and shared memory, then specific optimization is improved, but reliability decreases due to multiple buggy implementations

Engineering Contradiction:
ImproveoptimizationVSAvoidbug-free implementation
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The unified IPC library is designed to be universal, serving multiple applications and communication scenarios through a single implementation. This multi-functional design has been tested across various use cases, making it more reliable than individual implementations while still allowing optimization through configuration and parameter tuning for specific applications.

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

Solution Approach 2:

The unified library incorporates comprehensive error handling, validation, and edge case management that would be difficult to implement consistently across multiple individual implementations. This beforehand cushioning against potential failures improves reliability by preventing bugs before they manifest in specific applications.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

3Device complexity

If a unified IPC library is used across all clients and servers, then code complexity is reduced, but adaptability to specific communication needs may be limited

Engineering Contradiction:
Improvecode complexityVSAvoidcustomization
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The unified IPC library incorporates dynamic configuration capabilities, allowing it to adapt its behavior based on the specific communication needs of different applications. Parameters such as message formats, timeout values, and communication protocols can be dynamically adjusted without changing the core library code, maintaining both simplicity and adaptability.

Inventive Principle:
Principle #15Dynamics

4Ease of manufacture

If separate implementations are used by each client and server, then maintenance difficulty increases, but flexibility in modification is improved

Engineering Contradiction:
Improveease of maintenanceVSAvoidflexibility
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The unified IPC library merges the implementation of communication logic into a single shared component that serves all clients and servers. This consolidation dramatically improves maintainability, as bug fixes, security updates, and feature enhancements need to be made in only one place rather than replicated across multiple individual implementations.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS9176796B2Shared memory reusable IPC library
Publication Date: 2015.11.03 RED HAT INC
  • US9176796B2 patent drawing
  • US9176796B2 patent drawing
  • US9176796B2 patent drawing

AI summary

An apparatus and a method for a shared reusable (IPC) library. The shared reusable IPC library includes a client IPC library and a server IPC library. The client IPC library communicates with a client application. The server IPC library communicates with the sender application. The client IPC library includes instructions for creating, destroying, sending, or receiving IPC messages to and from the client application. The server IPC library includes an initialization function for the server application.