Question

Dans le cadre d'un outil de soutien à la clientèle, je suis désireux de fournir des fonctionnalités pour pouvoir demander de visualiser / contrôler à distance une session de bureau. Il y a un tas de façons d'obtenir une capture d'écran et flux puis, mais je suis désireux de savoir en particulier, pourquoi le RDP (Remote Desktop / Terminal Services vs expérience VNC est si différent. J'utilise RDP vs . VNC simplement parce qu'ils semblent utiliser des méthodes radicalement différentes pour diffuser l'écran du client.

Si je devais deviner, RDP semble transmettre des blocs de graphiques bitmap (dire 100x100px) afin de construire une image complète (qui peut être assez lent), mais semble transférer des formes peintes normales / Remplit ou police de dessin à la client très rapidement. VNC semble prendre des clichés géants de l'écran, comparer une image précédente et diffusez les modifications du client.

Je pense que RDP est beaucoup plus haute qualité et le protocole lisse que toute autre chose là-bas, donc quelle technique utilise-t-il pour y parvenir?

EDIT-Juste pour clarifier, je demande au sujet de ces techniques graphiques spécifiquement comme méthode de programmation du protocole de diffusion en continu - pas pour quel produit existant / la technologie à utiliser pour résoudre cette exigence d'affaires

.
Était-ce utile?

La solution

Comme vous l'avez découvert, ils sont tous deux très différents dans la façon dont ils flux de changement. Le protocole RDP à partir de MS est et l'extension d'un norme ITU ( T.128) qui peuvent être achetés en ligne.

RDP

met en œuvre de nombreuses techniques d'économie de bande passante qui se complètent-elles et rendent très efficace sur une faible bande passante.

VNC d'autre part a des techniques de compression très simples: il envoie des blocs de bitmap qui ont changé et utiliser des types de compression de base, de RLE jpeg pour transmettre ces blocs efficacement
. Malheureusement, il est encore tout à fait inutile sur une faible bande passante.

VNC a essentiellement aucune connaissance des primitives graphiques sous-jacents utilisés pour construire l'écran. Cela le rend facile à utiliser sur une machine, car il surveille simplement des modifications au bitmap de l'écran.
RDP sur les autres crochets de main plus profondément dans l'API Windows et est en mesure d'optimiser son flux en fonction de la quantité minimum d'informations nécessaires pour générer la même mise à jour sur le client.

Si vous souhaitez intégrer des fonctionnalités de bureau à distance, vous avez deux choix:

  • pour la RDP vous pouvez utiliser l'ActiveX utilisé pour des fonctionnalités à distance Web. Vous pouvez jeter un oeil à un pour l'intégrer dans votre propre logiciel.
    Si vous souhaitez obtenir plus profondément dans cela, il y a le code source disponible pour Linux client rdesktop qui ne se connecte aux machines Windows RDP à travers.

  • pour VNC il y a un certain nombre d'implémentations open source.
    Copilote de FogCreek utilise en fait l'un et vous pouvez obtenir son source de rel="noreferrer"> car il est construit sur TightVNC

Il y a aussi un certain nombre de projets sur CodeProject sur RDP VNC .

Autres conseils

Comme Renaud dit, VNC envoie simplement sur le bitmap change bloc par bloc sans aucune connaissance de ce que le contenu est. RDP est beaucoup plus intelligent.

Vous pouvez vérifier exactement ce que RDP fait à partir de ces deux spécifications:

niveau du protocole: http://msdn.microsoft.com/en-us /library/cc240445(PROT.10).aspx

Niveau graphique: http://msdn.microsoft.com/en-us /library/cc241537(PROT.10).aspx

Je pense que plus gros gains de RDP proviennent de:

  • Mise en cache: Le client peut stocker une grande quantité de blocs précédemment vus et le serveur peut dire au client comment les utiliser. Aussi ceux-ci sont donc lorsqu'un persistant client se connecte à un serveur, il a déjà été à elle peut annoncer ce que les blocs qu'il a sur le disque. Très utile lorsque les fenêtres sont déplacées. Aussi de nombreuses parties de fenêtres, comme la barre de titre sont les mêmes.

  • Ligne / dessin Bloc. Comme vous l'aurez deviné RDP a pour les opérations en ligne, le poly et le dessin rect. Avec ces fenêtres de dessin sont en cours d'utilisation beaucoup.

  • dessin des caractères. RDP a un moyen d'envoyer plus gylphs pour les polices et dire au client de les rendre.

  • rendu du curseur. Les icônes du curseur sont envoyées sous forme Glyphes. VNC utilise simplement un point

Ce sont les grands qui viennent à l'esprit. Consultez la section 2.2.7 ensembles de capacités de la spécification de protocole pour la liste complète des fonctions de dessin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top