Разница между службами RDP / Terminal Services и VNC Streaming - PullRequest
6 голосов
/ 12 февраля 2009

Как часть инструмента поддержки клиентов, я хочу предоставить некоторые функциональные возможности, чтобы иметь возможность запрашивать просмотр / удаленное управление сеансом рабочего стола. Есть несколько способов получить снимок экрана и затем передать его, но я хочу выяснить, в частности, почему RDP (Remote Desktop / Terminal Services и VNC так отличаются. Я использую RDP против VNC только потому, что они, похоже, используют совершенно разные методы для потоковой передачи экрана клиенту.

Если бы мне пришлось угадывать, RDP, по-видимому, передает блоки растровой графики (скажем, 100x100px), чтобы создать полное изображение (которое может быть довольно медленным), но, кажется, передает обычные нарисованные формы / заливки или рисунок шрифта в клиент очень быстро. VNC, кажется, делает гигантские снимки экрана, сравнивает предыдущее изображение и передает изменения клиенту.

Я чувствую, что RDP - намного более качественный и гладкий протокол, чем что-либо еще, так какой метод он использует для достижения этой цели?

РЕДАКТИРОВАТЬ - просто чтобы уточнить, я спрашиваю об этих графических методах, в частности как о методе программирования протокола потоковой передачи, а не о том, какой существующий продукт / технология использовать для решения этого бизнес-требования.

Ответы [ 2 ]

10 голосов
/ 12 февраля 2009

Как вы выяснили, они оба довольно различны в том, как они изменяют поток. Протокол RDP от MS является расширением стандарта ITU (T.128) , который можно приобрести через Интернет.

RDP реализует множество методов экономии пропускной способности, которые дополняют друг друга и делают его очень эффективным при низкой пропускной способности.

С другой стороны, VNC имеет очень простые методы сжатия: он будет отправлять блоки растрового изображения, которые были изменены, и будет использовать основные типы сжатия, от RLE до jpeg, для эффективной передачи этих блоков. К сожалению, это все еще довольно расточительно по низкой пропускной способности.

VNC практически не знает базовых графических примитивов, используемых для построения экрана. Это позволяет легко использовать его на любом компьютере, поскольку он просто отслеживает изменения в растровом изображении на экране.
RDP, с другой стороны, глубже подключается к Windows API и может оптимизировать свой поток на основе минимального объема информации, необходимого для создания такого же обновления на клиенте.

Если вы хотите интегрировать функции удаленного рабочего стола, у вас есть несколько вариантов:

  • для RDP вы можете использовать ActiveX, используемый для удаленного доступа к Интернету. Возможно, вы захотите взглянуть на оболочку , чтобы интегрировать ее в собственное программное обеспечение.
    Если вы хотите углубиться в это, есть исходный код, доступный для клиента linux rdesktop , который подключается к компьютерам Windows через RDP.

  • для VNC существует ряд реализаций с открытым исходным кодом.
    Копилот FogCreek фактически использует один, и вы можете получить его источник , поскольку он построен на TightVNC

Существует также ряд проектов на CodeProject на RDP и VNC .

4 голосов
/ 23 августа 2009

Как сказал Рено, VNC просто отправляет по битовым изменениям блок за блоком, не зная, что такое контент. RDP намного умнее.

Вы можете точно узнать, что RDP делает из этих двух спецификаций:

Уровень протокола: http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx

Уровень графики: http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx

Я думаю, что самые большие выгоды RDP прибывают из:

  • Кэширование: клиент может хранить большое количество ранее просмотренных блоков, а сервер может сообщить клиенту, как их использовать. Кроме того, они являются постоянными, поэтому, когда клиент подключается к серверу, на котором он уже был, он может объявить, какие у него блоки на диске. Очень полезно, когда окна перемещаются. Также многие части окон, такие как строка заголовка, одинаковы.

  • Чертеж линии / блока. Как вы уже догадались, в RDP есть операции для рисования линий, поли и прямоугольников. С окнами для рисования они часто используются.

  • Рисунок шрифта. У RDP есть способ пересылать шрифты для шрифтов и сообщать клиенту, чтобы они отображались.

  • Визуализация курсора. Значки курсора отправляются в виде глифов. VNC просто использует точку

Это самые большие, которые приходят на ум. Ознакомьтесь с разделом 2.2.7 «Возможности». Наборы спецификаций протокола для полного списка характеристик чертежа.

...