Ho usato DDS parecchio, in particolare l'implementazione RTI di DDS. Ho dedicato molto tempo e impegno a rendere la libreria RTI utilizzabile per gli sviluppatori ordinari che desiderano produrre e comporre i dati senza preoccuparsi dei problemi relativi alla qualità del servizio o di come i loro dati giungono a destinazione. Ciò comporta il wrapping dell'implementazione RTI in una libreria che fornisce un'interfaccia di richiamo per gli abbonati e un modo thread-safe di pubblicare i dati, il tutto in modo indipendente dalla piattaforma. E tutto questo viene creato utilizzando strumenti di generazione automatica del codice che supportano Windows 32/64 bit, Linux 64 bit e Java.
Cercare di usare le classi DDS non elaborate è solo questione di problemi IMHO. Il codice per impostare tutto e mantenere la QoS compatibile tra editori e iscritti non è bello. E avere un team di sviluppatori che prova ad utilizzarlo direttamente significa che avrai un lavoro a tempo pieno a supporto di loro.
Onestamente non riesco a capire perché non forniscono subito una soluzione di wrapper simile a quella che ho creato, perché è molto più facile da usare. - Probabilmente perché vogliono venderti un grosso contratto di supporto.
Il problema più grosso che avrai sarà quello di mettere a punto la QoS in un modo che soddisfi le tue esigenze. Se si guardano le statistiche pubblicate sul sito Web di RTI, sono tutte su messaggi molto piccoli, che potrebbero essere adatti a voi. Il nostro scenario di casi d'uso si riduce da piccoli messaggi infrequenti a messaggi ad alto throughput costanti ad alta velocità dell'ordine di 70 MB / s. Accordare la tua QoS per soddisfare questa domanda è difficile! Quasi sicuramente avrai bisogno di supporto quasi fino a quando non avrai qualcosa che si blocca insieme.
Ma dal lato positivo ti dà un modo indipendente dalla piattaforma di trasferire i dati e il servizio di scoperta è bello perché ti permette di spostare i servizi tra macchine molto facilmente senza letteralmente nessuna modifica alla configurazione. La sua capacità di supportare la memoria multicast e condivisa significa che può funzionare in modo efficiente quando si hanno più abbonati agli stessi dati, ma è necessario impostare le opzioni correttamente per ottenere ciò. Hai anche la possibilità di inviare i dati in modo affidabile o non rintracciabile, in base alle tue esigenze.
Uno svantaggio che può colpirti se stai usando una comunicazione affidabile è che se un abbonato ha un problema e interrompe il prelievo di dati dalla coda, può avere un effetto negativo sugli altri abbonati che girano su altri computer.