There are several kinds of client-server interaction proposed in the literature, namely RPC [6], rendezvous [8] and multithreaded rendezvous [16]. The most extended one is RPC. With RPC, when a client calls a server, a new thread is created in the server to process that request. When the thread ends its execution, the result of the request is returned. Distributed transactional systems are usually based on RPC [13,15]. However, if RPC is used, servers cannot impose easily a protocol of calls to clients, as each call must record information about the requests already processed; so the server can determine whether the protocol is being followed or not (Fig. 1). Traditional rendezvous has been used in concurrent programs and it has the advantage over RPC that a server can impose a protocol of calls to a single client, as the server accepts the requests in the order it wants (Fig. 1). Unfortunately, when there are multiple clients, the same problems of RPC arise, as the server must record information to know the state of the protocols with the different clients. What it is more, rendezvous cannot be used in a transactional setting because the same server thread cannot process requests from different transactions, as the isolation property of transactions would be violated. Multithreaded rendezvous [16] has been proposed as a client-server interaction mechanism suitable for transactional systems. When using this mechanism, each client transaction has an associated thread in the server. A client interacts with its associated server thread by means of rendezvous. That is, when a new client calls the server, a new thread is created, and it will process all the requests from the same client to the server (Fig. 1). When a server thread finishes its execution, the protocol finishes. This client-server interaction mechanism allows a conversational client-server interface [19] in transactional systems. Conversational interfaces are being increasingly used in advanced transactional systems [9]. This kind of interaction has the advantages of both RPC and rendezvous. It allows servers to impose a protocol of calls to their clients as rendezvous, and it can be used in a transactional setting as RPC.
Figure 1: Client-Server Interaction Mechanisms