【问题标题】:Developing applications expected to run over RDP; any tips?开发预期在 RDP 上运行的应用程序;有小费吗?
【发布时间】:2010-11-01 15:32:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: graphics gdi remote-desktop terminal-services rdp


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      根据我的经验,我会小心处理动画 - 尤其是淡入淡出控件,它会严重影响 RDP 的性能。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多