I am working on an a data collector which could be called an API of some sorts, which is based on
.Net Core 2.1 .
It's job is to receive and pull (ask for) data from data collectors(executable, DLL,service), those can be in any language, but in this case let's stick with C++.
Collector (API) has to be platform independent, hence .
NET Core (this is not going to change), while data collectors can be written in any language, run in any way they see fit, be platform dependant, but not limited to how many of them can send data to collector.
This is all local on same machine, possibly between different user accounts and different sessions due to security reasons.
My idea towards implementing this is to create
ASP.NET Core web API which would be self hosted through kestrel locally. It's lightweight and does not require a proper server since it will never deal with outside traffic. Can run on Windows, Linux and Mac.
Transport between collector and data collectors would be web/http based, which is available from pretty much any language and something that majority of developers known how to maintain.
But is it an overkill? Just to pass messages between processes on same machine, are there any alternatives? I come primary from web development background, so this is quite new to me.
In short, I need a
Collector C, receive and ask for data from
Data Collectors D.
This can be through events, subscriptions, message passing, D calling C with data, C processes it. C calls D to ask if there is any data. D calls C with data (can be new call triggered by asking for data). C is platform independent, D can be platform dependant, but must be able to communicate with C. There can be many D, in
C++, Java, C#, running in Windows, Linux, Mac.
Collector C is alone, always same, can only receive and ask for data and is platform independent.
Are there any messaging frameworks apart from http that can be used to implement this?