For a while I have been pondering the question of, given a standard interface specification, whether there is a way to allow multiple programs to control multiple hardware devices across the network. The program I am working with is the standard implementation of the ASCOM standard.
In short, the principle is that any program can call another known program or driver and expect it (computer-wise) to implement certain standard interfaces, allowing the calling program to control hardware. Currently we only use COM and .NET to do this.
This allows many different hardware and software manufacturers to all build software and drivers that all work together. By now it is becoming quite standard, including standard telescope companies providing drivers.
Within the ASCOM group, we have discussed how to do this across the network, but since we are more of a user group with a couple core devs, we have never been able to really decide what's a good way to do this. In order to understand the situation better, since I have already made a proof of concept system that works, here are several questions.
- What transports/pipes/interops are available that most or all languages support across OSs? Or is the transport OS specific? I mean, for instance, the COM interop is on windows. Is there an equivalent on Linux, for instance, that would work the same and the language could use interchangeably? Most languages support network IO. Do we have to use that for interprocess communication or are there other options?
- To make something truly platform and language agnostic, it would almost need to be dealing with text strings, not binary objects. What standard formats are there, and what are the pros and cons of each.
- What are your thoughts on getting multiple languages to work together on one computer? Can it work well? Inter-process or intra-process as well?
- Is something like ASCOM done in any other field of computing? Or are astronomers the only people who connect various software programs and hardware devices together to get one working system?
If you need more information, feel free to ask. The ASCOM standards home page is short and hopefully might help illustrate things a bit, but I don't expect you to crawl all over the site before you can answer. :D