4

Вопрос по windows, .net, wpf – Повышение скорости работы приложений WPF через удаленный рабочий стол?

В нашем сценарии у нас есть приложение wpf, которое используется пользователями через удаленный рабочий стол, и мы обнаружили, что пользовательский интерфейс очень медленный.

Любые предложения по улучшению взаимодействия с пользователем в этом сценарии? Одной из причин может быть отключение любых анимаций / раскадровок и избегание использования градиентов в пользовательском интерфейсе. Больше мыслей приветствуются.

  • Это все еще актуально после .NET 4.5 и Windows 10? Я помню, как читал несколько лет назад, что Microsoft с тех пор отключила оптимизацию специально для RDP, поскольку она добавляет сложности, которая больше не нужна, поскольку большинство людей имеют достаточно широкополосные соединения.

    от
  • Мы говорим о производительности через удаленный рабочий стол. Когда он запускается из прямой настольной коробки, он работает хорошо и хорошо.

    от amazedsaint
  • Да, но все еще зависит от визуализации интерфейса. Проблемы производительности просто усугубляются. Перезагрузка больших графических элементов и элементов управления также требует значительных усилий. Проверьте здесь для некоторого подобного обсуждения.stackoverflow.com/questions/198030/…

    от
  • Я сожалею, что у вас могут возникнуть проблемы, если они работают на XP. Я знаю о проекте, который должен был отклонить WPF, потому что они не могли найти способ обойти это. :-(

    от DavidK
  • Хайме Родригес опубликовал сегодня некоторую информацию, которая может быть полезна для повышения производительности приложений при удаленном взаимодействии.

    от rmoore
  • К сожалению, пользователи используют XP

    от amazedsaint
  • Пользователи на XP или Vista? Удаленный рабочий стол с WPF в XP довольно ужасен, так как растровое отображение создается на сервере и отправляется по сети клиенту.

    от DavidK
  • 0

    Вы можете запросить уровень производительности WPF (

    http://msdn.microsoft.com/en-us/library/ms742196.aspx) и усугубьте ваши анимации / графические трюки в зависимости от ситуации, чтобы ваше приложение по-прежнему выглядело великолепно локально, в то же время быстро работая по RDP.

  • 9

    Для градиентов это не такая большая проблема

    как множественные слои рендеринга, например, если у вас есть куча вложенных элементов управления, все они частично непрозрачны. Посмотрите через WPFОптимизация производительности руководства доступны. Там есть много информации, которую нужно переварить, но с советами по рендерингу иинструменты производительности Вы определенно должны быть в состоянии сделать некоторые улучшения.

    UPDATE:
    Джейми Родригес опубликует некоторые внутренние обсуждения WPF в Microsoft. Сегодня появилось новое сообщение, которое включает в себя советы и обсужденияпроизводительность при удаленном взаимодействии.

    All versions of WPF since WPF 3.5 SP1 have remoted (both with Remote Desktop and Terminal Server) using Bitmap Remoting.

    Bitmap remoting works as follows:

    The application is rendered on the server using WPF’s software rasterizer As the application runs, the server keeps track of which regions of the application’s window are newly dirty and need to be updated When a region needs to be updated, the server creates a compressed bitmap of just the dirty region and sends that to the client Once the client has drawn that bitmap to the appropriate place on its own window, the client window is up-to-date

    Given how this remoting mechanism works, performance can be maximized in several ways:

    Dirty regions should be kept as small as possible so the least amount of data is sent over the wire Ambient animations should be turned off For instance, setting a window background to an animating gradient would cause the entire window to be invalidated / redrawn every frame The system does not optimize away occluded parts of the application For instance, an animation that is completely hidden behind some other opaque element will still cause dirty region invalidation / bitmap generation to occur. Remove these from your application. Dirty regions should be created as infrequently as possible Turn off as many animations as possible For those animations that can’t be eliminated completely, lower the animation framerate using the DesiredFramerate property Dirty Region Bitmaps should be as simple as possible to maximize their compression Application running over TS should favor solid colors over gradients or other exotic fills (unnecessary images, etc), especially for application pieces that will be redrawn frequently Avoid operations that are especially slow when rendered in software BitmapEffects / Effects / ShaderEffects, especially blurs and drop shadows with large radii, are quite slow in software 3D – the 3D software rasterizer is substantially slower than rendering in hardware