18 agosto 2007

Divagazione

Visto che avevo auspicato qualcosa del genere per Leopard, non posso che essere contento che, in qualche modo, la cosa stia accadendo ben più vicino al sottoscritto!
Certo, per ora non vuol dire assolutamente niente per OS X, considerando che Citrix è storicamente legata a Windows e il contributo diretto della piattaforma al fatturato è esattamente zero (esistono solo i client gratuiti), ma magari...

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

10 agosto 2007

Citrix su Mac: un po' di storia

L'accesso remoto su Mac non è cosa nuova, anzi! Si può andare indietro di circa 20 anni e trovare Timbuktu, usato specialmente per provvedere assistenza a distanza: date le linee dell'epoca, non si pretendeva un vero e proprio controllo in tempo reale, ma vedere cosa combinava l'utente dall'altra parte spesso era sufficiente a dare i consigli giusti per uscire da situazioni che, telefonicamente, sarebbero state impossibili da descrivere.
È invece intorno alla metà degli anni '90 che si assiste ad una evoluzione: da un lato troviamo i protocolli semplici come Timbuktu, basati sulla trasmissione di bitmap dal server, eventi dal client e poco di più, che trovano i loro successori in VNC (sviluppato originariamente nei laboratori inglesi della Olivetti) e tutti i suoi derivati, compreso Apple Remote Desktop, tuttora validi per collegamenti occasionali, particolarmente assistenza a distanza.
Ispirandosi invece più a X Windows, Citrix sviluppò, nello stesso periodo, WinFrame, ovvero una versione modificata di Windows NT 3.51 che dal mondo Unix mutuava il concetto di esecuzione remota di applicazioni con visualizzazione in locale: il concetto di base è profondamente differente, la connessione è progettata per essere permanente e non solo occasionale, e in rete transitano per lo più i comandi grafici, piuttosto che intere bitmap (anche se questo accade ugualmente, con tutte le ottimizzazioni del caso). Inoltre, il protocollo non riguarda solo la grafica, come vedremo, ma può essere, ed è, espanso per includere qualsiasi tipo di risorsa.
Nel 1997, con l'introduzione di Windows NT 4.0, Microsoft rileva il codice di WinFrame per farne la base di Terminal Services, mentre Citrix ne prosegue lo sviluppo in maniera indipendente, prima con MetaFrame e poi con l'attuale Presentation Server.
Parallelamente, Insignia (nota su Mac soprattutto per il suo SoftPC/SoftWindows) aveva sviluppato, sulla base WinFrame, NTrigue, ovvero un server che consentiva a terminali X Windows (e c'era una versione per Mac) di accedere ad applicazioni su Windows da remoto, espandendo quindi la base di possibili utenti client: Citrix rileva Insignia e la sua tecnologia all'inizio del 1998.

08 agosto 2007

Citrix su Mac: glossario

Riporto qui sotto un piccolo glossario di alcuni dei termini che incontreremo nei post successivi: per non fare torto a nessuno, i link relativi rimandano tutti a Wikipedia (in inglese).

  • VNC: Virtual Network Computing, uno dei precursori (e tuttora quello più ampiamente supportato) dei sistemi di accesso remoto: consente di collegarsi ad una stazione collegata in rete, riceverne le schermate e inviare l'input dell'utente, permettendo quindi un vero e proprio controllo a distanza.
  • ARD: Apple Remote Desktop, l'implementazione su Mac OS delle funzioni di VNC (del quale nelle versioni più recenti viene anche adottato il protocollo di base), del quale resta una espansione, non aggiungendo niente di fondamentale.
  • Terminal Services: un componente della versione server di Windows (a partire da NT 4.0) che consente l'accesso remoto alle applicazioni residenti sul server stesso. In sostanza, funzioni di base simili a VNC, ma con tutta una serie di miglioramenti che vedremo in seguito.
  • RDP: Remote Desktop Protocol, il protocollo usato da Terminal Services per la comunicazione tra server e client: come vedremo, comporta molto di più che la visualizzazione e l'invio di eventi tra i due.
  • Citrix Presentation Server (spesso abbreviato in CPS): Ha una storia in comune con Terminal Services, e ne espande e migliora ulteriormente le funzioni: ad oggi, rappresenta la soluzione più avanzata di accesso remoto, ed è ampiamente utilizzata in ambito aziendale quando è richiesto un accesso remoto sofisticato.
  • ICA: Independent Computing Architecture, il protocollo utilizzato da Presentation Server (ed altri prodotti Citrix). Pur avendo la sua implementazione più avanzata sulla piattaforma Windows, non vi è legato in maniera particolare. Infatti, la parte server esiste anche in ambiente Unix, ed esistono client per qualsiasi piattaforma abbia raggiunto un minimo di diffusione (inclusi Symbian, OS/2, Windows Mobile, Java, ..., ed ovviamente Mac OS).

"Che lavoro fai?"

È una domanda che ci sentiamo rivolgere spesso da chi non conosciamo, generalmente viene appena dopo la canonica "Come ti chiami?".
Ora, sembra banale, ma nel mio caso la risposta non viene affatto semplice!
Rispondendo solamente "Mi occupo di programmazione e/o computer" scatena normalmente reazioni che variano da "Allora mi metti a posto il mio che mi dà problemi" (non elaboro sul sistema operativo montato) al saputello "Contabilità, vero?": per ovvi motivi, sono entrambe risposte che sopporto a malapena, ed ho imparato a svicolare per non dovermi dilungare invano.
Il problema si fa più complesso quando, in teoria, dovrebbe essermi più facile spiegarmi, ovvero quando l'interlocutore ha un'infarinatura (o anche meglio) del Mac e del suo mondo: tolte Adobe, Quark e Apple stessa, e le nuove arrivate Parallels e VMware, poco e niente si sa della produzione di software su questa piattaforma, e di solito quando cito Citrix, vengo accolto da sguardi vacui o persino increduli ("Sul Mac?!? E che c'entra?"). Paradossalmente, ho più possibilità di essere capito da un utente avanzato di Windows, vista la storia e la diffusione su questa piattaforma, che da quelli Mac!
Per correggere questa situazione (non che non si possa vivere senza, ma saperne di più va sempre bene) e anche per me stesso, ho intenzione di dedicare i post seguenti al progetto per cui lavoro, la versione Mac del Client ICA per Citrix Presentation Server, a partire da un minimo di glossario per capirne i termini, passando per la sua storia, ed esaminandone poi le caratteristiche nel confronto con altre tecnologie più note.
Spero diventi un viaggio interessante...