2009-10-18 18 views
8

Voglio imparare a programmare C++ (nativo) sulla piattaforma Windows per la comunicazione RPC. Voglio imparare sia lato server che lato client. Voglio anche imparare alcuni argomenti avanzati, come prestazioni e sicurezza.Esercitazione su C++ RPC?

Qualsiasi materiale consigliato da leggere?

(BTW: Ho cercato su google alcuni, ma tutti o troppo brevi o COM connessi, voglio imparare la programmazione RPC puro senza COM Sto usando Visual Studio Team System 2008 con C++..)

+1

Non sto programmando socket, ma sviluppo client e server RPC. Qualche lettura raccomandata secondo i miei punti nella mia domanda? – George2

+1

Stai guardando REST o SOAP? Ce ne sono altri, ma questi sono quelli popolari. – Polaris878

+1

No, sto cercando RPC, pura programmazione RPC. Qualche lettura consigliata? – George2

risposta

2

Hai bisogno di imparare 3 cose diverse, probabilmente:

  • Il C++ linguaggio di programmazione
  • RPC
  • Alcuni libreria C++ RPC
+0

Sì, qualsiasi lettura consigliata secondo i miei punti nella mia domanda? – George2

8

Vorrei iniziare con lo Platform SDK samples on RPC.

  • ASYNCRPC illustra la struttura di un'applicazione RPC che utilizza chiamate di procedura remota asincrona. Mostra inoltre vari metodi di notifica del completamento della chiamata.
  • CLUUID dimostra l'uso dell'UUID oggetto-client per consentire a un client di selezionare da più implementazioni di una procedura remota.
  • DATI directory contiene quattro programmi:
    • Dunion illustra discriminata (non capsulato) sindacati;
    • INOUT mostra i parametri [in], [out];
    • REPAS dimostra l'attributo represent_as;
    • XMIT dimostra l'attributo transmit_as.
  • DYNEPT dimostra un'applicazione client gestire la sua connessione al server tramite endpoint dinamici.
  • La directory FILEREP contiene quattro esempi che illustrano come gli sviluppatori possono scrivere un servizio di replica file semplice, un servizio di replica file multiutente, un servizio che supporta funzionalità di sicurezza e un servizio che utilizza pipe asincrone RPC.
  • La directory MANIGLIE contiene tre programmi, AUTO, CXHNDL, USRDEF, che mostrano rispettivamente handle handle_handle, [context_handle] e generici (definiti dall'utente).
  • HELLO è un'implementazione client/server di "Hello, world."
  • PICKLE directory contiene due programmi:
    • PICKLP dimostra procedura di serializzazione dei dati;
    • PICKLT dimostra tipo di dati di serializzazione; entrambi i programmi utilizzano il [codificare] e [decode] attributi
    • .
  • TUBI dimostra l'uso del costruttore del tipo tubo
  • RPCSVC dimostra l'implementazione di un servizio con RPC.
  • STROUT dimostra come allocare memoria su un server per un oggetto bidimensionale (una serie di puntatori) e passarlo di nuovo al client come parametro [out] -only. Il client libera quindi la memoria. Questa tecnica consente allo stub di chiamare il server senza sapere in anticipo quanti dati verranno restituiti.
+0

Grazie Shay! Il link che hai consigliato contiene davvero buoni esempi di codice. Ciò di cui ho bisogno oltre ai campioni di codice sono un documento completo che descrive la programmazione RPC, gli interni, i trucchi, ecc. Qualunque documento consigliato oltre al codice? – George2

+1

Bene c'è l'MSDN, e correttamente alcuni vecchi libri, ma RPC è morto in molti modi: la maggior parte di ppl userà DCOM \ Com + \ ServicedComponent (che è basato su RPC) e i ragazzi veramente fantastici stanno giocando con WCF. –

+0

Beh, sono d'accordo. Ma dal momento che sto mantenendo un sistema legacy che utilizza RPC, devo usare e imparare RPC. Qualche lettura raccomandata (ho bisogno di imparare un po 'di background che potrebbe aiutarmi a capire gli eccellenti campioni RPC che hai citato)? – George2

2

RPC == "Remote Procedure Call"

In sostanza, la sua l'idea che le comunicazioni tra due endpoint è meglio modellato sul concetto di tali endpoint che fanno funzione logica invita a vicenda. In generale un lato "pubblica" un'API in qualche modo (per esempio, se usi SOAP, tipicamente avrai un file chiamato WSDL (pronunciato wizdel) che enumera le funzioni a cui rispondi ... un client prima scaricherà il tuo WSDL e quindi effettuare chiamate alle API disponibili) ... In questi giorni, quasi tutte le tecnologie disponibili sovrapporranno i loro protocolli specifici su HTTP (ad esempio Web Services, UPnP, REST). Ciò significa in genere che sei i server sono implementati sulla parte superiore del server web ...

quindi, se tutto ciò che serve per implementare è il lato client, quindi probabilmente si può utilizzare libcurl per tutto il vostro HTTP ha bisogno di ...

+0

Grazie dicroce! Quello che hai menzionato è molto eccellente! Come principiante per RPC, ciò di cui ho bisogno oltre ai campioni di codice sono un documento completo che descrive la programmazione RPC, gli interni, i trucchi, ecc. Qualunque documento consigliato oltre al codice? – George2

4

perché ti vuoi imparare "raw" RPC? ci sono molti buoni livello superiore implementazioni RPC:

  1. implementazioni CORBA
  2. google's protocol buffers
  3. Thrift
+0

Sto integrando con alcuni sistemi legacy che utilizzano RPC come protocollo di programmazione. Quindi, qualsiasi lettura consigliata su questo argomento? – George2

1

Date un'occhiata a RCF, Deltavsoft_Link e CodeProject_Link

comportamento principale è che RCF non usa un separato IDL (Interface Definition Language).