ice and duplex transports

Learn about the ice protocol and duplex transports

When you create a client connection to server address ice://hello.zeroc.com, you instruct IceRPC to establish a connection that uses the ice protocol.

ice is an application layer protocol that transmits RPCs (requests and responses) over a duplex connection.

We always spell ice in lowercase when discussing the ice protocol. This avoids confusion with the Ice platform.

The ice protocol is provided for interoperability with applications built with Ice. You should use icerpc if you don't need interop with Ice-based applications.

The duplex transport page describes an abstraction for a traditional transport like TCP or RFCOMM. It creates duplex (transport) connections. A duplex connection provides two byte streams: one from the client to the server, and another from the server to the client.

An ice connection runs over a duplex connection.

The ice protocol sends requests and responses over a duplex connection by writing requests and responses one after the other. Each request or response is always fully written: when you send a request or response with ice, the sending of another request or response in the same direction will wait until after this request or response is fully written.

This serialization can result in head-of-line blocking.

If you send requests and responses concurrently over the same ice connection, make sure that all these requests and responses are fairly small. And if you can't avoid sending large requests or responses, you should consider creating a separate ice connection dedicated to these large requests or responses.

The following IceRPC features are not available with the ice protocol:

Was this page helpful?