Client/Server software architectures allow the separation of processing between a lightweight front-end on the client side and heavy-weight processing on the server side.
Typically the client side will issue instructions and directives to the server, to initiate processes or to request data.
The server side will listen for incoming connections from one or more clients, interpret and respond to the instructions, and then return to the listening state.
The light-weight client will generally have a short execution time frame, and the emphasis for this side is the presentation of the user interface.
On the server side, due to the relatively long run-time, memory management and exception handling are the more critical aspects.
We have built on-demand data transformation processes using this paradigm.