Client
A client (via English client from Latin cliens literally for " client " or "customer") - also client-side application , client application or client program - refers to a computer program that is executed on the terminal of a network and communicates with a server (central computer ). A terminal device itself, which calls up services from a server, is also called a client.
The counterpart to the client is the respective server program or the server itself.
Client-side applications
An important group of client-side applications are the web browsers , such as B. Mozilla Firefox , Internet Explorer or Apple Safari , which use the HTTP protocol for data communication with a web server in order to request data from it and then display it to the user.
Another example is e-mail clients : they contact an e-mail server in order to pick up e-mails from it and send them via it. The client does not have to be constantly in operation or connected to a network, because the mail server receives incoming e-mails.
Many clients are not operated by users, but work in the background as a system service , such as DNS clients. They automatically connect to DNS servers if a server name such as de.wikipedia.org
the IP address is required.
The Ajax concept is becoming increasingly important for client-side applications that are embedded in Internet pages. Other client applications that have their own proprietary client-server protocols are, for example, the Citrix or the SAP client.
Between a client and a server there is a defined protocol for data transmission and interaction , which usually follows a request / response scheme. With client-side programming, the request / response scheme can be interrupted by performing certain functions such as brief reactions to user interactions directly on the client-side, without triggering a client / server cycle. Often it is a recursive concept. A second application (for example JavaScript in the current HTML page) is running in a client application (e.g. web browser).
Most of the time, client-side applications appear in a hybrid form with a server-side application.
A programming language often used in this area is JavaScript . The source code is built into the HTML page and interpreted by the browser. An alternative to this is, for example, the proprietary language VBScript from the software manufacturer Microsoft .
Client-side vs. server-side state storage
In this context, it is also important how the context of a user session can be saved. For example, HTTP is stateless, which means that the server cannot remember any data between two data requests. A client-side application can use the cookie concept to save information on the client side, which is read out again by a client-side follow-up script at a later point in time. However, cookies do not offer any form of data security and can e.g. B. can also be read by non-application spyware . This functional gap is partially closed by the concept of server-side session management .
The inherently stateless client / server communication thus becomes a system in which the session data on the server can be maintained over several data requests. This enables sessions (e.g. protected by a password).
advantages
- To solve some problems (validity of form entries), the involvement of the web server can be dispensed with.
- A dialogue with the user is made possible.
- The aesthetics of the website can be improved (e.g. changing content and presentation depending on the mouse position).
disadvantage
- The source code is visible and accessible to the user. This can be undesirable under certain circumstances.
Types of clients
A distinction is made between conventional fat clients (also rich or smart clients ) and thin clients (also lean or slim clients ).
hardware
Clients are also all those computers in a network that, unlike the servers, do not provide any services.
literature
- Frank Geisler: Databases - Basics and Design. 5th updated and expanded edition, Hüthig Publishing Group, Munich 2014, ISBN 978-3-8266-9707-4 .
- Johann Anton Illik: Distributed Systems. Architectures and software technologies. Expert Verlag, Renningen 2007, ISBN 978-3-8169-2730-3 .