modi che posso pensareQual è il modo migliore per C# app per comunicare unix C++ app
- servizio Web o sapone
- Socket
- tabella del database
- file condiviso
Qualsiasi esempio conciso di cui si conosce il servizio web?
modi che posso pensareQual è il modo migliore per C# app per comunicare unix C++ app
Qualsiasi esempio conciso di cui si conosce il servizio web?
I servizi Web o il sapone sarebbero abbastanza semplici, tuttavia, se l'applicazione C++ non è un server Web in modo naturale (o l'applicazione C#), potrebbe essere più semplice utilizzare direttamente la programmazione socket.
Gli zoccoli sono abbastanza facili da usare sia da C# che da C++. Ti danno il controllo completo sul tipo di data trasmessa, al costo di potenzialmente un po 'più di lavoro nella gestione.
I problemi più importanti da osservare sono probabilmente l'endianità dei dati binari e la codifica dei dati di testo, se si utilizzano direttamente i socket. Altrimenti, è molto facile.
Gli zoccoli sono più facili; e lo farei sempre per primo Se il database è un'opzione, è anche banale, ma ciò dipenderebbe davvero. Se si tratta di eventi in coda, ciò avrebbe senso, ma se si tratta di richiesta/risposta, probabilmente non è così eccezionale.
è possibile utilizzare gsoap per far sì che un programma C/C++ utilizzi un servizio Web.
È inoltre possibile chiamare un programma cgi che è scritto in C++.
Ho scritto un server in C che comunica con un client C# e l'endianess può essere un problema da affrontare, i servizi Web sono molto più semplici.
Vuoi che comunichi tra loro (ad esempio, tramite tcp (come molti altri hanno indicato)) o vuoi essere in grado di tradurre oggetti da C# a C++? Se è così, controlla Apache Thrift (http://incubator.apache.org/thrift/).
Dato che si è già a conoscenza del servizio Web e dell'approccio socket, menzionerò alcune altre opzioni. Se ti piace la semplicità, controlla XML-RPC. Questo è ciò che SOAP era prima che i grandi comitati standard e gli interessi aziendali iniziassero a controllare le specifiche. È possibile trovare implementazioni di XML-RPC per quasi tutti i principali linguaggi di programmazione. Hessian è un protocollo binario interessante che ha molti fan e supporta quasi tutte le principali lingue. Protocol Buffers è popolare in Google. La versione ufficiale di Google non supporta C#. Tuttavia, i due più alti utenti di SO forniscono porte di protobuf per lo spazio .Net.
Sarò probabilmente ridicolizzato per questo, ma anche dare un'occhiata a CORBA. Non è in voga in questi giorni, ma ha molti credenziali tecnici sostanziali, specialmente se una delle estremità della comunicazione è C++. IMHO, è WS- * con supporto OO e nessuna parentesi angolare richiesta. Per l'interoperabilità, penso che dovrebbe ancora avere un posto al tavolo. Quando ero impegnato nello sviluppo del C++, ho trovato OmniOrb per essere abbastanza efficace ed efficiente. Dai uno sguardo a questo SO Question per alcuni suggerimenti sull'utilizzo di CORBA in .Net.
In questo giorno di infatuazione ORM, penso che il Database come meccanismo di integrazione sia spesso trascurato. –