IceRPC
The RPC framework
for the QUIC era
IceRPC is a new open-source RPC framework that helps you build blazing fast networked applications with very little code.
Built for QUIC
A streamlined RPC framework for the QUIC multiplexed transport
Harness the power of QUIC with IceRPC's easy-to-use API.
Streaming
Thanks to QUIC, bidirectional streaming is a breeze. Long-lasting audio/video streams or data feeds can share a network connection with small RPCs without any slowdown.
TCP with Slic
Still too soon for QUIC? IceRPC's Slic adapter is the answer. Slic emulates QUIC over traditional duplex transports such as TCP.
QUIC
Multiplexed transport based on UDP
QUIC is a new connection-oriented transport protocol that powers the latest version of HTTP. It provides a wealth of features: multiplexing connections into independent streams, security, flow-control, connection migration, and more.
Learn about QUICModular
A modular and extensible framework
Slice
Strongly-Typed Network Calls Made Easy
Slice is a serialization format for structured data that uses a simple and familiar syntax to define your API - think Protobuf but better.
Contract First
Design your service API in Slice, a powerful and intuitive Interface Definition Language. Then let the Slice compiler implement this API for you with IceRPC.
Binary Encoding
Enjoy lower bandwidth and CPU usage courtesy of Slice's compact and straightforward binary format.
StarTrek.slice
slice
module StarTrektypealias Stardate = float64enum Rank : uint8 { Captain, Engineer, Ensign, Doctor }struct Officer {id: int64name: stringrank: Rank}struct StarlogEntry { date: Stardate, entry: string }interface Starlog {addEntry(entry: StarlogEntry)getEntries(startAt: Stardate?) -> Sequence<StarlogEntry>}enum SystemError {UnknownOfficer(id: int64)SystemUnavailable}interface Starship {engageWarpDrive(warpFactor: uint8)getDetails() -> (name: string, registryCode: string)getOfficer(id: int64) -> Result<Officer, SystemError>startLongRangeScan(target: string) -> stream uint8}
Protobuf
Full Protobuf Support
If you are already using Protobuf to exchange binary messages, IceRPC will fit right into your stack! The IceRPC + Protobuf integration implements Protobuf services with IceRPC.
Learn about ProtobufReady to get started?
Start building the next-gen app that leaves the competition behind!