I want to learn programming C++ (native) on Windows platform for RPC communication. I want to learn both server and client side. I also want to learn some advanced topics, like performance and security.
Any good recommended materials to read?
(BTW: I Googled a few, but all of them either too brief or COM related, I want to learn pure RPC programming without COM. I am using VSTS 2008 with C++.)
I would start with the Platform SDK samples on RPC.
-
ASYNCRPC illustrates the structure of an RPC application that uses asynchronous remote procedure calls. It also demonstrates various methods of notification of the call's completion.
-
CLUUID demonstrates use of the client-object UUID to enable a client to select from multiple implementations of a remote procedure.
-
DATA directory contains four programs:
-
DUNION illustrates discriminated (nonencapsulated) unions;
-
INOUT demonstrates [in], [out] parameters;
-
REPAS demonstrates the represent_as attribute;
-
XMIT demonstrates the transmit_as attribute.
-
DYNEPT demonstrates a client application managing its connection to the server through dynamic endpoints.
-
FILEREP directory contains four samples illustrating how developers can write a simple file replication service, a multi-user file replication service, a service supporting security features, and a service using RPC asynchronous pipes.
-
HANDLES directory contains three programs, AUTO, CXHNDL, USRDEF, which demonstrate auto_handle, [context_handle], and generic (user-defined) handles, respectively.
-
HELLO is a client/server implementation of "Hello, world."
-
PICKLE directory contains two programs:
-
PICKLP demonstrates data procedure serialization;
-
PICKLT demonstrates data type serialization; both programs use the [encode] and [decode] attributes.
-
PIPES demonstrates the use of the pipe-type constructor.
-
RPCSVC demonstrates the implementation of a service with RPC.
-
STROUT demonstrates how to allocate memory at a server for a two-dimensional object (an array of pointers) and pass it back to the client as an [out]-only parameter. The client then frees the memory. This technique allows the stub to call the server without knowing in advance how much data will be returned.
Try this:
Overview
Technical Reference - also describes what it is & how it works
why do you want to learn "raw" RPC? there are many good higher level RPC implementations:
- CORBA implementations
-
google's protocol buffers
- Thrift