Several features describe the relationship between a client application and the AppServer environment. For example:
A client application can have connections to multiple AppServers or application services simultaneously.
A client application can connect directly to an AppServer (practical only when session-managed) or indirectly using a NameServer.
For a session-managed application, the choice of AppServer for each connection is determined by the NameServer based on the application service name provided by the client. The NameServer chooses the connection from among all AppServers that support the specified application service. The actual location of the AppServer is completely transparent to the client. For a connection using the AppServer Internet Adapter (AIA), the client accesses the AIA using a URL that includes the application service as an attribute and the AIA either uses a NameServer or connects to the AppServer directly, depending on how it is configured. Using an AIA, the actual locations of both the NameServer and the AppServer are completely transparent to the client.
For a session-free application, the NameServer provides one or more AppServer connections to be maintained by the client in a connection pool based on the application service name and other parameters provided by the client. The actual locations of these AppServer connections are completely transparent to the client. For an OpenEdge Web service, the connection pool is maintained by the WSA or the OpenEdge Adapter for Sonic ESB (if the Web service is deployed to the Sonic ESB).
How the AppServer allocates AppServer agents to service requests that it receives depends on the AppServer operating mode, which is largely transparent to the client.
Note: You might have to write the client application differently to access and manage responses from an application service, depending on the operating mode.
An AppServer can manage transactions in a number of ways. The transaction management mechanism used by the AppServer is completely transparent to the client. The client has no direct control over the transaction mechanics used by the AppServer.