2009-09-12 16 views

risposta

4

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.

1

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.

1

è 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.

1

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/).

3

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.

Problemi correlati