Client/Server Computing
This client/server technology seen in Figure 1-2 is what is now called the two-tier client/server environment. The client typically has a graphical user interface that talks to the server using various communications protocols, including netbios, named pipes, and sockets. Servers typically manage the back-end persistent data.

Figure 1-2. Client/server technology
Now the client had become even smarter; for example, it used the CPU productively to perform business logic and complex calculations. In fact, client applications became increasingly sophisticated. At the same time, the communication between the client and the server became more complex. With a client/server environment, the communications layer, or marshaling software, must be developed to handle client/server interaction. This kind of software was later called a middleware—a mediator for client/server interactions.
Here’s an explanation of marshaling. A process understands intelligible data, but it doesn’t understand a raw network stream. An example of intelligible data is a function argument, which has a size and a type. On the other hand, a raw network stream is broken into the bits that paddle across the network. Because there are different representations of data, network communication needs a translation mechanism called a marshaler. A marshaler is simply a piece of code that performs marshaling. ...