2015-09-01 15 views
6

Sto utilizzando C++ MFC.Il modo migliore per la comunicazione tra le applicazioni in un'unica applicazione

mi chiedo qual è il modo migliore per comunicare tra le applicazioni X ad un'applicazione che si comportano come "Application Manager"

Sto pensando di usare SendMessge (API Win32) e non so se ci sia un modo migliore per farlo (come prese)

Vorrei ricevere alcuni suggerimenti su questo problema. Vantaggi e svantaggi sono i benvenuti!

Grazie

+1

Le tue applicazioni comunicano su una rete, non è necessario prendere in considerazione i socket a meno che ciò non sia vero. – john

+1

Sembra una struttura server/client, ci sono troppi modi là fuori. Dai un'occhiata ai socket o a GSOAP (stanno anche usando le prese). – Blacktempel

+2

Se 'SendMessage' fa quello che ti serve, basta usarlo. Qualsiasi altra cosa aumenterà la complessità del tuo programma molto. – paddy

risposta

6

L'app è struttura C/S. L'app X è client e l'app manager è Server. È possibile utilizzare DataBase, SendMessage e Socket per la comunicazione tra S e C.

Mapping 1. SendMessage/Mailslot/Tubi/File/memoria condivisa

  • Vantaggi: facile da implementare
  • Svantaggi : C e S dovrebbero essere nello stesso ambiente (PC). C e S dovrebbero essere implementati su Windows. E non c'è nessuna registrazione della cronologia della comunicazione .

2. DataBase

  • Vantaggi: C e S possono essere implementati in ambiente diverso e possono essere attuate a diversi linguaggi di programmazione. E la cronologia delle comunicazioni può essere monitorata.
  • Svantaggi: occorre più impegno per implementare.

3. Socket

  • Vantaggi: C e S possono essere implementati in ambiente diverso e possono essere attuate a diversi linguaggi di programmazione.

  • Svantaggi: occorre più sforzo per implementare.

Di solito, DB & Socket è per la progettazione software di comunicazione/logica complessa che necessita di registrazione della storia. E puoi scegliere SendMessage se la tua comunicazione non è molto complessa.

+1

Grazie !, SendMessage se più veloce di Socket? Se i messaggi inviati al gestore ogni 10 ms (da ciascuna applicazione), l'esecuzione di SendMessage diminuirà, la mia app si bloccherà? –

+3

È necessario aggiungere [Pipes] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365780.aspx) e possibilmente [Mailslots] (https://msdn.microsoft.com/en -us/library/windows/desktop/aa365576.aspx) all'elenco. – IInspectable

+1

Idealmente, SendMessage sarà più veloce di Socket. Poiché i dati inviati da SendMessage non vengono toccati con l'operazione di costo in termini di tempo della rete, come il protocollo di rete. E se il gestore non elabora il messaggio rapidamente, l'app si bloccherà. È possibile utilizzare PostMessage per ignorare il processo dei messaggi del gestore in attesa. – ybdesire