Posted 11 years ago by Dirk Gaudian - Development Director, Loy & Hutz AG
Version: 4.5.0480
Avatar
Hi.

After months of development our CTO has raised the question of "WPF application on Terminal Server". Is there any experience on performance of WPF on a terminal server, particularly the fancy animated theming of the WPF Studio components? A quick test here using Remote Desktop to a virtual Vista machine revealed no problems - "just as fast as on my development machine" - but that seems a weak foundation for a statement to the CTO.

Thank's in advance,
Dirk Gaudian

Comments (4)

Posted 11 years ago by Mike Strobel - Software Engineer, CDC Software
Avatar
As you may know, WPF uses a two-thread model for UI presentation: the "message loop" (e.g. input processing) runs on the main UI thread while the actual rendering is performed by a second thread. With .NET 3.0 and 3.5 RTM, Terminal Services rendering keeps the main UI thread running on the TS server, while the composition is effectively performed on the TS client via primitive remoting. The TS server sends composition edits over the wire to the client in a highly compressed manner, which saves bandwidth and improves performance over bitmap remoting. As a result, users will experience notably better performance with WPF apps versus Win32/WinForms apps when running via Remote Desktop. Note that this behavior is only enabled when the TS client and server are running Vista or Windows Server 2008 with desktop composition enabled.

From what I understand, .NET 3.5 SP1 changes this behavior, and bitmap remoting with sub-region updates is used instead of primitive remoting in all but a few scenarios. If my understanding is correct, then this will have a negative impact on WPF applications with rich visuals (animations, gradient brushes, lots of images/media, etc.). I would recommend doing some comparison testing of your applications over Remote Desktop on machines running .NET 3.5 RTM versus .NET 3.5 SP1. I would be very interested to see your results, so please post them if you decide to do some testing :).

Cheers,
Mike

P.S. You might be able to improve your remote animation performance by setting your DesiredFrameRate to a lower number (25-30fps rather than the default value of 60fps).

EDIT: It seems my interpretation was correct. Here's a snippet from the WPF Performance blog regarding 3.5 SP1 and Terminal Services:

Quote:
Although we have not improved this scenario, it is important to highlight some differences related to Remoting
On .Net Framework 3.0 and .Net Framework 3.5:
  • Vista to Vista with DWM on, we Remoted content as Primitives (e.g. the channel protocol went over the network) (This is for the Remote Desktop case only, not Terminal Server)
  • In other cases: we Remoted content as Bitmaps
On .Net Framework 3.5 SP1
  • We now remote as bitmaps in ALL cases.
  • The reason is that WPF 3.5 SP1 now uses a new graphics DLL (wpfgfx.dll) and certain changes could not be made to Vista’s existing graphics DLL (milcore.dll) that is also used by DWM.
  • Although this could be seen a regression at first, depending on the complexity of the application scene (e.g. very rich scenes) this can actually improve performance in certain scenarios . Also, connections with reasonably high bandwidth and scenarios that don’t involve a lot of animation or 3D, for instance, tend to remote just fine via bitmaps.


[Modified at 11/26/2008 09:46 AM]
Posted 11 years ago by Dirk Gaudian - Development Director, Loy & Hutz AG
Avatar
Thank you very much for your quick reply.

That should answer most concerns of our CTO. And time is playing for us, as Vista's SP is not too far away and our customers are slowly starting to migrate to Vista Clients and Windows Server 2008.

Greetings from across the Atlantic,
Dirk Gaudian
Posted 11 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Dirk,

Also, we try to stick to subtle animations in our products that shouldn't cause you any issues over a normal WinForms app, even when bitmap remoting is used.


Actipro Software Support

Posted 9 years ago by wanda schmick
Avatar
"Although we have not improved this scenario, it is important to highlight some differences related to Remoting On .Net Framework 3.0 and .Net Framework 3.5:

*Vista to Vista with DWM on, we Remoted content as Primitives (e.g. the channel protocol went over the network) (This is for the Remote Desktop case only, not Terminal Server)
*In other cases: we Remoted content as Bitmaps

On .Net Framework 3.5 SP1

*We now remote as bitmaps in ALL cases.
*The reason is that WPF 3.5 SP1 now uses a new graphics DLL (wpfgfx.dll) and certain changes could not be made to Vista’s existing graphics DLL (milcore.dll) that is also used by DWM.
*Although this could be seen a regression at first, depending on the complexity of the application scene (e.g. very rich scenes) this can actually improve performance in certain scenarios . Also, connections with reasonably high bandwidth and scenarios that don’t involve a lot of animation or 3D, for instance, tend to remote just fine via bitmaps."

Thank you for this information it really helps me. Thanks for the post.

------------
Software Development

[Modified at 09/28/2010 07:54 PM]
The latest build of this product (v2019.1 build 0683) was released 1 month ago, which was after the last post in this thread.

Add Comment

Please log in to a validated account to post comments.