12 agosto 2007

Citrix su Mac: ICA vs. VNC (e Apple Remote Desktop)

Dopo le premesse, iniziamo quindi i confronti con tecnologie similari (e anche no): per essere precisi, comunque, il confronto in questa fase sarà prevalentemente tra i protocolli (e quindi si parla di ICA, nel caso di Citrix), piuttosto che sulle varie implementazioni che possono avere pregi e meriti di per sé, partendo da quello più ovvio e diffuso sulle varie piattaforme, ovvero VNC.
Come indicato nella pagina di illustrazione sul "come funziona", VNC, nei suoi concetti di base, è estremamente semplice da implementare, rendendolo ideale per essere il protocollo favorito nei progetti open source e multipiattaforma. "Posiziona questo gruppo di pixel alle coordinate X e Y" è il semplice fondamento della visualizzazione in remoto: sfortunatamente, dato che la banda è una risorsa limitata e preziosa, per avere un minimo di praticità deve essere usata una serie di algoritmi di compressione (anche diversi all'interno della stessa immagine). Proprio perché è stato pensato per l'assistenza remota e usi didattici, quello che l'utente remoto può fare non è molto, limitandosi tipicamente all'invio di input da mouse e tastiera: Apple, con la sua versione ARD, ha aggiunto funzioni utili all'aspetto amministrativo (come trasmissione di file, programmabilità via Automator, la funzione "Curtain" per prendere completamente il controllo della macchina, ...), ma ne ha mantenuto i concetti ed usi principali. Inoltre, nella sua forma fondamentale VNC permette solo di agire sullo schermo attivo in quel momento, vari utenti collegati vedono sempre lo stesso e solo uno può realisticamente controllare la macchina.

Per contro, ICA è nato proprio per esaltare la funzionalità di connessione permanente: l'applicazione (o le applicazioni, o anche tutto il desktop) che interessa rendere disponibile è installata su un server remoto per questioni di sicurezza e manutenzione (mantenere aggiornato e sicuro un solo server costa certamente di meno che fare lo stesso per ogni singolo client), e la separazione degli utenti è totale, ciascuno vede il suo schermo ed agisce sulla sua sessione in maniera indipendente. Di particolare interesse è anche il fatto che la grafica non è limitata a rettangoli di pixel, ma si adatta al contesto di utilizzo e, dove possibile, usa semplici e compatte primitive grafiche lasciando, ad esempio, al client funzioni relativamente avanzate quali la responsabilità del rendering del testo.
Il protocollo, invece di essere relativamente fisso come per VNC, utilizza il concetto di 'virtual channel', ovvero canali virtuali attraverso i quali possono viaggiare informazioni specifiche che il client vuole ottenere dal server, ciascuno operante nel formato più idoneo al tipo di dati che si vuole trasmettere.

Ad esempio, se ovviamente esistono canali dedicati a schermo, tastiera e mouse, esistono canali per file system (ovvero, un disco che appare come disponibile al server è in realtà locale per il client), per l'audio e il video, per le stampanti (permette di stampare su una stampante locale da un'applicazione remota), per le porte COM, e così via: le caratteristiche di ciascun canale vengono negoziate all'inizio della sessione, quindi è perfettamente possibile per un client non supportare un canale (o una parte delle sue capacità) e continuare con il collegamento. Inoltre, è possibile definire canali personalizzati (che devono essere ovviamente realizzati in concreto sia sul server che sul client).


Post precedenti:
Citrix su Mac: glossario
Citrix su Mac: un po' di storia