Sto lavorando su un raccoglitore di dati che potrebbe essere chiamato un'API di alcuni tipi, che si basa su .Net Core 2.1
.
Il suo compito è ricevere e prelevare (chiedere) dati dai raccoglitori di dati (eseguibili, DLL, servizi), quelli possono essere in qualsiasi lingua, ma in questo caso restiamo fedeli al C ++.
Il programma di raccolta (API) deve essere indipendente dalla piattaforma, quindi NET Core
(questo non cambierà), mentre i programmi di raccolta dati possono essere scritti in qualsiasi lingua, eseguiti nel modo che ritengono opportuno, dipendenti dalla piattaforma, ma non limitato a quanti di loro possono inviare dati al collezionista.
Questo è tutto locale sulla stessa macchina, probabilmente tra diversi account utente e diverse sessioni per motivi di sicurezza.
La mia idea di implementare questo è creare ASP.NET Core
web API che verrebbe ospitata autonomamente tramite kestrel localmente. È leggero e non richiede un server adeguato poiché non affronterà mai il traffico esterno. Può funzionare su Windows, Linux e Mac.
Il trasporto tra collector e data collector sarebbe basato su web / http, che è disponibile praticamente da qualsiasi lingua e qualcosa che la maggior parte degli sviluppatori sapeva come mantenere.
Ma è eccessivo? Solo per passare messaggi tra processi sulla stessa macchina, ci sono alternative? Io vengo primario dallo sfondo di sviluppo web, quindi questo è abbastanza nuovo per me.
In breve, ho bisogno di ricevere un Collector C,
e chiedere dati da Data Collectors D
.
Questo può avvenire attraverso eventi, abbonamenti, passaggio di messaggi, D chiamando C con dati, C lo elabora. C chiama D per chiedere se ci sono dati. D chiama C con i dati (può essere attivata una nuova chiamata chiedendo dati). C è indipendente dalla piattaforma, D può essere dipendente dalla piattaforma, ma deve essere in grado di comunicare con C. Ci possono essere molti D, in C++, Java, C#
, in esecuzione su Windows, Linux, Mac.
Il Collector C è solo, sempre lo stesso, può solo ricevere e chiedere dati ed è indipendente dalla piattaforma.
Esistono strutture di messaggistica diverse da http che possono essere utilizzate per implementare questo?