I'm managing a rather widely distributed software application in a semi industrial environment. The software at its heart is based on SOA and employs OPC-UA to make communications between important processes (on local or LAN-based machines) possible. These processes are either a server (e.g. an outer network management server, hardware managers server etc.) or a client (customer panel) or both (servers talking to each other). OPC-UA has the following problems:
- Configuring and maintaining the configurations is a hard job (just Config file settings takes lots of time)
- Security measures are too much detailed for my needs (certificate management and sudden invalidation of certifications on customer systems)
- Modeling and networking overheads in the library make it hard to work with in my communications (high data rates usually ends in server and client disconnecting)
- Unspecified and weird errors like UA Discovery Server stopping to work or respond, etc. which I have reported to OPC GitHub forum many times.
- Troubleshooting in internal parts of OPC UA is nearly impossible.
Overall, for me its performance and stability are not reliable enough. I am willing to sacrifice features for better performance and reliability. I've even considered to write sockets from bottom-up for my inter-process (IPC) needs. This way I could at least trace errors to their core. Since I do not need its most advertised feature (aka PLC support) I'm desperate to find a good alternative for it. My main requirements are:
- OPC-UA like Data Modeling support that enables me to provide a clean interface to customers and other teams (something like IDL).
- Publish/Subscribe, Remote Commands, Update Notifications and Node Based Behavior.
- Tough Security is not my concern as my network is closed.
- High performance for data rates up to 1Gbps (this could mean UDP support).
- I am entirely working in .NET framework. So C# support of OPC-UA is a great help for me.
I've looked at DDS (lacks commands and Update Notifications) and WCF (lacks cross platform support) and many more. This link also notes about MQTT: Alternative to OPC-UA