[英]Developing applications expected to run over RDP; any tips?
假设我正在开发一个相当图形化的应用程序(C ++或C#,图形API未定),其中大部分用法将由远程用户通过RDP(终端服务器会话或远程访问单用户计算机)。 很明显,应避免使用非必要的“眼睛糖果”效果和动画。 我的问题是:
我应该小心做什么/避免做最有效地使用RDP协议? (例如,我有一个想法RDP可以将一些图形绘制原语直接远程连接到客户端......但仅适用于GDI?使用双缓冲打破这种远程处理并强制进行位图模式吗?客户端位图缓存是否“只是工作“还是只缓存字体和图标之类的东西?)
是否有任何类型的RDP协议分析器可以深入了解RDP流实际传输的内容(特别是位图与绘图原语)? (我可以想象为rdesktop源添加一些工具来做到这一点,但也许已存在的东西)。
根据我的经验,在动画方面我会小心 - 尤其是淡化/降低控制,这会严重影响RDP的性能。
双缓冲也可能会导致一些问题,但是我个人不需要做太多的解决方法--Raymond Chen的文章很好地解释了可能存在的陷阱。
从本质上讲,检查代码是否在远程会话(RDP,Citrix等)中运行是个好主意。 看看: GetSystemMetrics( SM_REMOTESESSION )
- 然后您可以在运行时决定是启用还是禁用某些功能。
我的想法是,在RDP上进行的优化工作已经涵盖了你所描述的问题的90%,所以我不担心优化RDP,你已经删除了眼睛糖果的东西,你知道应用程序将是通过RDP使用,所以我想你会避免涉及不断重绘表单的操作,我相信这已经足够了。
我们的应用程序从来没有考虑到RDP的设计,当客户告诉我们所有客户端将通过远程位置的RDP(Citrix,在特定情况下)使用时,我们也有同样的担忧,但如果我们没有更改由于RDP,客户从未调用的单行代码具有缓慢问题。
记住...... 过早的优化是邪恶的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.