I protocolli dei meta-oggetti sono molto buoni per separare i client dai server.
- I servizi Web utilizzano WSDL
- OSGI ne fa parte (ma AFAIK manca di molti strumenti di introspezione)
- JINI (basato su Java) su reti regolari (abbastanza silenziosamente popolari nello spazio di difesa)
Alcuni sistemi di controllo su cui ho lavorato ho aggiunto protocolli meta-oggetto e ha funzionato molto bene.
Lo scambio di messaggi è come questo ....
- Gentile server, che cosa fai?
- Gentile cliente, ho i seguenti comandi .....
- Gentile server, quali dati pubblichi?
- Gentile cliente, ho le seguenti notifiche sottoscrivibili .....
- Gentile server, mi dica di più su "Paint fence"
- Gentile cliente, Paint fence prende un numero intero, numero di robot da utilizzare.
- Gentile server, per favore dammi un file di aiuto sul comando "paint fence
- Gentile cliente, ecco un file di aiuto
- Gentile server, iscrivimi a "coordinate n. 1 robot"
- Gentile server, iscriviti a "robot .. coordinate"
-
Gentile server, iscrivimi a "coordinate n. robot 42"
-
Gentile server, esegui paint fence, 42
- Gentile cliente, l'ID di completamento dei comandi è 11.
- Gentile cliente, il robot n. 1 coordina il nuovo valore 123.3434,34.232312,55.222312
Quindi il sovraccarico dei messaggi che utilizzi per le attività reali è basso perché possono anche essere un binario compatto e il server è auto-documentante per gli integratori.
Consente l'integrazione con estrema facilità.
Permette anche di estendere il server molto facilmente SE puoi aggiungere roba al server usando il meta-protocollo. Inizia ad assomigliare ad AOP
- Gentile server, aggiungi il comando delegato FOO (nessuna discussione, "fa pippo")
-
Gentile cliente, sei il delegato FOO.
-
Caro server, sostituisci il valore per la temperatura esterna, il nuovo valore 3.5
Così ora tutti i consumatori ottengono il valore fornito esternamente. Funziona meglio se puoi fare domande come questa ..
-
Gentile server, ottieni il valore di controllo per la temperatura esterna
- Gentile Cliente, temperatura esterna impostata su sorgente esterna, nome host SMART_TEMP_SENSOR