Some applications include both a client and a service component. For example, you might design a document library application with a user interface that visually organizes and displays information to users, but also includes a server application component that manages documents in the information store and provides custom features such as version control and intelligent backup facilities. The following diagram illustrates combined client and server applications.
An application with both client and server application components
Although it is possible for client applications to communicate directly with services using mechanisms such as the remote procedure call (RPC) protocol, client application components and server application components in the Microsoft Exchange Server environment rarely connect directly to each other in this manner. Instead, client applications and services interact through messages that are sent to recipient objects in the information store. For example, a client application might issue a request to a service by sending a message to a folder in the information store. The service might poll this folder every few seconds to determine if any new messages have arrived and take action on new messages that appear.
When developing an application with both a client and a server component, you must decide how to divide the functionality between the client and server components. Performance and load balancing can often help determine these decisions.