OpenEdge client processes are used to implement the functionality required by a direct end-user (with a user interface) or an indirect end-user (embedded application). OpenEdge client processes communicate with server processes that provide business logic or business data to a client. ABL clients communicate directly with an OpenEdge Server process. Some non-ABL clients can communicate with the OpenEdge Server process directly, but some non-ABL clients must communicate through an OpenEdge Adapter process, which in turn communicates with an OpenEdge Server process. WebSpeed clients and other non-OpenEdge clients (Web and mobile apps) communicate through a Web server process.