C ++ - RPC-Lernprogramm? [geschlossen]

8

Ich möchte lernen, C ++ (nativ) auf Windows-Plattform für RPC-Kommunikation zu programmieren. Ich möchte sowohl Server- als auch Client-Seite lernen. Ich möchte auch einige fortgeschrittene Themen wie Leistung und Sicherheit lernen.

Irgendwelche guten empfohlenen Materialien zu lesen?

(Übrigens: Ich habe ein paar Google gegoogelt, aber alle sind entweder zu kurz oder COM bezogen, ich möchte reine RPC-Programmierung ohne COM lernen. Ich verwende VSTS 2008 mit C ++.)

    
George2 18.10.2009, 14:20
quelle

6 Antworten

6

Versuchen Sie Folgendes:

Übersicht

Technische Referenz - beschreibt auch, was es ist & amp; wie es funktioniert

    
slashmais 18.10.2009, 17:31
quelle
8

Ich würde mit den Platform SDK-Beispielen auf RPC beginnen.

  • ASYNCRPC veranschaulicht die Struktur einer RPC-Anwendung, die asynchrone Remoteprozeduraufrufe verwendet. Es zeigt auch verschiedene Methoden der Benachrichtigung über den Abschluss des Anrufs.
  • CLUUID demonstriert die Verwendung der Clientobjekt-UUID, damit ein Client aus mehreren Implementierungen einer Remoteprozedur auswählen kann.
  • DATA Verzeichnis enthält vier Programme:
    • DUNION veranschaulicht diskriminierte (nicht eingekapselte) Verbindungen;
    • INOUT demonstriert [in], [out] Parameter;
    • REPAS demonstriert das Attribut represent_as;
    • XMIT demonstriert das Attribut transmit_as.
  • DYNEPT demonstriert eine Clientanwendung, die ihre Verbindung zum Server über dynamische Endpunkte verwaltet.
  • Das Verzeichnis FILEREP enthält vier Beispiele, die veranschaulichen, wie Entwickler einen einfachen Dateireplikationsdienst, einen Dateireplikationsdienst für mehrere Benutzer, einen Dienst mit Sicherheitsfunktionen und einen Dienst mit asynchronen RPC-Pipes schreiben können.
  • HANDLES -Verzeichnis enthält drei Programme, AUTO, CXHNDL, USRDEF, die auto_handle, [context_handle] bzw. generische (benutzerdefinierte) Handles demonstrieren.
  • HELLO ist eine Client / Server-Implementierung von "Hello, world".
  • PICKLE Verzeichnis enthält zwei Programme:
    • PICKLP demonstriert die Serialisierung von Datenprozeduren;
    • PICKLT demonstriert die Serialisierung des Datentyps; Beide Programme verwenden die Attribute [encode] und [decode].
  • PIPES demonstriert die Verwendung des Rohrtypkonstruktors.
  • RPCSVC demonstriert die Implementierung eines Service mit RPC.
  • STROUT demonstriert, wie Speicher auf einem Server für ein zweidimensionales Objekt (ein Array von Zeigern) zugewiesen und als ein [out] only-Parameter an den Client zurückgegeben wird. Der Client gibt dann den Speicher frei. Diese Technik ermöglicht es dem Stub, den Server anzurufen, ohne im Voraus zu wissen, wie viele Daten zurückgegeben werden.
Shay Erlichmen 18.10.2009 14:51
quelle
4

Warum willst du "rohes" RPC lernen? Es gibt viele gute RPC-Implementierungen auf höherer Ebene:

  1. CORBA-Implementierungen
  2. Google-Protokollpuffer
  3. Sparsamkeit
geva30 18.10.2009 16:19
quelle
2

Sie müssen wahrscheinlich 3 verschiedene Dinge lernen:

  • Die C ++ Programmiersprache
  • RPC
  • Einige C ++ RPC-Bibliothek
dirkgently 18.10.2009 14:22
quelle
2

RPC == "Remoteprozeduraufruf"

Im Wesentlichen ist es die Idee, dass die Kommunikation zwischen zwei Endpunkten am besten auf dem Konzept der Endpunkte basiert, die logische Funktionsaufrufe aufeinander aufbauen. Im Allgemeinen "veröffentlicht" eine Seite eine API auf irgendeine Weise (wenn Sie beispielsweise SOAP verwenden, haben Sie normalerweise eine Datei namens WSDL (sprich Wizdel), die die Funktionen aufzählt, auf die Sie antworten ... ein Client lädt zuerst Ihre WSDL und dann Aufrufe Ihrer verfügbaren APIs) ... Heutzutage werden fast alle verfügbaren Technologien ihre spezifischen Protokolle über HTTP (zum Beispiel Web Services, UPnP, REST) ​​schichten. Dies bedeutet im Allgemeinen, Sie sind Server sind auf Webservern implementiert ...

Wenn also alles, was Sie implementieren müssen, die Client-Seite ist, dann können Sie wahrscheinlich libcurl für all Ihre HTTP-Bedürfnisse verwenden ...

    
dicroce 18.10.2009 15:23
quelle
1
___ answer1585292 ___

Warum willst du "rohes" RPC lernen? Es gibt viele gute RPC-Implementierungen auf höherer Ebene:

  1. CORBA-Implementierungen
  2. Google-Protokollpuffer
  3. Sparsamkeit
___ qstnhdr ___ C ++ - RPC-Lernprogramm? [geschlossen] ___ qstntxt ___

Ich möchte lernen, C ++ (nativ) auf Windows-Plattform für RPC-Kommunikation zu programmieren. Ich möchte sowohl Server- als auch Client-Seite lernen. Ich möchte auch einige fortgeschrittene Themen wie Leistung und Sicherheit lernen.

Irgendwelche guten empfohlenen Materialien zu lesen?

(Übrigens: Ich habe ein paar Google gegoogelt, aber alle sind entweder zu kurz oder COM bezogen, ich möchte reine RPC-Programmierung ohne COM lernen. Ich verwende VSTS 2008 mit C ++.)

    
___ answer1585071 ___

Ich würde mit den Platform SDK-Beispielen auf RPC beginnen.

  • ASYNCRPC veranschaulicht die Struktur einer RPC-Anwendung, die asynchrone Remoteprozeduraufrufe verwendet. Es zeigt auch verschiedene Methoden der Benachrichtigung über den Abschluss des Anrufs.
  • CLUUID demonstriert die Verwendung der Clientobjekt-UUID, damit ein Client aus mehreren Implementierungen einer Remoteprozedur auswählen kann.
  • DATA Verzeichnis enthält vier Programme:
    • DUNION veranschaulicht diskriminierte (nicht eingekapselte) Verbindungen;
    • INOUT demonstriert [in], [out] Parameter;
    • REPAS demonstriert das Attribut represent_as;
    • XMIT demonstriert das Attribut transmit_as.
  • DYNEPT demonstriert eine Clientanwendung, die ihre Verbindung zum Server über dynamische Endpunkte verwaltet.
  • Das Verzeichnis FILEREP enthält vier Beispiele, die veranschaulichen, wie Entwickler einen einfachen Dateireplikationsdienst, einen Dateireplikationsdienst für mehrere Benutzer, einen Dienst mit Sicherheitsfunktionen und einen Dienst mit asynchronen RPC-Pipes schreiben können.
  • HANDLES -Verzeichnis enthält drei Programme, AUTO, CXHNDL, USRDEF, die auto_handle, [context_handle] bzw. generische (benutzerdefinierte) Handles demonstrieren.
  • HELLO ist eine Client / Server-Implementierung von "Hello, world".
  • PICKLE Verzeichnis enthält zwei Programme:
    • PICKLP demonstriert die Serialisierung von Datenprozeduren;
    • PICKLT demonstriert die Serialisierung des Datentyps; Beide Programme verwenden die Attribute [encode] und [decode].
  • PIPES demonstriert die Verwendung des Rohrtypkonstruktors.
  • RPCSVC demonstriert die Implementierung eines Service mit RPC.
  • STROUT demonstriert, wie Speicher auf einem Server für ein zweidimensionales Objekt (ein Array von Zeigern) zugewiesen und als ein [out] only-Parameter an den Client zurückgegeben wird. Der Client gibt dann den Speicher frei. Diese Technik ermöglicht es dem Stub, den Server anzurufen, ohne im Voraus zu wissen, wie viele Daten zurückgegeben werden.
___ answer1585014 ___

Sie müssen wahrscheinlich 3 verschiedene Dinge lernen:

  • Die C ++ Programmiersprache
  • RPC
  • Einige C ++ RPC-Bibliothek
___ tag123visualc ___ Microsoft Visual C ++ ist ein C-, C ++ - und C ++ / CLI-Compiler für Windows. Die neueste Version des Compilers ist Visual C ++ 2017. Der Compiler unterstützt folgende Sprachen: C: Unterstützt C90 und die meisten C99- und C11-Teile des ISO C ++ - Standards ab Visual Studio 2017 C ++: Unterstützung für die meisten C ++ 11 Features und einige C ++ 14 und C ++ 17 Features ab Visual Studio 2017 C ++ / CLI ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123visualstudio2008 ___ Dieses Tag bezieht sich auf die Visual Studio-Reihe von Software-Entwicklungsprodukten von Microsoft, der Version von 2008. Verwenden Sie dieses Tag nur, wenn Sie eine bestimmte Frage zu Visual Studio haben - nicht nur ein Coding-Problem. Fragen sollten spezifisch für die Version 2008 von Visual Studio sein. ___ answer1585142 ___

RPC == "Remoteprozeduraufruf"

Im Wesentlichen ist es die Idee, dass die Kommunikation zwischen zwei Endpunkten am besten auf dem Konzept der Endpunkte basiert, die logische Funktionsaufrufe aufeinander aufbauen. Im Allgemeinen "veröffentlicht" eine Seite eine API auf irgendeine Weise (wenn Sie beispielsweise SOAP verwenden, haben Sie normalerweise eine Datei namens WSDL (sprich Wizdel), die die Funktionen aufzählt, auf die Sie antworten ... ein Client lädt zuerst Ihre WSDL und dann Aufrufe Ihrer verfügbaren APIs) ... Heutzutage werden fast alle verfügbaren Technologien ihre spezifischen Protokolle über HTTP (zum Beispiel Web Services, UPnP, REST) ​​schichten. Dies bedeutet im Allgemeinen, Sie sind Server sind auf Webservern implementiert ...

Wenn also alles, was Sie implementieren müssen, die Client-Seite ist, dann können Sie wahrscheinlich libcurl für all Ihre HTTP-Bedürfnisse verwenden ...

    
___ tag123rpc ___ Remote Procedure Call (RPC) ist ein Ansatz für die Interprozessor- oder verteilte Kommunikation, bei der eine Reihe von Diensten oder Prozeduren für entfernte Clients verfügbar gemacht wird. RPC ist sowohl ein allgemeines Konzept für die Kommunikation zwischen Prozessoren als auch eine Abkürzung für die ursprüngliche Implementierung von Sun (im Folgenden SunRPC genannt). ___ answer1585506 ___

Versuchen Sie Folgendes:

Übersicht

Technische Referenz - beschreibt auch, was es ist & amp; wie es funktioniert

    
___ antwort12515332 ___

Schauen Sie sich RCF an, Deltavsoft_Link und Jean Davy 20.09.2012 14:56

quelle