您的位置:首页 > 百科 > 正文

虚拟桌面

"Desktop virtualization (或者称为Virtual 来自Desktop In360百科frastruct略肉山占ure) 是一种基于服务器的计算模型,VDI概念最早由桌面虚拟化 厂商VMware提出,已经成为标着太仍语济只训手准的技术术语。虽然借用了传统的瘦客户端的模型,但是让管理员与用户能够同时获得两种方式的优点:将所有桌面虚拟机在数据中心进行托管并义这迫独维统一管理;同时用户能够获得完整PC的使用体验。

  • 中文名称 虚拟桌面
  • 外文名称 Desktop virtualization
  • 类型 计算模型类
  • 起源 桌面虚拟化厂商VMware提出
  • 别称 Virtual Desktop Infrastructure

定义

  来自简单的来说,虚拟桌面是指:支持企业级实现桌面系统的远程动态访问与数据中心统一托管的技属若史相督围植每告露术。一个形象的类比,就是现在,我们可以通过任何设备、在任何地点,任何时间访问在网络上的我们的邮件系统,或者网盘;而未来我们可以通过任何设备,在任何地点、任何时间访问在网络上的属于我们个人其养展副的桌面系统。

  行业现状

  思科在2010年年底的时候,推出360百科VMware View 4.5Citrix XenDesktop两款产品,该两款产品已经在2011年3月上市。这两款产品的价格都低于500美元,包括 一个USB键盘、鼠标和客户端授权。除此之外,思科表示该旧弦大为究孔须公司此前发布的Cius平板电脑将支持VMware View、Citrix Receiver 和Wyse P问字苗总杀持学千娘ocket 云计算虚拟软件;并且将会和微软的Windows在一个数据中心进行互联。Cius同样也在2011年3月上市。

  桌面虚拟化和瘦客户端计算机已经推出了很多年方强步刘找,通过数据中心服务器中心化烟那从杆企而树困电脑的功能、数据和应用程序给予数据和安全更多的控制。

  虚拟桌面技术架构

  VDI桌面虚拟化的优势在于运算集中在服务器端,因此在以下两种环境中特别合适:1善径等结、在极小的广域网带宽环境下,例如低于500Kbs的线路下,可以采用VMware等VDI产品进行部署,用户可以使伯客待出例身蛋武政用平板电脑或者手机接入,访问自己的桌面环境,实现随时随地办公;2、在新建的全千兆网络环境下,同时业务应用比较简单的环境中,用户部署VDI桌面虚拟化后可以购买100元左右的云终端作为客户机,大大减少客户机的硬件投入,拉平在服务器上的硬件投入,使得总投资更加合理。

  VDI虚拟桌面基础架构

  虚拟桌面基础架构(Virtual De后哥宁停此督sktop Infr海核astructure,简称VDI)是许多机普帮鲜矛自验构正在评估的全新模式,它是基于早期的RDP协议和瘦客户机盾实史句逐步演变而来的,也是国外VM了治移器剂ware等国外虚拟化厂家长期鼓吹的模式。VDI旨在为智能分布式计算带来出色的响应能力和定制化的用户体验,并通过基于服务器的模式提供管理和安全优势。它能够为整个桌面映像提供集中化的管理,但这一模式也存在着其固有的问题。主要表现为:因其利用硬件仿真及瘦协议,使得视频、Adobe Flash、IP 语音(VoIP)以及其它计算或图形密集型应用不适用于该模式,而且VDI 需要持久的网络连接,因此不适于要求离线移动性的场合。此外,其基于服务器的模式对服务器的配置有极高的要求,这些问题的存在不能不让众多的用户重新考虑部署VDI的实际意义及成本。 从实际应用方面来分析,VDI模式还存在诸多需要解决的问题,而与之相关的虚拟化桌面,如远程托管桌面、远程虚拟应用程序、远程托管专用虚拟桌面、本地虚拟应用程序及本地虚拟操作系统等虚拟化桌面也都存在着各种问题;另外还有对终端硬件的支持问题、对网络及服务器硬件过度依赖的问题、以及数据安全性问题等。

  VOI虚拟操作系统基础架构

  虚拟操作系统基础架构(Virtual OS Infrastructure,简称VOI)成为一个新的桌面虚拟化发展方向。而在国内,和信最早推出了基于VOI桌面虚拟化架构的虚拟终端管理系统。VOI桌面虚拟化技术不仅可实现基于服务端的远程虚拟OS、APPS、UserProfiles的按需交付,也可实现基于客户端的本地缓存OS、APP及UserProfiles,这样不仅仅可利用终端本地资源处理计算及图形密集型应用,比如:如音视频、大型设计及工业软件等,也可支持各种计算机外设以适应复杂的应用环境及未来的应用扩展。同时,对网络和服务器的依赖性将大大降低,即使网络中断或服务器宕机终端也可继续使用,数据可实现云端集中存储,也可实现终端本地加密存储,且终端应用数据不会因网络或服务端故障而丢失。

虚拟桌面架构

  虚拟桌面整体架构分为以下四层:

  l 终端接入层

  用户的终端处于这个层面,虚拟桌面可以接受各种终端的接入。

  l 接入网络层

  接入网络层负责保证用户安全接入,并且为桌面云资源提供负载均衡。

  l 桌面管理层

  桌面管理层负责整个虚拟桌面系统的调度,如新虚拟桌面的注册及将虚拟桌面的请求指向可用的系统,认证用户身份并为其授权可以使用的桌面,除此之外桌面管理层本身也承担负载均衡的作用。

  l 资源池层

  资源池层负责对计算资源池、存储资源池、网络资源池的统一管理,按需分配部署、资源动态调度等。

CreateDesktop

  始易仍收形话吗落在 Windows 扬低拉鸡经群生Api 中提供了 Cr来自eateDesktop 函数来创建新的虚拟桌面,通过 SwitchDesktop 函数可以转入到指定的桌面,360百科在新创建的桌面中可以打开进程explorer.exe,CreatePro调构重铁殖密九死练我cess 有个TStart清刻赶石突upInfo结构的参数,该结构中有个叫lpDesktop的成员,它指定了端影职终的板民置安研在哪个桌面创建进程;该函数实现的虚拟桌面为Windows视图系统创建多桌面扩展,使用户或程序气儿坚带煤可以多个桌面上相互切换可视化的应用,与Linux 图形界研讲面中四方格切换相似,但是该技术与现行"桌面虚拟化技术"是两种完全不同的概念,不可以混淆。

  引用MSDN斯还祖:

  Creates a new desktop, associates 队力息丰南倒善it with the current window station of the calling process, and assigns it to the calling thread. The calling process must have an associated window station, eithe命资准程久鸡列千你沿r assigned by the sys军区鸡赵化概们所tem at process creation time or set by the SetProcessWindowStati牛众临助客常玉on function.

  To specify the size of the heap for the desktop, use the CreateDesktopEx function.

  函数原型

  HDESK WINAPI CreateDesktop(

  _In_ LPCTSTR lpszDesktop,

  _Reserved_ LPCTSTR lpsz图论击Device,

  _Res念松协穿终场保erved_ DEVMODE *pDevmode,

  _In乐校_ DWORD dwFlags,

  _In_ ACCESS_MASK dwDesiredAccess,

  _In_op米然书克友控t_ LPSECURITY_ATTRIBUTES lpsa

  );

  Parameters

  lpszDesktop [in]

  The name of the desktop to be created. Desktop names are case-insensitive and may not contain backslash characters (\).

  lpszDevice

  Reserved; must be NULL.

  pDevmode

  Reserved; must be NULL.

  dwFlags [in]

  This parameter can be zero or the following value.

  在C语言中的实现

  int APIENTRY WinMain(HINSTANCE hInstance,

  HINSTANCE hPrevInstance,

  LPSTR lpCmdLine,

  int nCmdShow)

  {

  // TODO: Place code here.

  HDESK hOld = GetThreadDesktop(GetCurrentThreadId());

  HDESK hNew = CreateDesktopA("Test", NULL, NULL, NULL, GENERIC_ALL, NULL);

  if ((NULL == hOld) || (NULL == hNew))

  {

  MessageBox(NULL, "失败!", "测试", MB_OK | MB_ICONERROR);

  return 1;

  }

  SetThreadDesktop(hNew);

  SwitchDesktop(hNew);

  MessageBox(NULL, "成功!", "测试", MB_OK);

  SwitchDesktop(hOld);

  CloseDesktop(hNew);

  return 0;

  }

  在VB中的实现

  Private Sub Form_Load()

  g_hDesktopThreadOld = GetThreadDesktop(App.ThreadID) '得到正常的桌面句柄

  RegisterHotKey Me.hWnd, 1, MOD_CONTROL, Asc("Q") '注册热键

  RegisterHotKey Me.hWnd, 2, MOD_CONTROL, Asc("W") '注册热键

  g_hDesktopNameNew = "MyNewDesktop"

  g_hDesktopNew = OpenDesktop(g_hDesktopNameNew, 0, False, DESKTOP_ALL) '如果新桌面已经存在,就打开它

  If g_hDesktopNew = 0 Then

  g_hDesktopNew = CreateDesktop(g_hDesktopNameNew, vbNullString, ByVal 0&, 0, MAXIMUM_ALLOWED, ByVal 0&) '如果不存在,就新建一个

  End If

  Call SetThreadDesktop(g_hDesktopNew)

  lpOldWinProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf myWindowProc) '子类化主窗口,接收热键消息

  End Sub

  Private Sub Form_Unload(Cancel As Integer)

  If g_hDesktopNew <> 0 Then

  CloseDesktop g_hDesktopNew '关闭新建的桌面句柄

  End If

  SetWindowLong Me.hWnd, GWL_WNDPROC, lpOldWinProc

  End Sub

发表评论

评论列表