Originariamente, abbiamo due applicazioni di comunicazione con TCP / IP, entrambe implementate da C ++. I messaggi tra di loro sono di tipo personalizzato.
Orailprogrammaclientverràmodificatoinapplicazionewebinbaseanodejs
elacomunicazionetradiessiverràmodificatainbusdimessaggicomerabbitmq
Quindi il tipo di messaggio tra di loro dovrebbe essere cambiato.
JSON
mi vengono in mente prima, tuttavia i messaggi personalizzati sono troppo complicati, che sono definiti da template
e inheritance
. Sembra che convertire il messaggio personalizzato in JSON
non sia una buona opzione. Ho ragione?
class Address {
int network;
int addressType;
//...
};
class MsgType{
unsigned char msgSeq;
unsigned int msgLen;
//...
};
class Message{
Address destination;
Address source;
MsgType msgType;
//...
};
template <typename T, int RESPONSE_TYPE>
class ResponseMessage : public Message{
//...
}
typedef struct{
int number;
int type;
}ConfigResp;
class CfgResp : public ResponseMessage<ConfigResp, CONFIG_REQUEST>
{
//...
}
Protocol Buffers
è un'altra opzione per me. Cosa dovrei fare?
ridefinire il messaggio personalizzato nel buffer del protocollo? no no
Ecco la mia soluzione: basta avvolgere l'intero messaggio personalizzato originale (tipo binario) nel buffer del protocollo come un messaggio sul lato server, quindi decodificare il messaggio personalizzato (tipo binario) sul lato client. È possibile?