3

假设我正在开发一个图形密集型应用程序(C++ 或 C#,图形 API 未确定),其大部分使用将由远程用户通过 RDP(终端服务器会话或对单用户计算机的远程访问)进行。很明显,应该避免不必要的“眼睛糖果”效果和动画。我的问题是:

  • 为了最有效地使用 RDP 协议,我应该注意/避免做什么?(例如,我有一个想法 RDP 可以将一些图形绘制原语直接远程到客户端......但这仅适用于 GDI 吗?使用双缓冲会破坏这种远程处理并强制位图模式吗?客户端位图缓存“只是工作”还是只缓存某些东西,比如字体和图标?)

  • 是否有任何可用的 RDP 协议分析器可以深入了解 RDP 流实际传输的内容(特别是位图与绘图原语)?(我可以想象为rdesktop源添加一些工具来执行此操作,但可能已经存在某些东西)。

4

2 回答 2

3

根据我的经验,在动画方面我会非常小心——尤其是淡入淡出控制,这会严重影响 RDP 的性能。

双缓冲也可能会导致一些问题,但是我个人不必为此做太多的变通方法 - Raymond Chen 的文章很好地解释了可能的陷阱。

本质上,检查代码是否在远程会话(RDP、Citrix 等)中运行是一个好主意。看看:GetSystemMetrics( SM_REMOTESESSION )- 然后您可以在运行时决定是否启用或禁用某些功能。

于 2009-07-09T08:50:36.513 回答
2

我的想法是,对 RDP 所做的优化工作已经涵盖了您描述的问题的 90%,所以我不会担心针对 RDP 进行优化,您已经删除了令人眼花缭乱的东西,您知道应用程序将通过 RDP 使用,所以我想你会避免涉及连续重绘表格的操作,我相信这就足够了。

我们的应用程序在设计时从未考虑到 RDP,当客户告诉我们其所有客户端将通过远程位置的 RDP(在特定情况下为 Citrix)使用时,我们也有同样的担忧,但如果我们没有更改由于 RDP 导致客户从未调用过的单行代码。

记住......过早的优化是邪恶的。

于 2009-06-10T09:44:46.473 回答