Frage

Im Rahmen eines Client-Support-Tool, ich bin zu wollen einige Funktionen bieten zu können, bitten / remote anzuzeigen eine Desktop-Sitzung zu steuern. Es gibt eine Reihe von Möglichkeiten, um eine Bildschirmaufnahme zu bekommen und es dann streamen, aber ich bin zu wollen insbesondere um herauszufinden, warum die RDP (Remote Desktop / Terminal Services vs. VNC Erfahrung ist so anders. Ich verwende RDP vs . VNC, nur weil sie drastisch unterschiedliche Methoden zu verwenden, scheint an den Client auf den Bildschirm zu übertragen.

Wenn ich raten müsste, erscheint RDP Blöcke von Bitmap-Grafiken zu übertragen (sagen 100x100px), um das ganze Bild zu bauen (was ziemlich langsam sein kann), aber scheint normal gemalt Formen zu übertragen / füllt, oder die Schriftart auf die Zeichnung Client extrem schnell. VNC scheint Riesen-Schnappschüsse des Bildschirms zu nehmen, ein vorheriges Bild vergleichen und die Änderungen an den Client gestreamt werden.

Ich glaube, dass RDP viel mehr qualitativ hochwertige und glatt Protokoll als alles andere da draußen, also was Technik verwendet sie dies tun?

EDIT-Nur um zu klären, bitte ich über diese Grafiktechniken speziell als Streaming-Protokoll Programmiermethode - nicht für die bestehende Produkt / Technologie zu verwenden, um diese Geschäftsanforderungen zu lösen

.
War es hilfreich?

Lösung

Wie Sie fanden heraus, sie sind beide ziemlich unterschiedlich in der Art, wie sie ändern streamen. Das RDP-Protokoll von MS ist und Erweiterung eines ITU-Standard ( T.128) die online gekauft werden können.

RDP implementiert viel Bandbreite sparende Techniken, die jeder-ergänzen sich und machen es sehr effizient bei niedriger Bandbreite.

VNC auf der anderen Seite hat sehr grundlegende Kompressionstechniken: Es blockiert von Bitmap senden wird, die geändert wird und grundlegende Arten von Kompression verwenden, von RLE JPEG diese Blöcke effizient zu übertragen
. Leider ist es immer noch ziemlich verschwenderisch über geringe Bandbreite.

VNC hat im Grunde keine Kenntnis der zugrunde liegenden grafischen Primitiven verwendet, um den Bildschirm zu bauen. Das macht es einfach, auf jeder Maschine zu verwenden, da es Änderungen an den Bildschirm-Bitmap nur überwacht.
RDP zum anderen Haken tiefer in das Windows-API und ist in der Lage seinen Strom zu optimieren, basierend auf der minimalen Menge von Informationen, die das gleiche Update auf dem Client zu erzeugen.

Wenn Sie Remote-Desktop-Funktionalitäten integrieren möchten, haben Sie ein paar Möglichkeiten:

  • für RDP können Sie das ActiveX für Web-Remote-Funktionalitäten verwendet verwenden. Sie können es in Ihre eigene Software haben wollen einen Blick auf eine Wrapper zu integrieren.
    Wenn Sie in diese tiefer zu bekommen gibt es Quellcode für den Linux rdesktop -Client, der auf Windows-Rechner keine Verbindung über RDP.

  • für VNC gibt es eine Reihe von Open-Source-Implementierungen.
    FogCreek der Copilot tatsächlich nutzt ein und Sie können die Quelle erhalten, wie es auf TightVNC

Darüber hinaus gibt es eine Reihe von Projekten auf Codeproject auf RDP und VNC .

Andere Tipps

Wie Renaud sagte, VNC sendet einfach über Bitmap-Block für Block ändert sich ohne Kenntnis dessen, was der Inhalt ist. RDP ist viel intelligenter.

Sie können genau prüfen, was RDP hat aus diesen beiden Daten:

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

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

Ich denke, RDP größten Gewinne kommen aus:

  • Caching: Der Kunde eine große Menge von zuvor gesehen Blöcken speichern kann und der Server kann der Client sagen, wie sie zu benutzen. Auch sind diese persistenten so, wenn ein Client mit einem Server verbindet es bereits es gewesen kann werben, was blockiert es auf der Festplatte hat. Sehr nützlich, wenn die Fenster erhalten bewegt. Auch viele Teile von Fenstern, wie der Titelleiste sind die gleichen.

  • Line / Blockzeichnung. Wie Sie vielleicht erraten hat RDP-Operationen für Linie, Poly und rect Zeichnung. Mit Fenstern zeichnen diese kommen in Gebrauch eine ganze Menge.

  • Schriftzeichnung. RDP hat einen Weg über gylphs für Schriften zu senden und zu den Klienten zu sagen, sie zu machen.

  • Cursor-Rendering. Die Cursor-Symbole werden als Glyphen gesendet. VNC verwendet einfach einen Punkt

Das sind die Großen, die den Sinn kommen. Mehr dazu im Abschnitt 2.2.7 Capability Sets des Protokolls Spezifikation für die vollständige Liste der Zeichenfunktionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top