3

かなりグラフィックを多用するアプリケーション(C ++またはC#、グラフィックAPIは未定)を開発していたとすると、ほとんどの使用はRDP(ターミナルサーバーセッションまたはシングルユーザーマシンへのリモートアクセス)を介したリモートユーザーによるものになります。本質的でない「目玉」効果やアニメーションは避けるべきであることは明らかです。私の質問は次のとおりです。

  • RDPプロトコルを最も効率的に使用するには、何をするか、または避けるように注意する必要がありますか?(たとえば、RDPが一部のグラフィックス描画プリミティブをクライアントに直接リモートできるという考えがあります...しかし、それはGDIの場合のみですか?ダブルバッファリングを使用すると、そのようなリモート処理が中断され、ビットマップモードが強制されますか?クライアント側のビットマップキャッシュは「動作します」またはフォントやアイコンなどの特定のもののみをキャッシュしますか?)

  • RDPストリームが実際に何を転送しているのか(特に、ビットマップと描画プリミティブ)についての洞察を与える、利用可能なRDPプロトコルアナライザーの種類はありますか?(これを行うためにrdesktopソースにいくつかのインストルメンテーションを追加することを想像できますが、おそらく何かがすでに存在します)。

4

2 に答える 2

3

私の経験では、アニメーション、特にRDPのパフォーマンスを大幅に低下させる可能性のあるフェードアップ/ダウンコントロールに関しては注意が必要です。

ダブルバッファリングもいくつかの問題を引き起こす可能性がありますが、私は個人的にこれを回避するためにあまり多くのことをする必要はありませんでした-レイモンドチェンによる記事は、起こりうる落とし穴を非常によく説明しています。

基本的に、リモートセッション(RDP、Citrixなど)で実行されているかどうかをコードでチェックインすることをお勧めします。以下をご覧くださいGetSystemMetrics( SM_REMOTESESSION )。-実行時に、特定の機能を有効にするか無効にするかを決定できます。

于 2009-07-09T08:50:36.513 に答える
2

私の考えでは、RDPで行われた最適化作業は、説明している問題の90%をすでにカバーしているので、RDPの最適化について心配する必要はありません。すでに目を見張るようなものは削除されており、アプリケーションは次のようになります。 RDPを介して使用されるため、フォームの継続的な再描画を伴う操作は避けられると思います。これで十分だと思います。

私たちのアプリケーションはRDPを念頭に置いて設計されたことはありません。顧客から、すべてのクライアントがリモートロケーションからRDP(この場合はCitrix)を介して使用されると言われたときと同じ心配がありましたが、変更しなかった場合も同様です。 RDPによる速度低下の問題で顧客が電話をかけたことのない1行のコード。

覚えておいてください...時期尚早の最適化は悪です。

于 2009-06-10T09:44:46.473 に答える