分类: WINDOWS
2009-12-15 16:52:47
先看看Windows 7中的远程桌面给我们带来了些什么新的功能:
接下来,我以为主,分以下几个部分详细的跟大家探讨一些远程桌面的技术和Windows 7中最新的进展。
RDP是Remote Desktop Protocol的缩写,这是远程桌面的具体实现协议,微软在MSDN上公布了RDP的协议细则,据说有差不多2000多页的文档。RDP不是微软的专属 协议,在Liunx等平台上也有不少实际的应用。如果你对RDP本身感兴趣,可以去看看wikipedia中关于的描述。RDP在Windows平台下最常见的应用是大家熟悉的远程桌面,其实,除了远程桌面,以RDP为底层的应用还包括:
RDP是对网络有密集依赖的应用,它的架构和分层如下:
近些年来,随着多媒体、3D应用和用户体验的不断提高,Windows下的远程桌面已经不能满足一些日益增多的需求。为此,Windows 7下的RDP和远程桌面做出了革命性的变化。
在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机渲染:
Client机渲染:
Windows 7中RDP的另一个法宝,就是对网络带宽的充分利用和压缩。相比XP和Vista下的RDP,Windows 7 RDP节省了大约40%的网络开销,具体的测试数据如下:
我们已经比较清楚,如果想在远程桌面流畅的玩游戏、看电影,必须满足以下的要求:
如果想让自己开发的应用程序支持最新的RDP协议,需要研究一下这三个东西。我对开发的技术不是非常了解,原文照搬如下,大家可以到MSDN里面查一下RDP的具体API。
Dynamic Virtual Channels APIs
Remote Desktop ActiveX APIs
RDP Windows Desktop Sharing APIs
开发人员可以用下面的API来检测应用程序当前时候运行在远程桌面的会话中,并且根据情况进行优化和调整。
//Managed
System.Windows.Forms.SystemInformation.TerminalServerSession
//Win32
GetSystemMetrics(SM_REMOTESESSION)
关于开发方面我就不深入的讨论了,大家可以看PDC上的。最后再贴几张网上找到的Windows 7远程桌面的运行效果图: