C++ RPC tutorial? [zamknięte]

Chcę nauczyć się programowania C++ (natywnego) na platformie Windows do komunikacji RPC. Chcę poznać zarówno stronę serwera jak i klienta. Chcę również nauczyć się kilku zaawansowanych tematów, takich jak wydajność i bezpieczeństwo.

Jakieś dobre polecane materiały do przeczytania?

(BTW: Wygooglowałem kilka, ale wszystkie albo zbyt krótkie albo związane z COM, chcę nauczyć się czystego programowania RPC bez COM. Używam VSTS 2008 z C++.)

Author: jessehouwing, 2009-10-18

6 answers

Spróbuj tego:

Przegląd

Technical Reference - opisuje również co to jest i jak działa

 6
Author: slashmais,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 17:31:19

Chciałbym zacząć od Platform SDK samples on RPC .

  • ASYNCRPC ilustruje strukturę aplikacji RPC, która używa asynchronicznych zdalnych wywołań procedur. Pokazuje również różne metody powiadamiania o zakończeniu zaproszenia.
  • CLUUID pokazuje użycie uuid obiektu klienta, aby umożliwić klientowi wybór spośród wielu implementacji Zdalnej procedury.
  • DATA katalog zawiera cztery programy:
    • DUNION ilustruje dyskryminowane (nieenkapsulowane) związki;
    • inout pokazuje parametry [in], [out];
    • REPAS pokazuje atrybut represent_as;
    • xmit pokazuje atrybut transmit_as.
  • DYNEPT demonstruje aplikację kliencką zarządzającą połączeniem z serwerem za pomocą dynamicznych punktów końcowych.
  • katalog FILEREP zawiera cztery sample ilustracja, w jaki sposób programiści mogą napisać prostą usługę replikacji plików, usługę replikacji plików dla wielu użytkowników, usługę obsługującą funkcje zabezpieczeń oraz usługę wykorzystującą asynchroniczne rury RPC.
  • Katalog HANDLES zawiera trzy programy, AUTO, CXHNDL, USRDEF, które demonstrują odpowiednio uchwyty auto_handle, [context_handle] i ogólne (zdefiniowane przez użytkownika).
  • HELLO jest implementacją klienta / serwera " Hello, world."
  • ogórek katalog zawiera dwa programy:
    • PICKLP pokazuje serializację procedury danych;
    • PICKLT pokazuje serializację typu danych; oba programy używają atrybutów [encode] i [decode].
  • PIPES pokazuje użycie konstruktora typu pipe.
  • rpcsvc demonstruje implementację usługi z RPC.
  • STROUT pokazuje jak przydzielić pamięć na serwerze dla obiekt dwuwymiarowy (tablica wskaźników) i przekazuje go Klientowi jako parametr tylko [out]. Następnie klient uwalnia pamięć. Ta technika pozwala stubowi na wywołanie serwera bez uprzedniej wiedzy, ile danych zostanie zwróconych.
 8
Author: Shay Erlichmen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 14:51:46

Dlaczego chcesz nauczyć się "surowego" RPC? istnieje wiele dobrych implementacji RPC wyższego poziomu:

  1. wdrożenia CORBA
  2. bufory protokołu google
  3. Thrift
 4
Author: geva30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 16:19:37

Musisz nauczyć się 3 różnych rzeczy prawdopodobnie:

  • język programowania C++
  • RPC
  • jakaś biblioteka C++ RPC
 2
Author: dirkgently,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 14:22:03

RPC = = "Remote Procedure Call"

Zasadniczo jest to idea, że komunikacja między dwoma punktami końcowymi jest najlepiej wzorowana na koncepcji tych punktów końcowych, które wywołują wzajemnie funkcje logiczne. Ogólnie jedna strona "publikuje" API w jakiś sposób (na przykład, jeśli używasz SOAP, zazwyczaj masz plik o nazwie WSDL (wymawiany wizdel), który wylicza funkcje, na które odpowiadasz... klient najpierw pobierze Twój WSDL, a następnie wywoła połączenia do dostępnego API)... Obecnie prawie wszystkie dostępne technologie będą warstwować swoje specyficzne protokoły na HTTP(na przykład Usługi internetowe, UPnP, REST).. Ogólnie oznacza to, że Twoje serwery są zaimplementowane na serwerach internetowych...

Tak więc, jeśli wszystko, co musisz zaimplementować, to po stronie klienta, prawdopodobnie możesz użyć libcurl dla wszystkich Twoich potrzeb HTTP...

 2
Author: dicroce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 15:23:33

Zajrzyj do RCF, Deltavsoft_Link i CodeProject_Link

Głównym zachowaniem jest to, że RCF nie używa oddzielnego IDL (Interface Definition Language).

 1
Author: Jean Davy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-02 04:49:05