We are developing a desktop application for Windows using C#. The application does some heavy calculation and drives specialized hardware. Our application should expose some functionality that third party applications can use out-of-process (i.e. server - client), which includes accessing data that lives in our application, or commanding our application to perform some actions. One of the reasons that we require this capability is to allow automation from third-party applications.
I have been looking into some possibilities to accomplish what we want but this topic is completely new for me so I thought the best would be to ask for advice to people with more experience. So far I have looked into COM/COM+ and Windows Communication Foundation (WCF). Both seem to offer the means to achieve what we need, but:
- COM/COM+ : I know COM have been around for long, and most of the documentation I find is from a few years ago. I have nothing against that, I just wonder whether this is still the recommended way to go.
- Windows Communication Foundation (WCF): I get the impression that WCF is used more in the context of web services and I have seen some concerns about performance when compared to COM (https://social.msdn.microsoft.com/Forums/vstudio/en-US/adb79021-89b8-47ab-a02d-33b2e777cb73/wcfcom-performance-comparison?forum=wcf)
For the record, I have also look into .Net Remoting, but it is not the recommended approach for new developments (https://msdn.microsoft.com/en-us/library/kwdt6w2k(v=vs.100).aspx)
What would be your advice on this matter? Is there another approach?
Thanks in advance!