Shared Server
A shared server allows any number of clients to connect to the same server process. ORSPO.EXE implements the shared server, which is referred to as the Server Pooler (SPO). The SPO is a multithreaded server that creates and manages a shared pool of ASO slave processes. It multiplexes 4GL calls from its clients, forwarding them to an available ASO slave process.
A shared server speeds the Remote Server Initiate request, since a shared server process for the desired application is frequently already active and does not need to be launched or initialized. A shared server also scales better for large numbers of clients because many clients can share the resources of one server process.
The SPO can be configured to manage a different number of shared ASO slaves for each application. When more than one ASO slave is available for a particular application, the SPO provides automatic load balancing by routing each incoming 4GL call to the least heavily loaded slave. This allows larger numbers of clients to be served efficiently, especially on multiprocessor machines.
Running in a shared server, however, requires the application to be designed with sharing in mind. Each shared ASO slave may receive remote 4GL procedure calls from different clients, interleaved in any order. And when the SPO is configured to load-balance across multiple ASO slaves, each call within a sequence of calls from a single client may be routed to a different ASO slave for processing. These characteristics of the shared server environment require careful attention to the way that the application maintains the application state and client state.