# Fat Client

Fat Client ist ein Begriff aus der elektronischen Datenverarbeitung und bezeichnet vollwertig ausgestattete, leistungsfähige Desktop-Computer mit ausreichender Rechenkapazität, Plattenspeicher, CD-ROM-Laufwerken sowie leistungsstarken Grafikkarten. Das Gegenstück dazu ist, je nach applikationsspezifischer Funktionalität, der Thin Client.
Im Gegensatz zu Fat Clients und Thin Clients stehen die Rich Clients (manchmal auch als Smart Clients bezeichnet) und bieten als Framework-Softwarelösungen applikationsspezifische Funktionalität wie Benutzerschnittstellen, bestmögliche Performance, Skalierung und werden direkt beim Client, beispielsweise bei Desktop-Applikationen oder auch auf mobilen Plattformen, implementiert.
Im Aufbau einer Client-Server-Architektur wird die Bezeichnung Fat Client für einen Desktop-Computer verwendet, bei dem die eigentliche Verarbeitung der Daten vor Ort auf dem Client vollzogen wird. Er stellt auch meistens die grafische Benutzeroberfläche zur Verfügung.
Der Fat Client besteht aus Programmierschnittstelle, Hardwareabstraktionsschicht (HAL) und der Hardware selbst. Ein typischer Fat Client kann beispielsweise ein MacOS-, Linux- oder Windows-basierter Personalcomputer (PC) sein.

## Merkmale eines Fat Client

* Dateneingabe und Datenausgabe sowie die Datenverarbeitung selbst erfolgt lokal
* Die Datenspeicherung wird lokal oder über Netz durchgeführt
* Zugriffsmöglichkeiten und Kommunikation über Netzwerk (Datendienste, Mailserver, Firewall usw.)
* Ein Fat Client (Rechner) beinhaltet häufig bewegliche Teile (z. B. Festplatte, Lüfter)

## Varianten eines Fat Client

Als unmanaged PC (lokal verwalteter PC mit Netzwerkzugriff) erfolgt das Einspielen von Softwareinstallationen und Updates lokal. Sämtliche Ressourcen können, müssen aber nicht, vom Server verwendet werden und ein serverloser Betrieb (Offline) ist möglich.
Als managed PC (zentral verwalteter PC mit Netzwerkzugriff) werden Softwareinstallationen und Updates zentral eingespielt. Managementsoftware wie z. B. ZENworks oder ZAK/SMS bzw. SCCM wird benötigt und ein serverloser Betrieb ist temporär möglich.

### Vorteile

* An den jeweiligen Server können geringere Anforderungen gestellt werden, da ein Fat Client die meisten Anwendungen selbst verarbeitet und diese nicht auf einem Server ausgelagert werden müssen
* Erhöhte Möglichkeit von Offline-Arbeiten, da eine dedizierte Verbindung zum Server (je nach Anwendung) oft nicht erforderlich ist
* Erleichterung bei multimediareichen Anwendungsverarbeitungen wie zum Beispiel Video-Gaming, da an den jeweiligen Server keine erhöhten Bandbreitenanforderungen gestellt werden müssen
* Es können mehr Anwendungen auf dem Fat Client selbst installiert werden, da sich bereits ein Betriebssystem auf selbigem (lokaler Computer) befindet
* Höhere Serverkapazitäten, da jeder einzelne Fat Client für mehr Verarbeitung sorgt, so dass der jeweilige Server dadurch mehr Clients bedienen kann.

### Nachteile

* Hoher Administrationsaufwand, da moderne Betriebssysteme sehr komplex sind sowie Inkompatibilitäten bei unterschiedlichen Versionsständen der eingesetzten Software
* Bei hoher Anzahl von Arbeitsplätzen wird die Bereitstellung von Anwendungen zur Herausforderung, beispielsweise wenn Anmeldeskripte oder bestimmte Pfadangaben vereinheitlicht werden müssen, etwa wenn das Back-End aktualisiert wurde.
* Verwundbarkeit und Ausfall, zum Beispiel durch den Besuch einer Webseite mit absichtlich schadhaftem Code oder unbedacht geöffneter Anhang einer E-Mail.
* Bereitstellung eines lokalen Administratorenkontos, wodurch selbst Software installiert werden kann, die Sicherheitsrisiken birgt oder das Verändern und Löschen einer Konfiguration, die nur vor Ort wiederhergestellt werden kann.

## Der Thin Client (Hardware) als Gegensatz

Thin Client wird heute als Oberbegriff für eine Vielzahl von schlanken Rechnern verwendet. Für den Betrieb eines Thin Clients wird weniger Hardware und weniger Rechnerleistung benötigt. Die Ausstattung von Thin Clients wird von mehreren Hardware-Herstellern spezifiziert und umfasst eine Bildschirmauflösung von mindestens 640 × 480 Bildpunkten, eine Tastatur, eine Maus und die Soundfähigkeit. Festplatten sind nicht erforderlich aber auch nicht explizit ausgeschlossen.
Das Betriebssystem und die Anwendungssoftware liegen auf zentralen Servern von denen aus auch Programm-Updates und die Systemadministration erfolgt. Dadurch ist die Systemzuverlässigkeit besser und die Wartungskosten sind niedriger. Dazu zählen z. B. Windows-Terminals, Netzwerkcomputer und NetPCs.

## Begriffsbestimmungen

Fat Client (Hardware) – Hier liegt sowohl die Funktionalität als auch die Anwendungslogik beim Client selbst. Dies garantiert dem Client nicht nur einen hohen Komfort für den Benutzer, sondern auch durch die Offline-Fähigkeit eine geringe Abhängigkeit von einem Netzwerk.
Thin Client (Hardware) – Ist das genaue Gegenteil eines Fat Clients. Ein Thin Client enthält weniger Hardware und keinerlei eigene applikationsspezifische Funktionalität, diese wird komplett vom Server bereitgestellt. Die applikationsspezifischen Funktionen werden hier meist in Form von Webseiten dargestellt.
Rich Client (Software) – Die Rich-Client-Plattform (RCP) ist ein Framework zur Entwicklung von Plug-In-basierten Applikationen. So kann ein Rich Client nicht nur ein Problem lösen (wie bei Fat Clients üblich), sondern ist auch für artverwandte oder gar artfremde Probleme geeignet. Als Beispiel sei hier genannt, dass ein Rich Client z. B. nicht nur E-Mails lesen und verschicken, sondern auch Dateien per FTP herunter- und hochladen kann.
Diverse Frameworks sind heute verfügbar, die eine Rich-Client-Platform (RCP) anbieten. Diese bieten eine Basis, in der sich der Benutzer seine Module/Plug-ins (Problemlösungen) selbst zusammenstellen kann, die er benötigt. Idealerweise können fremde Lösungen (z. B. von verschiedenen Anbietern) innerhalb eines Rich Clients zusammenarbeiten, so dass alle Module/Plug-ins wie aus einem „Guss“ erscheinen.
Software-Entwickler und Anbieter können aber auch mit diesen Rich-Client-Plattformen sogenannte Rich-Client-Distributionen aus bestimmten Modulen/Plugins bündeln und bestimmten Benutzergruppen fertig zur Verfügung stellen. Ein Rich Client hat den Vorteil gegenüber einem Fat Client, dass er einfacher verwaltbar und aktualisierbar ist, beispielsweise durch eine automatische Online-Update-Funktion im Client selbst oder einen WebStarter, der vor dem eigentlichen Client ausgeführt wird.

### Rich Client - Eigenschaften

Hier stichwortartig die üblichen Muss-Eigenschaften einer Rich-Client-Platform:
* plugin-basierte Anpassungsfähigkeit an (verschiedene) Benutzer(-Anforderungen)
* wirklich alles ist Plugin bis hin zur Applikationsebene (die noch vor der Hauptfensterebene liegt), so dass verschiedene Applikations-Plugins den Client in eine andere Applikation verwandeln
* einfache (Online-)Updates des Clients oder von Plugins
* Entwicklung komplexer Oberflächen für komplexe Anwendungen möglich
* voneinander abhängige Plugins (evtl. unterschieden in Kann-/Muss-Abhängigkeiten)
* Config-Datei-Management (entweder pro Plugin eigene Dateien oder eine zentrale Datei)
Zudem gibt es manchmal herausragende Kann-Eigenschaften:
* unabhängig von GUI-Frameworks (kann also verschiedene benutzen oder mischen)
* neben Plugin-Manager auch eigener Event-Manager (falls z. B. unabhängig von GUI-Frameworks, die eigenes Event-Management mitbringen)
* lauffähig unter verschiedenen Betriebssystemen
* verschiedene Oberflächen auf verschiedenen Geräten
* neben externen auch einkompilierte Plugins (nicht nur eines von beiden)
* Updates/Upgrades im laufenden Betrieb (evtl. ohne Tool durch manuelles Ersetzen externer Plugins)

### Rich-Client - Plattformen

* Eclipse RCP
* NetBeans IDE