Μοντέλο client-server
Στην επιστήμη των υπολογιστών, χρησιμοποιείται συχνά για την ανάπτυξη λογισμικού το μοντέλο αρχιτεκτονικής client-server. Σύμφωνα με το μοντέλο αυτό, ένα τμήμα λογισμικού που ονομάζεται client (πελάτης) ζητάει κάτι (π.χ. δεδομένα, έναν πόρο, τα αποτελέσματα ενός υπολογισμού κ.ο.κ.) και ένα άλλο τμήμα λογισμικού που ονομάζεται server (διακομιστής/εξυπηρετητής) του το επιστρέφει.
Πιο απλά, ο server είναι ένα πρόγραμμα που τρέχει για να απαντάει σε αιτήσεις άλλων προγραμμάτων, των clients. Κάθε server μπορεί να εξυπηρετεί πολλαπλούς clients. Τα δύο αυτά προγράμματα μπορεί να τρέχουν στον ίδιο υπολογιστή, αλλά πιο συχνά (και στα πλαίσια των άρθρων αυτού του wiki) τρέχουν σε διαφορετικούς υπολογιστές που συνδέονται μέσω δικτύου.
Για παράδειγμα, οι browsers (firefox, internet explorer, chrome, safari, opera κτλ) είναι web clients οι οποίοι ζητάνε ιστοσελίδες από έναν web server, ο οποίος και τους τις επιστρέφει.
Οι servers, εξ'αιτίας του διαφορετικού τους ρόλου, έχουν και διαφορετικές απαιτήσεις ως προγράμματα. Για παράδειγμα, ένας web server ο οποίος φιλοξενεί και "σερβίρει" ιστοσελίδες, πρέπει να μπορεί να εξυπηρετεί ταυτόχρονα πολλούς clients (επισκέπτες της ιστοσελίδας). Πρέπει να μπορεί να διαβάζει με μεγάλη ταχύτητα από το σκληρό δίσκο και να έχει σύνδεση υψηλής ταχύτητας με το internet. Από την άλλη, επειδή ο server είναι μία υπηρεσία που τρέχει και όχι ένα πρόγραμμα που χρησιμοποιεί κάποιος τελικός χρήστης, δεν έχει την ανάγκη γραφικών και ήχου - αυτά θα πρέπει να μπορεί να τα εμφανίσει ο client, όχι ο server. Εξ'αιτίας αυτών των διαφορετικών αναγκών, πολλές φορές τα προγράμματα servers τρέχουν σε υπολογιστές με διαφορετικό υλικό (hardware) από αυτό των υπολογιστών που χρησιμοποιούμε καθημερινά. Πρέπει ωστόσο να γίνει κατανοητό πως η διάκριση ανάμεσα σε server και client δε γίνεται με βάση το μηχάνημα στο οποίο τρέχει το κάθε πρόγραμμα, αλλά με βάση το ρόλο του κάθε προγράμματος στην μεταξύ τους επικοινωνία.