In June 2025 I ported the Peakboard Extension Kit to .NET 8. The public interfaces did not change, so an extension still describes a data source as before. The transport between the runtime and the extension host is new, because .NET 8 has no .NET Remoting.
.NET Remoting and System.AddIn, the Managed Add-in Framework, exist only on .NET Framework. Both connected the runtime with the extension host. There is no compatibility layer for them in .NET 8, so I replaced the transport instead of migrating it.
The new transport is a named pipe with a message protocol on top. Every message carries an ID, and a response is matched to its request by that ID. Every call has a timeout. Log entries, errors and commands all travel as messages on the same pipe. The messages are serialized with MessagePack instead of the BinaryFormatter class, which is obsolete and disabled in .NET 8.
The lifetime lease of .NET Remoting is gone too. In the old kit an object expired after 5 minutes without a call. In the new kit a call either returns inside its timeout or fails with an error. That is easier to log and easier to explain.
The host process changed too. It ships self-contained, with the .NET runtime inside. An extension no longer depends on the runtime installed on the device. An update of Peakboard also no longer changes a shared runtime under the extension of another developer.
The last part was the version handling. Extensions in use were built against several versions of the kit. All of them keep working with the new host.
That’s it.
If you have questions feel free to contact me.
Links:
Peakboard.com →
Extension basics →
Peakboard.ExtensionKit on NuGet →
Sample extensions on GitHub →