This forum has been archived. Please start a new discussion on GitHub.

A concept question: what is server?

there is no concrete definition for server in the Ice manual.

I think an Ice server is a program that when it's running it should invoke an Ice Communicator object, the server may work with the communicator(for example, add an object adapter, create an servant, etc..),and take care the lifecycle of this communicator.

isn't it?


  • marc
    marc Florida
    Unfortunately, the terms server and client are very overused, and have different meanings in different contexts.

    In the context of Ice, a client is a computational entity that invokes operations on an Ice object implemented by a server. Such invocations is technically done by invoking on proxies.

    A server is a computational entity that receives requests from clients and executes such requests on Ice objects. The execution is performed by servants that instantiate an Ice object.
  • Originally posted by marc
    A server is a computational entity that receives requests from clients and executes such requests on Ice objects.

    It looks like a server is an compute envirment: a server manage servants in Ice run time, it add servant and dispatch client request to servant.

    so, the Server class(%ICEJ_HOME%\demo\book\printer\ in demo printer is not a server?
  • From page 10 of the doc:
    The terms client and server are not firm designations for particular parts of an application; rather, they denote roles that are taken by parts of 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 callback object to the server that is used by the server to notify the client when the operation is complete. In that case, the client 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 peer-to-peer systems.