Client

There are a plenty of options that can be used for application clients. For the email example, it's well known that there are native applications included as part of the computers' operating systems, and also in mobile devices like smartphones, iPads, or tablets, that can be configured to interact with existing email servers. There are two types of clients, as follows:

Fat clients have implemented logic that is in charge of performing some validations, formatting data, and fulfilling other related duties. They are designed to make the interaction between the end users and the server easier.

Think about a Windows PC running Outlook. This represents a classic example of a fat client. In contrast, a web browser talking to a webmail site is a good example of a thin client.

We can also compare fat clients with regards to the native applications running on our mobile phones that can partially work when they are unable to establish communication with the server; meanwhile, a thin client, like a web browser, is absolutely useless.

Within the fat client category, we also have middleware, which often consumes more than one service and orchestrates the requests to accomplish a business goal. The most common examples are the enterprise service buses (ESB) commonly used as part of SOA architectures.

Thin clients are quite simple, and they count with a simple mechanism that makes it possible to interact with the server. A common example of this is curl commands, used to interact with Rest-APIs through the HTTP(S) protocol.