Terminology
Every computing technology creates its own vocabulary as it evolves. Ice is no exception. However, the amount of new jargon used by Ice is
minimal. Rather than inventing new terms, we have used existing terminology as much as possible. If you have used another middleware
technology in the past, you will be familiar with much of what follows. (However, we suggest you at least skim the material because a few
terms used by Ice differ from the corresponding terms used by other middleware.)do
On this page:
Clients and Servers
Ice Objects
Proxies
Stringified Proxies
Direct Proxies
Indirect Proxies
Direct Versus Indirect Binding
Fixed Proxies
Routed Proxies
Replication
Replica Groups
Servants
At-Most-Once Semantics
Synchronous Method Invocation
Asynchronous Method Invocation
Asynchronous Method Dispatch
Oneway Method Invocation
Batched Oneway Method Invocation
Datagram Invocations
Batched Datagram Invocations
Run-Time Exceptions
User Exceptions
Properties
Clients and Servers
The terms and are not firm designations for particular parts of an application; rather, they denote roles that are taken by parts ofclient server
an application for the duration of a request:
Clients are active entities. They issue requests for service to servers.
Servers are passive entities. They provide services in response to client requests.
Frequently, servers are not "pure" servers, in the sense that they never issue requests and only respond to requests. Instead, servers often
act as a server on behalf of some client but, in turn, act as a client to another server in order to satisfy their client's request.
Similarly, clients often are not "pure" clients, in the sense that they only request service from an object. Instead, clients are frequently
client-server hybrids. For example, a client might start a long-running operation on a server; as part of starting the operation, the client can
provide a to the server that is used by the server to notify the client when the operation is complete. In that case, the clientcallback object
acts as a client when it starts the operation, and as a server when it is notified that the operation is complete.
Such role reversal is common in many systems, so, frequently, client-server systems could be more accurately described as sypeer-to-peer
stems.
Ice Objects
An is a conceptual entity, or abstraction. An Ice object can be characterized by the following points:Ice object
An Ice object is an entity in the local or a remote address space that can respond to client requests.
A single Ice object can be instantiated in a single server or, redundantly, in multiple servers. If an object has multiple simultaneous
instantiations, it is still a single Ice object.
Each Ice object has one or more . An interface is a collection of named that are supported by an object. Clientsinterfaces operations
issue requests by invoking operations.
An operation has zero or more as well as a . Parameters and return values have a specific . Parametersparameters return value type
are named and have a direction: in-parameters are initialized by the client and passed to the server; out-parameters are initialized
by the server and passed to the client. (The return value is simply a special out-parameter.)
An Ice object has a distinguished interface, known as its . In addition, an Ice object can provide zero or more alternatemain interface
interfaces, known as . Clients can select among the facets of an object to choose the interface they want to work with.facets
Each Ice object has a unique . An object's identity is an identifying value that distinguishes the object from all otherobject identity
objects. The Ice object model assumes that object identities are globally unique, that is, no two objects within an Ice communication