4 votes

Améliorer la vitesse des applications WPF sur le bureau à distance ?

Dans notre scénario, nous avons une application wpf qui est utilisée par des utilisateurs sur un bureau à distance, et nous avons constaté que l'expérience de l'utilisateur est très lente.

Avez-vous des suggestions pour améliorer l'expérience de l'utilisateur dans ce scénario ? Un point pourrait être de désactiver toute animation/storyboard, et d'éviter d'utiliser des gradients dans l'interface utilisateur. D'autres idées sont les bienvenues.

11voto

rmoore Points 9561

Pour les dégradés, le problème ne se pose pas autant que pour les couches de rendu multiples, par exemple si vous avez un certain nombre de contrôles imbriqués, tous partiellement opaques. Jetez un coup d'œil à l'interface WPF Optimisation des performances guides disponibles. Il y a beaucoup d'informations à assimiler, mais avec les conseils sur l'équarrissage et les outils de performance vous devriez être en mesure d'apporter quelques améliorations.

UPDATE :
Jamie Rodriguez publiera certaines des discussions internes sur WPF chez Microsoft. Il y a eu un nouveau post aujourd'hui, qui inclut des conseils et des discussions sur performance lors du remoting .

Toutes les versions de WPF depuis WPF 3.5 SP1 ont été remotorisées (à la fois avec Remote Desktop et Terminal Server) en utilisant Bitmap Remoting.

Le transfert de bitmap fonctionne de la manière suivante :

  • L'application est rendue sur le serveur à l'aide du rasterizer logiciel de WPF.
  • Au fur et à mesure de l'exécution de l'application, le serveur suit les régions de la fenêtre de l'application qui sont nouvellement sales et qui doivent être mises à jour.
  • Lorsqu'une région doit être mise à jour, le serveur crée une image compressée de la région sale et l'envoie au client.
  • Une fois que le client a dessiné ce bitmap à l'endroit approprié sur sa propre fenêtre, la fenêtre du client est mise à jour

Compte tenu du fonctionnement de ce mécanisme de transfert, les performances peuvent être maximisées de plusieurs manières :

  • Les régions sales doivent être aussi petites que possible afin que le moins de données possible soient envoyées sur le câble.
  • Les animations ambiantes devraient être désactivées
    • Par exemple, si l'arrière-plan d'une fenêtre est un dégradé animé, la fenêtre entière sera invalidée ou redessinée à chaque image.
  • Le système n'optimise pas les parties occultées de t
    • Par exemple, une animation complètement cachée derrière un autre élément opaque entraînera toujours l'invalidation de la région sale et la génération d'une image bitmap. Supprimez ces éléments de votre application.
  • Les régions sales devraient être créées aussi rarement que possible.
    • Désactiver autant d'animations que possible
    • Pour les animations qui ne peuvent pas être complètement éliminées, réduisez le taux de rafraîchissement de l'animation à l'aide de la propriété DesiredFramerate.
  • Les bitmaps des régions sales doivent être aussi simples que possible.
    • Les applications fonctionnant sur TS doivent privilégier les couleurs unies plutôt que les dégradés ou autres remplissages exotiques (images inutiles, etc.), en particulier pour les pièces d'application qui seront redessinées fréquemment.
  • Évitez les opérations qui sont particulièrement lentes lors de la re
    • BitmapEffects / Effects / ShaderEffects, en particulier les flous et les ombres portées à grand rayon, sont assez lents dans les logiciels.
    • 3D - le rasterizer logiciel 3D est beaucoup plus lent que le rendu matériel.

0voto

Paul Betts Points 41354

Vous pouvez interroger le niveau de performance WPF ( http://msdn.microsoft.com/en-us/library/ms742196.aspx ) et réduisez vos animations / astuces graphiques comme il se doit, afin que votre application soit toujours belle localement tout en fonctionnant rapidement sur RDP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X