Logo Architektury Gruby Klient

Gruby klient (fat client): kompletny przewodnik po architekturze aplikacji

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.

Jak działa gruby klient?

W architekturze grubego klienta aplikacja na urządzeniu użytkownika jest odpowiedzialna za większość zadań:

  • Renderowanie interfejsu: Dynamicznie tworzy i zarządza wszystkimi elementami interfejsu, reagując na akcje użytkownika w czasie rzeczywistym.
  • Przetwarzanie logiki biznesowej: Wykonuje walidację danych, skomplikowane obliczenia i inne operacje biznesowe lokalnie, bez konieczności wysyłania każdego zapytania do serwera.
  • Zarządzanie stanem: Utrzymuje stan aplikacji (np. dane w formularzu, otwarte okna, historia edycji) po stronie klienta, co jest kluczowe dla płynności działania.

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.

Nowoczesne przykłady grubego klienta

Koncepcja grubego klienta jest fundamentem dla wielu nowoczesnych aplikacji, z którymi mamy do czynienia na co dzień:

  • Bogate aplikacje jednostronicowe (Rich SPA): Zaawansowane aplikacje internetowe, które działają w przeglądarce, ale oferują funkcjonalność i płynność działania zbliżoną do aplikacji desktopowych (np. Figma, Photopea, Google Docs).
  • Aplikacje desktopowe: Większość nowoczesnych programów instalowanych na komputerze, często budowanych na platformach takich jak Electron (np. Slack, Visual Studio Code, Microsoft Teams).
  • Aplikacje mobilne: Każda bardziej złożona aplikacja na iOS lub Androida, która przechowuje dane i wykonuje operacje, umożliwiając pracę w trybie offline (np. aplikacje bankowe, mobilne edytory zdjęć).

Przykład kodu - logika w grubym kliencie (react)

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 (
        
{/* ...pola formularza... */} {error &&

{error}

}
); }

Zalety i wady

Każdy dedykowany system oparty na tym modelu musi uwzględniać zarówno jego mocne, jak i słabe strony.

  • Zalety: Bogate i responsywne doświadczenie użytkownika (Rich UX), możliwość pracy w trybie offline, zmniejszone obciążenie serwera, lepsze wykorzystanie zasobów klienta.
  • Wady: Złożoność wdrożenia i aktualizacji, wyższe wymagania sprzętowe po stronie klienta, dłuższy czas początkowego ładowania (w przypadku SPA) oraz potencjalne ryzyka bezpieczeństwa związane z umieszczeniem logiki po stronie klienta.

Podsumowanie

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.

Przydatne linki

Wzorzec "Gruby Klient" - Martin Fowler

Progresywne Aplikacje Webowe (PWA) - MDN Web Docs