Gruby klient (fat client lub rich client) to termin w architekturze klient-serwer opisujący aplikację, w której znacząca część logiki – zarówno logiki prezentacji, jak i logiki biznesowej – jest wykonywana po stronie klienta (na urządzeniu użytkownika). W tym modelu serwer pełni głównie rolę dostawcy danych, udostępniając je poprzez API, podczas gdy całe "myślenie" odbywa się lokalnie. Jest to przeciwieństwo cienkiego klienta (Thin Client), gdzie niemal całe przetwarzanie ma miejsce na serwerze, a rola klienta sprowadza się do wyświetlania gotowego interfejsu. Koncepcja ta przeżywa renesans w dobie nowoczesnych systemów online.
W architekturze grubego klienta aplikacja na urządzeniu użytkownika jest odpowiedzialna za większość zadań:
Komunikacja z serwerem jest ograniczona do minimum – klient łączy się z nim głównie w celu pobrania początkowych danych lub synchronizacji zmian, co czyni go idealnym rozwiązaniem dla aplikacji internetowych wymagających wysokiej interaktywności.
Koncepcja grubego klienta jest fundamentem dla wielu nowoczesnych aplikacji, z którymi mamy do czynienia na co dzień:
Poniższy przykład w React pokazuje, jak logika walidacji formularza jest w całości realizowana po stronie klienta, bez komunikacji z serwerem.
import React, { useState } from 'react';
function RegistrationForm() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const handleSubmit = (event) => {
event.preventDefault();
// Cała logika walidacji jest wykonywana lokalnie w przeglądarce
if (!email.includes('@')) {
setError('Adres email jest nieprawidłowy.');
return;
}
if (password.length < 8) {
setError('Hasło musi mieć co najmniej 8 znaków.');
return;
}
setError('');
console.log('Formularz poprawny. Wysyłanie danych do serwera...');
// Dopiero po pomyślnej walidacji następuje komunikacja z API
// sendDataToServer({ email, password });
};
return (
);
}
Każdy dedykowany system oparty na tym modelu musi uwzględniać zarówno jego mocne, jak i słabe strony.
Podsumowując, architektura grubego klienta, dzięki ewolucji frameworków JavaScript i platform mobilnych, stała się standardem w tworzeniu zaawansowanych aplikacji, które stawiają na pierwszym miejscu interaktywność i komfort użytkownika. Jej zdolność do działania w trybie offline i minimalizowania komunikacji sieciowej sprawia, że jest to kluczowe podejście w budowie nowoczesnego oprogramowania.