# Recommended RPC architecture for Igntion 8.3 modules with multiple providers

**URL:** <https://forum.inductiveautomation.com/t/recommended-rpc-architecture-for-igntion-8-3-modules-with-multiple-providers/113438>\
**Category:** Module Development\
**Created:** [January 21, 2026, 7:40am UTC](https://forum.inductiveautomation.com/t/recommended-rpc-architecture-for-igntion-8-3-modules-with-multiple-providers/113438 "2026-01-21T07:40:37Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 21, 2026, 5:33pm UTC](https://forum.inductiveautomation.com/t/recommended-rpc-architecture-for-igntion-8-3-modules-with-multiple-providers/113438/2 "2026-01-21T17:33:18Z")

</div>

First, here's my introduction writeup on the new RPC system:

> [@ModuleRPCFactory to ProtoBuf](https://forum.inductiveautomation.com/t/modulerpcfactory-to-protobuf/109936/5):
>
> I'll reproduce the full 'dev introduction' document here - I wrote the thing, and there's nothing sensitive here. It'll eventually end up in the SDK docs, but no idea when. This is more general context about the whole thing and the technical details than purely a migration guide from 8.1 -\> 8.3. The closest thing to a 'tl;dr' is the last ~third of part 2. play_button Part 1

That may help enough on its own.  
I'll also mention that the new RPC system is (deliberately) a lot more flexible and less dogmatic. Both the 'routing' layer and the 'serialization' layer are completely within your power to override and provide your own solution. `RpcInterface`, `RpcDelegate`, and the annotation based model are provided for convenience (and are what we use internally) but you don't _have_ to use them if they don't fit your model. Ditto `ProtoRpcSerializer`; if you want to keep using Java serialization for your module we won't (can't) stop you.

The only underlying requirement (if you want to use our RPC system) is that your gateway hook returns a [`GatewayRpcImplementation`](https://files.inductiveautomation.com/sdk/javadoc/ignition83/8.3.0/com/inductiveautomation/ignition/gateway/rpc/GatewayRpcImplementation.html). That interface contains [`RpcRouter`](https://files.inductiveautomation.com/sdk/javadoc/ignition83/8.3.0/com/inductiveautomation/ignition/gateway/rpc/RpcRouter.html), which you can choose to implement using whatever logic you want based on the incoming `RpcCall` triple (module ID will be static, but the package ID and function name can be used to disambiguate however you want). You just have to implement the routing function and return an [`RpcHandler`](https://files.inductiveautomation.com/sdk/javadoc/ignition83/8.3.0/com/inductiveautomation/ignition/gateway/rpc/RpcHandler.html), which is a relatively straightforward functional interface.

---

_[View the full topic](https://forum.inductiveautomation.com/t/recommended-rpc-architecture-for-igntion-8-3-modules-with-multiple-providers/113438)._
