Skip to content
This repository has been archived by the owner on Mar 5, 2024. It is now read-only.

Latest commit

 

History

History
84 lines (57 loc) · 4.67 KB

nodejs-broker-roadmap.md

File metadata and controls

84 lines (57 loc) · 4.67 KB

Node JS Broker Implementation Road Map

High Level Design

Existing Desktop Interop Broker is implemented using following architecture, including main components:

  • Interop Broker - process which handles application connections, routes calls between them and able to launch new applications instances on demand.
  • App Life Cycle Manager - component inside Broker which tracks active connections and can trigger launch of an application on demand by sending a request to the appropriate Application Launcher.
  • App Launcher - responsible for launching of Applications and reporting about their status to App Life Cycle Manager.
  • Interop Transport - plagguble transport implementation, used by both Broker and App Instance for comminication

Key components and high level architecture

Current Broker Implementation for Stand alone Browser based on same principles, therefore already defined required interfaces:

Also default implementation of some components, like InteropRegistryProvider/Broker/Discovery Handler/etc, will work well in Node JS environment. So we can start with adopting everything we already have and implement missed Desktop implementations like native App Life Cycle Manager.

Road Map

1. Adoption of Existing JS Broker for Desktop

As described above - we need to adopt existing functionality of JS Broker for Stand Alone Browser to Desktop environment.

Target State

Node JS Broker, which supports Web Sockets Transport for connectivity, basic Discovery, fully compatible with both Generic and Generated Typescript/.Net clients.

2. Feature Parity with .Net Broker

Implement all functionality, already available in .Net Broker implementation

Target State

Supports all existing functionality and Transport Implementation, including:

  • Different Launch Modes
  • Named Pipes Transport for .Net
  • Full Discovery Support
  • etc

3. Support for JSON and ProtobufJS based Serialization for JS clients

We still need to support ProtobufJS based transport for .Net <-> JS communication and for support of existing clients. However we would like to add JSON based serialization for JS clients to significantly decrease Generated JS bundle size and unblock usage of Generic API (no code generation).

Target State

Plexus Client can choose one of two serialization mechanisms during connection to Broker.

4. Full Implementation of Common Interop API

Support of all supported methods of Common Interop API

Target State

Applications implemented with Common Interop API can use Plexus Interop as InteropPlatform.