Citrix XenApp - Solution SaaS
Le fonctionnement
Protocole ICA (Independent Computing Architecture)
Le protocole ICA (Independent Computing Architecture) est utilisé par les serveurs Citrix Presentation Server. Ces serveurs permettent la mise en place d'une architecture client léger/Serveur.
Toutes les applications sont gérées par le serveur, le client ne se charge que des entrées/sorties (clavier, écran, souris). Cette technologie permet d'exécuter des applications 16 ou 32 bits récentes sur des ordinateurs clients anciens. De plus, les applications sont disponibles quel que soit le système d'exploitation utilisé
Seules transitent par le réseau les entrées-sorties, et les écrans d'affichage, aucune application n'est exécutée par le client. Ce qui permet une exécution rapide même sur des réseaux de faible débit.
Citrix a également développé une autre technologie : MultiWin, aujourd'hui remplacée par XenApp.
Le modèle et les canaux virtuels
Que sont les canaux virtuels ICA ?
La grande majorité des fonctionnalités et de la communication entre un client ICA et Presentation Server (XenApp) est concentrée dans les canaux virtuels.
Affichage, ports COM/LPT, impression, son, lecture vidéo, disques font tous appel à des canaux virtuels.
Régulièrement, des canaux virtuels sont ajoutés dans une nouvelle version de Presentation Server (et du client ICA) pour supporter de nouvelles fonctionnalités.
Un canal virtuel est un pilote coté client qui communique avec une application coté serveur. Citrix fournit de nombreux et divers canaux virtuels avec Presentation Server (XenApp) et le protocole ICA est conçu de sorte à permettre aux clients ou partenaires de créer leurs propres canaux virtuels à l'aide des SDK (Software Development Kits).
Fonctionnement des canaux virtuels ICA
Le support des canaux virtuels en mode utilisateur sur le serveur est chargé par Wfshell.exe, par exemple : SpeedBrowse, EUEM, Speech Mike, Bi- Audio, Twain, Time Zone, Clipboard, Multimedia, Seamless Session Sharing et SpeedScreen Latency Reduction (ZLC).
Les autres sont chargés en mode Kernel, par exemple CDM.sys et vdtw30.sys.
Tous les canaux virtuels clients passent par le pilote WinStation, Wdica.sys côté serveur et communiquent avec le côté client via le pilote WinStation correspondant, compilé dans wfica32.exe.
Echange de données entre le client et le serveur avec un canal virtuel
1. Le client se connecte au serveur CPS/XenApp. Le client informe le serveur des canaux virtuels qu'il supporte.
2. L'application coté serveur démarre, obtient un handle vers le canal virtuel et, optionnellement, demande des informations supplémentaires à propos de celui-ci.
3. Le pilote du canal virtuel client et l'application sur le serveur envoient des données suivant une de ces deux méthodes :
Si l'application doit envoyer des données au client, celles-ci sont envoyées immédiatement. Quand les données sont reçues par le client, le pilote WinStation dé-multiplexe les données du canal virtuel du flux ICA et les envoie immédiatement au pilote du canal virtuel client.
Si le pilote du canal virtuel client doit envoyer des données au serveur, elles sont envoyées à la prochaine demande du pilote WinStation. Quand les données sont reçues par le serveur, elles sont placées dans une file d'attente jusqu'à ce que l'application du canal virtuel (nous sommes sur le serveur, n'oubliez pas) les lit. Il n'y a pas de possibilité d'alerter l'application du canal virtuel (côté serveur..) que des données ont été reçus.
4. Quand l'application du canal virtuel (côté serveur donc) a terminé, il ferme le canal virtuel et libère les ressources allouées (les handles indiqués précédemment).