RPC - Remote Procedure Call
Calculator {
number Add(number a, number b);
number Mul(number a, number b);
}
Server Client
┌─────────────┐ ┌───────────────────────────────────┐
│ ┌───────────│───────│───────────────┐ │
│ │ Remote │ RPC │ Calculator │ Add(1, 2) │
│ │ Calculator│◄──────│── Stub ◄────────────────── Client │
│ └───────────│───────│───────────────┘ │
└─────────────┘ ▲ └───────────────────────────────────┘
│
Service (call) -> Serialize args
Channel (concurrency) -> Serialize request
Transport (send, recv) -> Send message
Layers
Server Network Client
------ ------- ------
| | Stub.Add(1,2)
| | Channel
IServer ◄────────── Transport ◄── ISocket
RPC Server | |
Service.Add(1, 2) | |