Independent Computing Architecture
Independent Computing Architecture (ICA) ist ähnlich wie Microsofts RDP ein proprietäres Protokoll für ein Terminalserver/Application-Service-Providing-System, das von Citrix Systems entwickelt wurde. Das Protokoll legt eine Spezifikation fest, um Daten zwischen Server und Clients zu übertragen, ist aber an keine bestimmte Plattform gebunden.
Zu den ICA-konformen Anwendungsprodukten gehören die Citrix-XenApp-Editionen. Diese ermöglichen es, gewöhnliche Windows-Programme auf einem geeigneten Windows-Server (oder, ungebräuchlicher: Unix-Derivat-Programme auf einem geeigneten [z. B. Solaris] Unix-Derivat-Server) laufen zu lassen, und mit jedem unterstützten Client auf diese Anwendungen zuzugreifen. Die Client-Plattform braucht nicht unter Windows zu laufen. Es gibt beispielsweise Clients für Macintosh und Unix.
ICA ist in groben Zügen ähnlich Window-Servern wie dem X-Window-System, hat aber ein breiteres Anwendungsspektrum. Es sorgt jedoch zusätzlich auch für die Rückübertragung von Benutzer-Eingaben und eingeschränkt (z. B. Zugriff auf lokale Laufwerke, Spracheingabe per Mikrofon, …) auch auf Endgeräte-Ausgaben vom Client zum Server sowie für eine Vielzahl von Mitteln für den Server, um audiovisuelle Ausgaben von der laufenden Anwendung zum Client zu übertragen.
Eine der wesentlichen Herausforderungen für eine derartige Architektur ist die Performance. Eine grafikintensive Anwendung (was bei den meisten über ein GUI präsentierten Anwendungen der Fall ist) stellt hohe Ansprüche an Kompression und Optimierung, damit die Anwendung für den Client benutzbar ist. Dies gilt insbesondere, wenn die Anwendung über eine langsame Netzwerkverbindung zur Verfügung gestellt werden muss. ICA benötigt sehr wenig Netzwerkbandbreite, 10–20 kbit/s bei einer typischen Sitzung. Dadurch und durch leistungssteigernde Protokollerweiterungen (SpeedScreen bis XenApp 5, HDX ab XenApp 6.0 & XenDesktop 5.0 genannt) kann es im Gegensatz zu RDP auch mit schmalbandigen Netzwerkverbindungen (z. B. ISDN oder GPRS) genutzt werden.
Da der Client keine Windows-Plattform zu sein braucht, muss und kann er nicht die Windows-Grafikbibliotheken lokal verfügbar haben. Der Server muss in diesem Fall die reinen Bilddaten und zusätzlich alle weiteren Daten (z. B. Dateien von USB-Sticks) über die relativ langsame Netzwerkverbindung übertragen.