Skip to content

feat: Modern RPC Server design#2

Merged
ralflang merged 2 commits intoFRAMEWORK_6_0from
feat/modern-rpc
Apr 9, 2026
Merged

feat: Modern RPC Server design#2
ralflang merged 2 commits intoFRAMEWORK_6_0from
feat/modern-rpc

Conversation

@ralflang
Copy link
Copy Markdown
Member

@ralflang ralflang commented Apr 9, 2026

Modern RPC Server Design

Remodels the old horde/rpc into a PSR-7 based Request Handler / Middleware approach.
Emits events for a PSR-14 EventListener instead of native logging/observability handling.
Currently implements soap (wsdl-less, backed by php-ext-soap) and json-rpc (now both for 1.1 and 2.0 protocols)
On top of JSON-RPC it also models a simple MCP protocol for tools and resources.

The new library is decoupled from Horde context, i.e. the Registry is now one of many pluggable API providers.
The Registry API provider may need to migrate into a separate package in a later stage but we are not there yet.

In middleware mode, the protocol handlers check if the incoming request looks like it is for them to handle and if not, they pass to the next middleware.
In handler mode, a request not matching protocol expectations emits an appropriate error response format.

Implementing ActiveSync and DAV Protocol Handlers in the same fashion needs some ground work in other areas first.

Documentation

See docs folder for architecture description

ralflang added 2 commits April 8, 2026 22:38
Remodels the old horde/rpc into a PSR-7 based Request Handler / Middleware approach.
Emits events for a PSR-14 EventListener instead of native logging/observability handling.
Currently implements soap (wsdl-less, backed by php-ext-soap) and json-rpc (now both for 1.1 and 2.0 protocols)
On top of JSON-RPC it also models a simple MCP protocol for tools and resources.

The new library is decoupled from Horde context, i.e. the Registry is now one of many pluggable API providers.
The Registry API provider may need to migrate into a separate package in a later stage but we are not there yet.

In middleware mode, the protocol handlers check if the incoming request looks like it is for them to handle and if not, they pass to the next middleware.
In handler mode, a request not matching protocol expectations emits an appropriate error response format.

Implementing ActiveSync and DAV Protocol Handlers in the same fashion needs some ground work in other areas first.
@ralflang ralflang requested a review from TDannhauer April 9, 2026 09:19
@ralflang ralflang merged commit d4e150b into FRAMEWORK_6_0 Apr 9, 2026
0 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant