2009-06-09 1 views
3

Предположим, что я разрабатываю довольно графически интенсивное приложение (C++ или C#, графический API не определился), для которого большая часть использования будет выполняться удаленными пользователями через RDP (сеансы терминального сервера или удаленный доступ к однопользовательской машине). Очевидно, что следует избегать ненужных эффектов и анимаций «глазных конфет». Мои вопросы:Разработка приложений, ожидаемых для запуска RDP; какие-нибудь советы?

  • Что я должен делать, чтобы делать/избегать делать, чтобы наиболее эффективно использовать протокол RDP? (например, у меня есть идея, что RDP может удалять некоторые примитивы графического рисования прямо к клиенту ... но это только для GDI? Использует ли использование двойной буферизации такое удаленное перемещение и принудительное растровое изображение? работать "или он кэширует только такие вещи, как шрифты и значки?)

  • Есть ли какой-либо анализатор протокола RDP, который даст некоторое представление о том, что поток RDP фактически транспортирует (в частности, растровые изображения и примитивы рисования)? (Я могу себе представить, чтобы добавить источник для источника rdesktop, но, возможно, что-то уже существует).

ответ

3

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

Двойная буферизация может также вызвать некоторые проблемы, однако лично мне не пришлось делать слишком много на пути обходных решений для этого - article от Raymond Chen объясняет возможные ловушки достаточно хорошо.

По сути, это хорошая идея, чтобы проверить код, работает ли он на удаленных сеансах (RDP, Citrix и т. Д.). Взгляните на: GetSystemMetrics(SM_REMOTESESSION) - во время выполнения вы можете решить, включать или отключать определенные функции.

2

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

Наше приложение никогда не разрабатывалось с учетом RDP, у нас были те же проблемы, что и у нас, когда клиент сказал нам, что все его клиенты будут использоваться через RDP (Citrix в этом конкретном случае) из удаленных мест, но также, если мы не изменил ни одной строки кода, которую клиент никогда не вызывал с проблемами медленности из-за RDP.

запомнить ... Преждевременная оптимизация зла.

Смежные вопросы