Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)

TechNet Blogs » 喻勇(Frank Yu)的技术博客 » Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)

Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)

 Frank Yu
1 Feb 2009 9:24 PM
  • Comments 3
  • Likes
08年的夏天,我在微软总部的一次技术展览会上第一次看到了Windows 7下的Remote Desktop。当时,那位做演示的同事在玩一个非常新的3D游戏,确切地说,他是在远程桌面的窗口中玩3D游戏。我当时就被雷到了!跟那个同事聊了很久,才知道这是Windows 7中会包含的一个新的功能,采用的DirectX重定向和网络压缩等最新的技术,使得通过网络传输的远程桌面,可以流畅的显示和运行多媒体的内容!当时由于Windows 7还在秘密研发阶段,这些内容都不能向外透露。如今Widows 7的beta已经发布,我终于可以跟大家分享一下这个功能的具体细节了!

先看看Windows 7中的远程桌面给我们带来了些什么新的功能:

  • 支持Windows 7 Aero效果的3D桌面
  • 支持在Remote Desktop中流畅运行Direct 2D和Direct 3D 10.1的各类应用程序
  • 真正的多显示器支持
  • 远程桌面协议的内核性能增强,包括网络传输的优化和压缩
  • 多媒体增强
    • 支持Media Foundation
    • 支持DirectShow
  • 支持低延时的音频回放
  • 双向的音频传输

接下来,我以PDC上关于RDP的课程为主,分以下几个部分详细的跟大家探讨一些远程桌面的技术和Windows 7中最新的进展。

  • RDP协议的发展和应用历程
  • Windows 7中的RDP设计架构(RDP Graphics Architecture)
  • 应用范围和演示

RDP协议的发展和应用历程

RDP是Remote Desktop Protocol的缩写,这是远程桌面的具体实现协议,微软在MSDN上公布了RDP的协议细则,据说有差不多2000多页的文档。RDP不是微软的专属协议,在Liunx等平台上也有不少实际的应用。如果你对RDP本身感兴趣,可以去看看wikipedia中关于RDP的描述。RDP在Windows平台下最常见的应用是大家熟悉的远程桌面,其实,除了远程桌面,以RDP为底层的应用还包括:

  • Terminal Server
  • Remote Desktop
  • Remote Assistance
  • Windows Meeting spaces
  • Media Center Extenders and XBox 360
  • SCCM Remote control
  • Hyper-V Remote Control
  • Windows Live Mesh

RDP是对网络有密集依赖的应用,它的架构和分层如下:

近些年来,随着多媒体、3D应用和用户体验的不断提高,Windows下的远程桌面已经不能满足一些日益增多的需求。为此,Windows 7下的RDP和远程桌面做出了革命性的变化。

Windows 7中的RDP设计架构(RDP Graphics Architecture)

在Windows 7的RDP设计中,一个非常重要的概念是对3D图像图形的渲染,通常,当我们玩3D游戏时,这些渲染是在本地计算机完成的。在Windows 7的RDP中,3D渲染既可以在本地计算机(我们称为Host机)完成,也可以在运行Remote Desktop的计算机(我们称为Client机)上完成。

具体的来说:Host机上执行3D渲染时,RDP采用了缓存、压缩等技术确保Demote Desktop上图像的流畅;在进行Client机的3D渲染时,Host机可以通过GDI, Direct 3D, Media, DWM等3D指令集,把需要渲染的数据包通过RDP传送到Client计算机,由Client计算机的CPU和显卡GPU完成硬件的渲染计算。

从这张架构图,我们可以看出,在RDP协议的上层,为D2D、DX10.1、DWM、Media App、GDI App等提供了接口。使用这些协议的3D游戏、高清视频播放软件,可以将数据流先通过RDP传送到Remote Desktop所在的Client计算机,再由Client计算机上的硬件完成渲染和执行。有这样的架构,也就不难理解,为什么可以在远程桌面中流畅的运行3D游戏了!

大家可能比较感兴趣,什么样的应用是在Host机上完成渲染的,什么样的应用是在Client机上完成渲染的,具体的任务分工如下:

Host机渲染:

  • WPF
  • Silverlight
  • Flash
  • 早于Direct3D 10.1版的3D应用
  • 其他的多媒体信息

Client机渲染:

  • GDI
  • Direct2D
  • Direct 3D 10.1版之后的3D应用
  • 在Clieng机上有Codec的,并且是没有进行DRM加密的多媒体视频文件

Windows 7中RDP的另一个法宝,就是对网络带宽的充分利用和压缩。相比XP和Vista下的RDP,Windows 7 RDP节省了大约40%的网络开销,具体的测试数据如下:

应用范围和演示

我们已经比较清楚,如果想在远程桌面流畅的玩游戏、看电影,必须满足以下的要求:

  • 客户机和远程计算机都必须是Windows 7或Windows Server 2008 R2以上的版本
  • 如果是2D游戏,需要支持Direct2D;如果是3D游戏,需要支持Direct 3D 10.1
  • 本地计算机上必须有播放电影视频文件对应的Codec
  • 本地计算机的CPU或者显卡应该满足渲染3D和视频的基本要求

如果想让自己开发的应用程序支持最新的RDP协议,需要研究一下这三个东西。我对开发的技术不是非常了解,原文照搬如下,大家可以到MSDN里面查一下RDP的具体API。

Dynamic Virtual Channels APIs

  • Client/Server extensibility for RDP
  • Bi-directional streams that extend RDP
  • Internal features use same technology

Remote Desktop ActiveX APIs

  • Host/customize full RDP client in your apps
  • Usable from web, managed or native code

RDP Windows Desktop Sharing APIs

  • RDP Platform for screen sharing
  • Enables sharing console, multiparty connections
  • Basis of Remote Assistance

开发人员可以用下面的API来检测应用程序当前时候运行在远程桌面的会话中,并且根据情况进行优化和调整。

//Managed
System.Windows.Forms.SystemInformation.TerminalServerSession//Win32
GetSystemMetrics(SM_REMOTESESSION)

关于开发方面我就不深入的讨论了,大家可以看PDC上的有关课程。最后再贴几张网上找到的Windows 7远程桌面的运行效果图:

Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)相关推荐

  1. Windows远程桌面的使用(Remote Desktop Connection)

    Remote Desktop Connection是Windows自带的一款远程登录附件,非常简单易用. 1.打开的Remote Desktop Connection 输入对方IP地址,点击conne ...

  2. windows server 2012 r2 standard 通过堡垒机远程桌面服务器报错Remote Desktop Service CALs Request Failed

    一.排查过程 过完春节后,通过堡垒机访问政务云服务器,发现无法通过远程桌面访问,报错Remote Desktop Service CALs Request Failed,直接关闭,继续查看其他的服务器 ...

  3. 在WINDOWS SERVER 上或远程桌面中使用 MUTEX

    引用: http://www.cnblogs.com/fg0711/archive/2012/05/03/2480502.html 使用Mutex需要注意的两个细节 可能你已经注意到了,例子中在给Mu ...

  4. linux远程桌面MacOS,如何在Linux或macOS中使用远程桌面连接到Windows 10 | MOS86

    如果您运行其他平台(例如Linux或macOS),但偶尔需要使用Windows 10 PC,则可以使用免费的远程桌面软件. 远程桌面协议是一种从网络上的另一台计算机控制Windows 10计算机的直观 ...

  5. windows server 2008设置远程桌面连接最大数量

    windows server 2008设置远程桌面连接最大数量 系统默认远程桌面连接的数量为1 打开控制面板---管理工具---远程桌面服务---远程桌面会话主机设置---把"限制每个用户只 ...

  6. 启用Windows Server 2012的远程桌面

    前言 Windows Server 2012 在Windows Server 2012 中远程桌面连接默认是禁用的. 启用Windows Server 2012的远程桌面 打开服务器管理器 点击远程桌 ...

  7. ①Windows Server 8基于远程桌面服务方案的安装

    今天呢,我正式开始给大家介绍一同分享Windows Server 8的远程桌面服务有什么新的变化和内容了,虽然目前是Beta版,但我觉得大的方向和内容应该变化不到哪去了,同时Windows Serve ...

  8. [服务器]Windows server 2008 R2远程桌面授权破解方法

    Windows server 2008 R2远程桌面授权破解方法  从Windows 2008 R2开始,windows 2008 r2的终端服务器已经更改为远程桌面服务器,但windows 2008 ...

  9. 远程桌面服务器office版本,Windows UWP 版 “Micosoft 远程桌面” 配置方法

    Windows下的远程应用有三种配置使用方法.使用微软商店(Microsoft Store)安装的 Windows UWP (Universal Windows Platform) 版的 " ...

最新文章

  1. html5基础知识文档,HTML5基础知识(1)
  2. Python异常处理体系简介(1)
  3. 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
  4. php mongodb 子查询,MongoDB数组子查询elemMatch
  5. LeetCode-18-4Sum
  6. linux查服务器总内存大小,在linux 下怎么查看服务器的cpu和内存的硬件信息
  7. Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
  8. MySql与SqlServer的一些常用用法的差别
  9. JAVA:基础递归算法大杂烩
  10. java 内存屏障_关于Java中的内存屏障
  11. #今日说码栏目#第十五集 iconfont-阿里巴巴矢量图的使用方法(保姆级教学,挑战全网最细致的使用矢量图)
  12. 信息源按加工深度划分_信息检索教程
  13. 拉着老公,逛了一趟绿源电动车连锁店,喜提新座驾。
  14. LeetCode:20 vaild parentless
  15. 在无处落脚的大海,你就是我的岛屿
  16. python实现百万英雄答题神器
  17. 【解决方案】adb无法连接雷电模拟器问题
  18. 【程序源代码】微信小程序商城,微信小程序微店
  19. 72个免费学习网站,涵盖所有,你值得拥有!【非推广】
  20. MIPS微程序CPU设计

热门文章

  1. python怎么清屏_python实现清屏的方法 Python Shell中清屏一般有两种方法。
  2. python os如何创建文件夹_Python怎样创建文件夹,怎样删除文件夹
  3. mysql 主从热备份 5.6 参数_MySQL主从热备份
  4. 成绩转换(百分制到五级制的转换)-(只作新手参考)
  5. bootstrap 按钮样式单选效果_【20201117】Bootstrap前端框架学习笔记
  6. Chrome插件管理器
  7. Yaml锚点和别名*
  8. recovery升级是显示进度条_注意!税控系统软件升级了,还有疑问看这里!
  9. php中多重继承,PHP面向对象之多重继承与接口用法
  10. 计算机是最大的一片云,计算机体系结构发展的四个时代介绍