统一应用程序通知框架的制作方法

文档序号:27611696发布日期:2021-11-27 02:41阅读:149来源:国知局
统一应用程序通知框架的制作方法

1.本文描述的各方面总体上涉及计算机联网、远程计算机访问、虚拟化、企业移动性管理以及与其相关的硬件和软件。更具体地,本文描述的各方面涉及用于虚拟应用程序的通知框架。


背景技术:

2.当前的虚拟桌面和应用程序产品通常由用户可以通过其与虚拟应用程序交互的前端和管理虚拟资源和实例的后端组成。应用程序可以从后端服务接收消息并为用户生成通知。


技术实现要素:

3.下文呈现本文中描述的各个方面的简要概述。本发明内容不是广泛的概述,并且不旨在确定所需的或关键的要素或描绘权利要求的范围。以下概述仅以简化形式呈现一些概念,作为以下提供的更详细描述的介绍性序言。
4.统一应用程序通知框架可以经由通知应用程序编程接口(api)、操作系统级拦截和服务对服务通知信道接收与虚拟应用程序实例相关联的通知。可以对通知进行分类和过滤。
5.通知api通知可以通过统一应用程序通知框架的本地api调用从虚拟应用程序实例接收。操作系统级通知拦截消息可以基于由虚拟应用程序实例发送到虚拟操作系统实例的虚拟通知生成,虚拟应用程序实例在该虚拟操作系统实例上执行。服务对服务通知可以由服务虚拟应用程序实例的后端服务生成。
6.统一应用程序通知框架可以将通知发送到客户端工作区。
7.受益于以下进一步详细讨论的公开内容,这些和附加的方面将得到理解。
附图说明
8.通过参考考虑附图的以下描述,可以获得对本文中描述的各方面及其优点的更完整的理解,在附图中,相同的附图标记指示相同的特征,并且其中:
9.图1描绘了可以根据本文描述的一个或多个示例性方面使用的示例性计算机系统架构;
10.图2描绘了可以根据本文描述的一个或多个示例性方面使用的示例性远程访问系统架构;
11.图3描绘了可以根据本文描述的一个或多个示例性方面使用的示例性虚拟化系统架构;
12.图4描绘了可以根据本文描述的一个或多个示例性方面使用的示例性基于云的系统架构;
13.图5描绘了示例性统一应用程序通知框架;
14.图6描绘了用于客户端设备的示例性用户界面;
15.图7描绘了用于提供统一应用程序通知框架的示例性方法;以及
16.图8描绘了用于由客户端工作区接收通知的示例性方法。
具体实施方式
17.在各种实施例的以下描述中,参考上文标识且形成本文一部分的附图,并且其中通过图示的方式示出了其中可以实践本文中描述的各方面的各种实施例。应理解,在不脱离本文中描述的范围的情况下,可以利用其他实施例,并且可以进行结构和功能修改。各个方面能够是其他实施例并且能够以各种不同的方式实践或执行。
18.传统的云产品在后端应用程序实例和前端用户界面之间缺乏可靠的通知机制。例如,后端应用程序实例可以是在虚拟桌面环境中运行的microsoft电子邮件客户端应用程序。前端用户界面可以是citrix后端应用程序实例通常无法直接向前端用户界面发出警报,并且因此当应用程序发出通知时,用户可能不会收到通知,直到她自发打开该应用程序。例如,如果用户要经由在本地计算机的主机操作系统上运行的电子邮件客户端接收电子邮件消息,则电子邮件客户端可以向在本地计算机上运行的主机操作系统发送通知消息,并且可以用通知立即提醒用户。然而,如果电子邮件消息到达在虚拟机上运行的电子邮件客户端的虚拟实例,则在本地计算机上运行的主机操作系统可能无法知道新电子邮件已到达,并且用户可能不会发现新电子邮件的到达,直到她主动启动虚拟桌面用户界面来访问虚拟机和/或启动电子邮件客户端的虚拟实例。因此,在虚拟化环境中需要一种可靠的通知框架来改进用户体验。
19.为了克服上述现有技术中的限制,并且为了克服在阅读和理解本说明书时将显而易见的其他限制,本文描述的各方面涉及一种统一应用程序通知框架。
20.作为对以下更详细描述的主题的概述,本文描述的各方面涉及一种用于云和/或虚拟化应用程序的统一通知框架。用户可以接收通知而无需打开虚拟化或云应用程序来单独检查每个通知,从而提高用户体验和客户满意度。更具体地,本公开允许前端用户界面经由统一应用程序通知框架并通过多个通信信道之一来接收与后端应用程序实例相关的通知消息。因此,用户可以更快速且更有效地接收关于后端应用程序实例的相关信息,因为用户更容易获得这些信息。
21.应当理解,本文中使用的措辞和术语是为了描述的目的,不应被视为限制性的。相反,本文中使用的短语和术语被赋予其最广泛的解释和含义。“包括(including)”和“包括(comprising)”及其变体的使用意在涵盖其后列出的项目及其等同物以及附加项目和其等同物。术语“连接”、“耦合”、“接合”和类似术语的使用意在包括直接和间接连接、耦合和接合。
22.如本文中所使用且在附图中所描绘,术语“通知”(也称为消息或通知消息)是指由应用程序或操作系统生成且含有用于相同或其他应用程序和操作系统的消息的任何类型的数据或信息。尽管对其大小没有限制,但通知的大小通常相对较小(例如,几个字节到几千字节)。通知消息的发送者和接收者可能需要预先就消息的格式和传递方法达成一致。通知的接收者可以通过向用户呈现相关信息来进一步处理通知。例如,通知可以在屏幕(例如,文本、图标、弹出窗口、对话框、状态栏、提示信息(toast)、磁贴、徽标、警报、计数器等)
上可视地呈现给用户,通过扬声器(例如,闹钟、铃声、音频警报等)可听地呈现给用户,或者通过任何其他手段(例如,振动、触觉反馈等)呈现给用户。作为实例,电子邮件客户端在接收到新电子邮件时可以向电子邮件客户端正在其上执行的操作系统发送通知,使得操作系统可以经由弹出对话框提醒用户有新电子邮件。
23.一旦用户手动确认(例如,阅读)通知或在通知呈现给用户之后自动清除,则接收到的通知可被“清除”或以其他方式从应用程序或系统移除。替代地,可以在接收到通知后经过了一定时间(例如,1小时、1天、2周、3个月等)之后清除通知。已清除(或过期)的通知可能不再呈现给用户。
24.计算架构
25.计算机软件、硬件和网络可以用在各种不同的系统环境中,包括独立环境、联网环境、远程访问环境(也称为远程桌面)、虚拟化环境和/或基于云的环境等。图1图示了可用于在独立环境和/或联网环境中实现本文描述的一个或多个示例性方面的系统架构和数据处理设备的一个实例。各种网络节点103、105、107和109可以经由诸如因特网的广域网(wan)101互连。也可以或替代地使用其他网络,包括专用内联网、公司网络、局域网(lan)、城域网(man)、无线网络、个人网络(pan)等。网络101用于图示的目的,并且可以用更少或更多计算机网络代替。局域网133可以具有任何已知的lan拓扑中的一种或多种,并且可以使用各种不同的协议中的一种或多种,诸如以太网。设备103、105、107和109以及其他设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到网络中的一个或多个。
26.本文中使用并在附图中描绘的术语“网络”不仅指其中远程存储设备经由一个或多个通信路径耦合在一起的系统,而且指可以不时耦合到具有存储能力的此类系统的独立设备。因此,术语“网络”不仅包括“物理网络”,还包括“内容网络”,其由归属于驻留在所有物理网络上的单个实体的数据组成。
27.这些部件可以包括数据服务器103、网络服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体访问、控制和管理,用于执行本文描述的一个或多个示例性方面。数据服务器103可以连接到网络服务器105,用户通过该网络服务器与所请求的数据进行交互并获取所请求的数据。替代地,数据服务器103充当网络服务器本身,并且直接连接到因特网。数据服务器103可以通过局域网133、广域网101(例如,因特网),经由直接或间接连接,或经由某个其他网络连接到网络服务器105。用户可以使用远程计算机107、109与数据服务器103交互,例如,使用网络浏览器经由网络服务器105所托管的一个或多个外部公开的网站连接到数据服务器103。客户端计算机107、109可以与数据服务器103协同使用以访问存储在其中的数据,或者可以用于其他目的。例如,用户可以从客户端设备107使用本领域中已知的因特网浏览器,或者通过执行通过计算机网络(诸如因特网)与网络服务器105和/或数据服务器103通信的软件应用程序来访问网络服务器105。
28.服务器和应用程序可以组合在相同的物理机器上,并保留单独的虚拟或逻辑地址,或者可以驻留在单独的物理机器上。图1仅图示了可以使用的网络架构的一个实例,并且本领域技术人员将理解,所使用的具体网络架构和数据处理设备可以有所不同,而且对于它们所提供的功能来说是次要的,如本文进一步描述的。例如,由网络服务器105和数据服务器103提供的服务可以组合在单个服务器上。
29.每个部件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设
备。例如,数据服务器103可以包括控制数据服务器103的整体操作的处理器111。数据服务器103还可以包括随机存取存储器(ram)113、只读存储器(rom)115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。输入/输出(i/o)119可以包括用于读取、写入、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可以存储用于控制数据处理设备103的整体操作的操作系统软件123、用于指示数据服务器103执行本文描述的各方面的控制逻辑125,以及提供可以或不可以结合本文描述的方面使用的辅助、支持和/或其他功能的其他应用程序软件127。控制逻辑125在本文中也可以被称为数据服务器软件125。数据服务器软件125的功能可以指基于编码到控制逻辑125中的规则自动做出的操作或决定、由将输入提供到系统中的用户手动做出的操作或决定,和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。
30.存储器121还可以存储用于执行本文描述的一个或多个方面的数据,包括第一数据库129和第二数据库131。在一些实施例中,第一数据库129可以包括第二数据库131(例如,作为单独的表格、报告等)。即,根据系统设计,信息可以存储在单个数据库中,或分离成不同的逻辑数据库、虚拟数据库或物理数据库。设备105、107和109可以具有与关于设备103所描述的相似或不同的架构。本领域技术人员将理解,本文描述的数据处理设备103(或设备105、107或109)的功能可以跨多个数据处理设备分布,以例如跨多个计算机分布处理负载,从而基于地理位置、用户访问级别、服务质量(qos)等来隔离交易。
31.一个或多个方面可以体现在计算机可用或可读的数据和/或计算机可执行指令中,诸如体现在由一个或多个计算机或本文描述的其他设备执行的一个或多个程序模块中。一般而言,程序模块包括例程、程序、对象、部件、数据结构等,其在由计算机或其他设备中的处理器执行时执行特定任务或实现特定抽象数据类型。模块可以用随后被编译用于执行的源代码编程语言来编写,或者可以用诸如(但不限于)超文本标记语言(html)或可扩展标记语言(xml)的脚本语言来编写。计算机可执行指令可以存储在诸如非易失性存储设备的计算机可读介质上。可以使用任何合适的计算机可读存储介质,包括硬盘、cd

rom、光存储设备、磁存储设备和/或其任何组合。另外,表示本文描述的数据或事件的各种传输(非存储)介质可以以穿过诸如金属线、光纤和/或无线传输介质(例如,空气和/或空间)的信号传导介质传播的电磁波的形式在源和目的地之间传送。本文描述的各个方面可以实现为方法、数据处理系统或计算机程序产品。因此,各种功能可整体或部分地体现在软件、固件和/或硬件或硬件等效物(诸如集成电路、现场可编程门阵列(fpga)等)中。特定数据结构可用于更有效地实现本文描述的一个或多个方面,且此类数据结构预期在本文描述的计算机可执行指令和计算机可用数据的范围内。
32.进一步参考图2,本文描述的一个或多个方面可以在远程访问环境中实现。图2描绘了示例系统架构,其包括可以根据本文描述的一个或多个示例性方面使用的示例性计算环境200中的计算设备201。计算设备201可以用作单服务器或多服务器桌面虚拟化系统(例如,远程存取或云系统)中的服务器206a,并且可经配置以为客户端访问设备提供虚拟机。计算设备201可以具有用于控制设备201及其相关联部件的整体操作的处理器203,包括ram 205、rom 207、输入/输出(i/o)模块209和存储器215。
33.i/o模块209可以包括计算设备201的用户可以通过其提供输入的鼠标、小键盘、触摸屏、扫描仪、光学读取器和/或指示笔(或其他输入设备),并且还可以包括用于提供音频
输出的一个或多个扬声器以及用于提供文本、视听和/或图形输出的一个或多个视频显示设备。软件可以存储在存储器215和/或其他存储设备内以向处理器203提供指令,用于将计算设备201配置成专用计算设备,以便执行本文描述的各种功能。例如,存储器215可以存储由计算设备201使用的软件,诸如操作系统217、应用程序219和相关联的数据库221。
34.计算设备201可以在支持连接到诸如终端240(也称为客户端设备和/或客户端机器)的一台或多台远程计算机的联网环境中操作。终端240可以是包括以上关于计算设备103或201描述的多个或全部元件的个人计算机、移动设备、膝上型计算机、平板计算机或服务器。图2所描绘的网络连接包括局域网(lan)225和广域网(wan)229,但也可以包括其他网络。当在lan联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到lan 225。当在wan联网环境中使用时,计算设备201可以包括调制解调器或其他广域网接口227,用于在诸如计算机网络230(例如,因特网)等的wan 229上建立通信。应当理解,所示的网络连接是示例性的,并且可以使用其他方式在计算机之间建立通信链路。计算设备201和/或终端240还可以是包括诸如电池、扬声器和天线(未示出)等各种其他部件的移动终端(例如,移动电话、智能手机、个人数字助理(pda)、笔记本等)。
35.本文描述的各方面还可以与众多其他通用或专用计算系统环境或配置一起操作。可适用于本文描述的各方面的其他计算系统、环境和/或配置的实例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机(pc)、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。
36.如图2所示,一个或多个客户端设备240可以与一个或多个服务器206a

206n(本文中通常称为“服务器206”)通信。在一个实施例中,计算环境200可以包括安装在服务器206与客户端机器240之间的网络设备。网络设备可以管理客户端/服务器连接,并且在一些情况下可以在多个后端服务器206之间对客户端连接进行负载平衡。
37.在一些实施例中,客户端机器240可以被称为单个客户端机器240或单组客户端机器240,而服务器206可以被称为单个服务器206或单组服务器206。在一个实施例中,单个客户端机器240与多于一个服务器206通信,而在另一实施例中,单个服务器206与多于一个客户端机器240通信。在又一实施例中,单个客户端机器240与单个服务器206通信。
38.在一些实施例中,客户端机器240可以由以下非穷举性术语中的任一个来引用:客户端机器;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;终点;或端点节点。在一些实施例中,服务器206可以由以下非穷举性术语中的任何一个来引用:服务器、本地机器;远程机器;服务器群或主机计算设备。
39.在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由类型1或类型2管理程序管理的任何虚拟机,例如由思杰系统公司(citrix systems)、美国国际商用机器公司(ibm)、威睿(vmware)开发的管理程序或任何其他管理程序。在一些方面中,虚拟机可以由管理程序管理,而在其他方面中,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。
40.一些实施例包括客户端设备240,其显示由在服务器206或其他远程定位的机器上远程执行的应用程序生成的应用程序输出。在这些实施例中,客户端设备240可以执行虚拟机接收器程序或应用程序以在应用程序窗口、浏览器或其他输出窗口中显示输出。在一个
实例中,应用程序是桌面,而在其他实例中,应用程序是生成或呈现桌面的应用程序。桌面可以包括为其中可集成本地和/或远程应用程序的操作系统的实例提供用户界面的图形外壳。本文中使用的应用程序是在操作系统(以及可选地,还有桌面)的实例已经被加载之后执行的程序。
41.在一些实施例中,服务器206使用远程呈现协议或其他程序来将数据发送到在客户端上执行的瘦客户端或远程显示应用程序,以呈现由在服务器206上执行的应用程序生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举性协议列表中的任何一个:佛罗里达州劳德代尔堡的思杰系统公司(citrix systems,inc.)开发的独立计算架构(ica)协议;或由华盛顿州雷德蒙市的微软公司(microsoft corporation)制造的远程桌面协议(rdp)。
42.远程计算环境可以包括多于一个服务器206a

206n,使得服务器206a

206n例如在云计算环境中在逻辑上一起分组到服务器群206中。服务器群206可以包括地理上分散但在逻辑上分组在一起的服务器206,或在逻辑上分组在一起时彼此邻近定位的服务器206。在一些实施例中,服务器群206内的地理上分散的服务器206a

206n可以使用wan(广域)、man(城域)或lan(局域)进行通信,其中不同地理区域可以被表征为:不同的大陆;大陆的不同区域;不同的国家;不同的州;不同的城市;不同的校园;不同的房间;或上述地理位置的任何组合。在一些实施例中,服务器群206可以作为单个实体来管理,而在其他实施例中,服务器群206可以包括多个服务器群。
43.在一些实施例中,服务器群可以包括执行基本上类似类型的操作系统平台(例如,windows、unix、linux、ios、android、symbian等)的服务器206。在其他实施例中,服务器群206可以包括执行第一类型操作系统平台的一个或多个服务器的第一组,以及执行第二类型操作系统平台的一个或多个服务器的第二组。
44.服务器206可以根据需要被配置为任何类型的服务器,例如文件服务器、应用程序服务器、网络服务器、代理服务器、电器、网络电器、网关、应用程序网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(ssl)vpn服务器、防火墙、网络服务器、应用程序服务器,或者经配置为主应用程序服务器、执行活动目录的服务器或执行提供防火墙功能、应用程序功能或负载平衡功能的应用程序加速程序的服务器。也可以使用其他服务器类型。
45.一些实施例包括第一服务器206a,其接收来自客户端机器240的请求、将该请求转发到第二服务器206b(未示出),并用来自第二服务器206b(未示出)的响应来响应由客户端机器240生成的请求。第一服务器206a可以获取可用于客户端机器240的应用程序的枚举以及与托管应用程序的枚举内识别的应用程序的应用程序服务器206相关联的地址信息。然后,第一服务器206a可以使用网络接口呈现对客户请求的响应,并且直接与客户端240通信以向客户端240提供对识别的应用程序的访问。一个或多个客户端240和/或一个或多个服务器206可以通过网络230(例如,网络101)传输数据。
46.图3示出了示例性桌面虚拟化系统的高级架构。如图所示,桌面虚拟化系统可以是单服务器或多服务器系统,或者云系统,其包括经配置以向一个或多个客户端访问设备240提供虚拟桌面和/或虚拟应用程序的至少一个虚拟化服务器301。如本文中使用的,桌面是指其中可以托管和/或执行一个或多个应用程序的图形环境或空间。桌面可以包括为其中可集成本地和/或远程应用程序的操作系统的实例提供用户界面的图形外壳。应用程序可
以包括在操作系统(并且可选地,还有桌面)的实例被加载之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的os的多个实例)。每个应用程序可以在本地设备上执行,也可以在位于远程的设备(例如,远程的)上执行。
47.计算机设备301可经配置为虚拟化环境(例如,单服务器、多服务器或云计算环境)中的虚拟化服务器。图3所示的虚拟化服务器301可以部署为和/或由图2所示的服务器206的一个或多个实施例或由其他已知计算设备实现。在虚拟化服务器301中包括硬件层,其可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。在一些实施例中,固件312可以存储在物理存储器316中的存储器元件内,并且可以由物理处理器308中的一个或多个执行。虚拟化服务器301还可以包括操作系统314,其可以存储在物理存储器316中的存储器元件中,并且由物理处理器308中的一个或多个执行。此外,管理程序302可以存储在物理存储器316中的存储元件中,并且可以由物理处理器308中的一个或多个执行。
48.在物理处理器308中的一个或多个上执行的可以是一个或多个虚拟机332a

c(统称为332)。每个虚拟机332可以具有虚拟磁盘326a

c和虚拟处理器328a

c。在一些实施例中,第一虚拟机332a可以使用虚拟处理器328a来执行包括工具栈324的控制程序320。控制程序320可以被称为控制虚拟机、dom0、domain 0或用于系统管理和/或控制的其他虚拟机。在一些实施例中,一个或多个虚拟机332b

c可以使用虚拟处理器328b

c来执行客户操作系统330a

b(统称为330)。
49.虚拟化服务器301可以包括具有与虚拟化服务器301通信的一个或多个硬件的硬件层310。在一些实施例中,硬件层310可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。物理部件304、306、308和316可以包括例如上述部件中的任一个。物理设备306可以包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载平衡器、虚拟专用网络(vpn)网关、动态主机配置协议(dhcp)路由器等),或连接到虚拟化服务器301或与其通信的任何设备。硬件层310中的物理存储器316可以包括任何类型的存储器。物理存储器316可以存储数据,并且在一些实施例中可以存储一个或多个程序或一组可执行指令。图3图示了其中固件312存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316中的程序或可执行指令可以由虚拟化服务器301的一个或多个处理器308执行。
50.虚拟化服务器301还可以包括管理程序302。在一些实施例中,管理程序302可以是由虚拟化服务器301上的处理器308执行以创建和管理任何数量的虚拟机332的程序。管理程序302可以被称为虚拟机监视器或平台虚拟化软件。在一些实施例中,管理程序302可以是监测在计算机器上执行的虚拟机的可执行指令和硬件的任何组合。管理程序302可以是类型2管理程序,其中管理程序在虚拟化服务器301上执行的操作系统314内执行。然后,虚拟机可以在高于管理程序302的级别上执行。在一些实施例中,类型2管理程序可以在用户的操作系统的上下文中执行,使得类型2管理程序与用户的操作系统交互。在其他实施例中,虚拟化环境中的一个或多个虚拟化服务器301可以替代地包括类型1管理程序(未示出)。类型1管理程序可以通过直接访问硬件层310内的硬件和资源而在虚拟化服务器301上
执行。即,当类型2管理程序302通过主机操作系统314访问系统资源时,如图所示,类型1管理程序可以直接访问所有系统资源而无需主机操作系统314。类型1管理程序可以直接在虚拟化服务器301的一个或多个物理处理器308上执行,并且可以包括存储在物理存储器316中的程序数据。
51.在一些实施例中,管理程序302可以以模拟具有对系统资源的直接访问的操作系统330或控制程序320的任何方式向在虚拟机332上执行的操作系统330或控制程序320提供虚拟资源。系统资源可以包括但不限于物理设备306、物理磁盘304、物理处理器308、物理存储器316以及包括在虚拟化服务器301的硬件层310中的任何其他部件。管理程序302可用于仿真虚拟硬件、分区物理硬件、虚拟化物理硬件和/或执行提供对计算环境的访问的虚拟机。在又一些实施例中,管理程序302可以控制在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分区。管理程序302可以包括由加利福尼亚州帕洛阿尔托市的威睿公司(vmware,inc.)制造的管理程序;xenproject管理程序,其是由开源xenproject.org社区监督开发的开源产品;由微软提供的hyperv、virtualserver或虚拟pc管理程序,或其他管理程序。在一些实施例中,虚拟化服务器301可以执行管理程序302,该管理程序创建可以在其上执行客户操作系统的虚拟机平台。在这些实施例中,虚拟化服务器301可以被称为主机服务器。这种虚拟化服务器的一个实例是由佛罗里达州劳德代尔堡的思杰系统公司提供的思杰管理程序。
52.管理程序302可以创建客户操作系统330在其中执行的一个或多个虚拟机332b

c(统称为332)。在一些实施例中,管理程序302可以加载虚拟机图像以创建虚拟机332。在其他实施例中,管理程序302可以执行虚拟机332内的客户操作系统330。在又一些实施例中,虚拟机332可以执行客户操作系统330。
53.除了创建虚拟机332之外,管理程序302还可以控制至少一个虚拟机332的执行。在其他实施例中,管理程序302可以呈现具有由虚拟化服务器301提供的至少一个硬件资源(例如,硬件层310内可用的任何硬件资源)的抽象的至少一个虚拟机332。在其他实施例中,管理程序302可以控制虚拟机332访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可以包括确定虚拟机332是否应当访问处理器308,以及物理处理器能力如何呈现给虚拟机332。
54.如图3所示,虚拟化服务器301可以托管或执行一个或多个虚拟机332。虚拟机332是一组可执行指令,其在由处理器308执行时可以模仿物理计算机的操作,使得虚拟机332可以像物理计算设备一样执行程序和过程。虽然图3图示了其中虚拟化服务器301托管三个虚拟机332的实施例,但是在其他实施例中,虚拟化服务器301可以托管任何数量的虚拟机332。在一些实施例中,管理程序302可以向每个虚拟机332提供该虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的唯一虚拟视图。在一些实施例中,唯一虚拟视图可以基于以下中的一项或多项:虚拟机权限、策略引擎对一个或多个虚拟机标识符的应用、访问虚拟机的用户、在虚拟机上执行的应用程序、虚拟机访问的网络或任何其他所需标准。例如,管理程序302可以创建一个或多个不安全虚拟机332和一个或多个安全虚拟机332。可以防止不安全虚拟机332访问可以允许安全虚拟机332访问的资源、硬件、存储器位置和程序。在其他实施例中,管理程序302可以向每个虚拟机332提供虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的基本相似的虚拟视图。
55.每个虚拟机332可以包括虚拟磁盘326a

c(统称为326)和虚拟处理器328a

c(统称为328)。在一些实施例中,虚拟磁盘326是虚拟化服务器301的一个或多个物理磁盘304或虚拟化服务器301的一个或多个物理磁盘304的一部分的虚拟化视图。物理磁盘304的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,管理程序302向每个虚拟机332提供物理磁盘304的唯一视图。因此,在这些实施例中,当与其他虚拟磁盘326相比时,每个虚拟机332中包括的特定虚拟磁盘326可以是唯一的。
56.虚拟处理器328可以是虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的基本上所有相同的特性。在其他实施例中,虚拟处理器308提供物理处理器308的修改视图,使得虚拟处理器328的特性中的至少一些不同于对应的物理处理器308的特性。
57.进一步参考图4,本文描述的一些方面可以在基于云的环境中实现。图4图示了云计算环境(或云系统)400的实例。如图4所示,客户端计算机411

414可以与云管理服务器410通信以访问云系统的计算资源(例如,主机服务器403a

403b(本文中统称为“主机服务器403”)、存储资源404a

404b(本文中统称为“存储资源404”)和网络元件405a

405b(本文中统称为“网络资源405”))。
58.管理服务器410可以在一个或多个物理服务器上实现。管理服务器410可以运行例如由佛罗里达州劳德代尔堡的思杰系统公司(citrix systems,inc.)提供的citrix workspace或openstack等。管理服务器410可以管理各种计算资源,包括云硬件和软件资源,例如,主机计算机403、数据存储设备404和联网设备405。云硬件和软件资源可以包括私有部件和/或公共部件。例如,云可经配置为由一个或多个特定客户或客户端计算机411

414和/或通过专用网络使用的私有云。在其他实施例中,公共云或混合公共

私有云可以由其他客户在开放或混合网络上使用。
59.管理服务器410可经配置以提供用户界面,云运营商和云客户可以通过该用户界面与云系统400交互。例如,管理服务器410可以将用户界面提供到一组应用程序编程接口(api)和/或一个或多个云运营商控制台应用程序(例如,基于网络的或独立的应用程序),以允许云运营商管理云资源、配置虚拟化层、管理客户账户,以及执行其他云管理任务。管理服务器410还可以包括一组api和/或一个或多个客户控制台应用程序,其用户界面经配置以经由客户端计算机411

414接收来自最终用户的云计算请求,例如,创建、修改或销毁云内虚拟机的请求。客户端计算机411

414可以经由因特网或一些其他通信网络连接到管理服务器410,并且可以请求访问由管理服务器410管理的计算资源中的一个或多个。响应于客户端请求,管理服务器410可以包括资源管理器,其经配置以基于客户端请求选择和提供云系统的硬件层中的物理资源。例如,管理服务器410和云系统的附加部件可经配置以通过网络(例如,因特网)为客户端计算机411

414处的客户提供、创建和管理虚拟机及其操作环境(例如,管理程序、存储资源、由网络元件提供的服务等),为客户提供计算资源、数据存储服务、联网能力以及计算机平台和应用程序支持。云系统还可经配置以提供各种特定服务,包括安全系统、开发环境、用户界面等。
60.例如,某些客户端411

414可以与代表同一最终用户或隶属于同一公司或组织的不同用户创建虚拟机的不同客户端计算机相关。在其他实例中,某些客户端411

414可以是
不相关的,诸如隶属于不同公司或组织的用户。对于不相关的客户端,任何一个用户的虚拟机或存储的信息可能对其他用户隐藏。
61.现在参考云计算环境的物理硬件层,可用性区域401

402(或多个区域)可以指一组并置的物理计算资源。区域可以在地理上与计算资源的整个云中的其他区域分离。例如,区域401可以是位于加利福尼亚州的第一云数据中心,而区域402可以是位于佛罗里达州的第二云数据中心。管理服务器410可以位于可用性区域之一,或者位于单独的位置。每个区域可以包括通过网关与区域外的设备(诸如管理服务器410)接口的内部网络。云的最终用户(例如,客户端411

414)可能知道,也可能不知道区域之间的区别。例如,最终用户可以请求创建具有指定量的存储器、处理能力和网络能力的虚拟机。管理服务器410可以响应于用户的请求,并且可以分配资源以创建虚拟机,而无需用户知道虚拟机是使用来自区域401还是区域402的资源创建的。在其他实例中,云系统可以允许最终用户请求在特定区域中或在区域内的特定资源403

405上分配虚拟机(或其他云资源)。
62.在该实例中,每个区域401

402可以包括各种物理硬件部件(或计算资源)403

405的布置,例如,物理托管资源(或处理资源)、物理网络资源、物理存储资源、交换机以及可用于向客户提供云计算服务的附加硬件资源。云区域401

402中的物理托管资源可以包括一个或多个计算机服务器403,诸如以上描述的虚拟化服务器301,其可经配置以创建和托管虚拟机实例。云区域401或402中的物理网络资源可以包括一个或多个网络元件405(例如,网络服务提供商),其包括经配置以向云客户提供网络服务的硬件和/或软件,诸如防火墙、网络地址转换器、负载平衡器、虚拟专用网络(vpn)网关、动态主机配置协议(dhcp)路由器等。云区域401

402中的存储资源可以包括存储盘(例如,固态驱动器(ssd)、磁硬盘等)和其他存储设备。
63.图4所示的示例云计算环境还可以包括具有附加硬件和/或软件资源的虚拟化层(例如,如图1至图3所示),其经配置以创建和管理虚拟机并使用云中的物理资源向客户提供其他服务。虚拟化层可以包括如以上在图3中描述的管理程序,以及提供网络虚拟化、存储虚拟化等的其他部件。虚拟化层可以作为与物理资源层分离的层,或者可以与物理资源层共享相同硬件和/或软件资源中的一些或全部。例如,虚拟化层可以包括安装在具有物理计算资源的虚拟化服务器403中的每一个中的管理程序。可以替代地使用已知的云系统,例如,windows azure(华盛顿州雷蒙德市的微软公司(microsoft corporation))、amazon ec2(华盛顿州西雅图市的亚马逊公司(amazon.com inc.))、ibm blue cloud(纽约州阿蒙克市的ibm公司)等。
64.统一通知框架
65.图5描绘示例性统一应用程序通知框架。在一些实施例中,统一应用程序通知环境500可以包括统一应用程序通知框架501,其从虚拟机502收集通知并将全部或部分通知中继到客户端设备503。具体地,通知可以由在虚拟机502上执行的应用程序504发出,并被转发到客户端设备503的工作区,从而可以通知客户端设备503的用户506。虚拟机502可以是例如图3的虚拟机332之一。客户端设备503可以是图1的网络节点103、105、107、109或图2的终端240中的一个。客户端设备503可以具有允许用户506访问虚拟机502、操作系统505和/或应用程序504的工作区环境(也称为工作区或虚拟环境)。贯穿本公开,客户端设备503可以指硬件(例如,诸如台式计算机、移动设备等的物理设备)和/或在硬件上运行的任何软件
(例如,工作区环境)。工作区可以是网络接口、桌面应用程序、移动应用程序等。虽然当客户端设备503在线并连接到虚拟机502(例如,参与远程会话)时,在虚拟机502上运行的应用程序504和/或操作系统505能够直接向客户端设备503发送通知,但是当客户端设备503离线或以其他方式不可用于与应用程序504或操作系统505通信时,这种通知的直接传递对于应用程序504和操作系统505而言是不可用的。在这种情况下,统一应用程序通知框架501可以接收或截取与应用程序504相关联的通知,并实时地或在稍后的时间将这些消息转发到客户端设备503。
66.统一应用程序通知框架501可以是软件和/或硬件部件的集合,其使得客户端设备503即使在客户端设备503没有主动地与应用程序504和/或虚拟机502通信时也能够接收与应用程序504相关联的通知。例如,统一应用程序通知框架501的全部或部分可以在图2的服务器206或客户端机器240上运行。虽然为了简化说明,图5将统一应用程序通知框架501示为从单个虚拟实例接收通知并将通知转发到单个客户端设备503,但是统一应用程序通知框架501可以从多个虚拟机接收通知并将通知转发到多个对应的客户端设备。为了说明清楚,在本公开中假设统一应用程序通知框架501包括在图3的管理程序302中。然而,在一些实施例中,统一应用程序通知框架501的全部或部分可以包括在图3的管理程序302、操作系统314、控制程序320和/或客户操作系统330中。在其他实施例中,统一应用程序通知框架501可以是在逻辑上和/或物理上与客户端机器240、服务器206和虚拟化服务器301分离的实体(例如,服务器)的一部分。例如,统一应用程序通知框架501可以驻留在管理服务器410或其他设备中。
67.统一应用程序通知框架501可以具有至少三个通信信道(也称为通知信道),其通过通信信道从虚拟机502接收通知。这些通信信道可以包括通知api 507、操作系统级通知截取508和服务对服务通知509。这些可以是独立的通知信道,通过其可以检索和收集各种类型的通知。不管使用哪个通信信道或路径来传递,通知都可以经由网络512(例如,因特网)传递到统一应用程序通知框架501。例如,应用程序504可以进行本地通知api调用(即,通知api 507)并通过因特网、无线宽带通信网络、局域网(lan)、广域网(wan)、虚拟网络等发送通知。在一些实施例中,通信信道507、508、509中的一个或多个可能不需要像例如虚拟机502和统一应用程序通知框架501位于同一物理服务器内时那样遍历网络512。
68.统一应用程序通知框架501还可以包括通知过滤和调度模块510,其在将接收到的通知转发到客户端设备503之前进一步处理这些通知。具体地,通知过滤和调度模块510可以根据策略或偏好对消息进行分类和过滤。策略或偏好可以是预定的(例如,由管理员或用户)或动态更新的。例如,过滤策略可以指示可以丢弃任何冗余或重复消息并防止其转发到客户端设备503。例如,可以根据消息历史(例如,阻止某些类型的重复消息)或用户偏好(例如,将源自某一应用程序的所有消息列入白名单)来更新过滤策略。通知过滤和调度模块510还可以决定在比在统一应用程序通知框架501处接收通知的时间晚的某一时间将一个或多个通知转发到客户端设备503。换言之,统一应用程序通知框架501可以根据策略或设置来调度或重新调度向客户端设备503的通知传递。例如,当通知在用户506无法看到通知的时间到达统一应用程序通知框架501时,通知过滤和调度模块510可以在用户506可以看到通知的将来时间调度消息的传递。作为另一实例,当客户端设备503断电、离线或以其他方式不可用于接收通知时(例如,当统一通知框架501未能接收到从客户端设备503返回的
通知接收确认消息时),统一应用程序通知框架501可以将传递重新调度在未来时间进行重试。
69.可以经由通知api 507接收一些通知。通知api通知信道507可以基于统一应用程序通知框架501的本地api,并且因此也可以被称为本地通知api。api是指一组函数、方法、过程、子例程、定义、协议和/或数据,其旨在允许应用程序、操作系统、服务等访问相同或其他应用程序、操作系统、服务等的功能或数据。统一应用程序通知框架501的本地api(也称为专有api)可以是专门为访问统一应用程序通知框架501的功能而编写或设计的api。被设计成利用此本地api(例如,api被集成到应用程序504中)的应用程序504可以进行适当的api调用以发布通知(例如,sendnotif())来将通知消息直接发送到统一应用程序通知框架501。
70.可以经由操作系统级通知截取508接收其他通知。操作系统级通知截取508可以依赖于集成到操作系统505中的通知api来截取从应用程序504发送到操作系统505的任何操作系统级通知。操作系统505可以是虚拟操作系统实例,诸如图3的客户操作系统330。集成到操作系统505中的通知api(也称为os级通知api)可以是由操作系统505提供的api的一部分,其允许在操作系统505上运行的应用程序发起调用并向操作系统505发送通知。例如,日历应用程序可以通知操作系统505日历事件即将发生,或者即时通讯(im)应用程序可以通知操作系统505来自另一用户的传入im请求。在另一实例中,导航应用程序可以通知并请求来自操作系统505的许可以接收全球定位系统(gps)信号。操作系统级通知api的实例包括由华盛顿州雷蒙德市的微软公司制造的windows操作系统中的提示信息/磁贴/徽标通知api,以及linux操作系统中的libnotify库。
71.操作系统级通知可以通过通知拦截层513来拦截。通知拦截层513可以是应用程序、程序、服务、后台进程和/或前台进程,其任务是监测由在操作系统505上运行的应用程序进行的任何os api调用,并拦截或窥视那些api调用以进行进一步处理。处理api调用可以包括创建由应用程序进行的原始api调用的影子通知和/或将原始api调用转发到操作系统505。通知拦截层513可以在应用程序504和操作系统505(例如,os通知api)之间实现到虚拟机502中。替代地,通知拦截层513可以是操作系统505的一部分。在一些其他实施例中,通知拦截层513可以包括在统一应用程序通知框架501中。每当应用程序504调用通知api时,在内容上与原始通知调用相同或基本上相似的影子通知可以由通知拦截层513生成并发送到统一应用程序通知框架501。影子通知可以符合统一应用程序通知框架501的本地通知api(其可以不同于操作系统505的os级通知api),如上文参考本地通知api通知信道507所论述。例如,影子通知可以是原始通知调用的复制副本,或者它可以仅包含原始通知调用中包括的部分信息。通知拦截层513可以为拦截的os级api调用的全部或仅部分创建影子通知。例如,通知拦截层513可以被编程为忽略或过滤掉某些api调用,诸如在特定时间段内的重复或反复调用。其他api调用可以基于其类型、优先级、大小等而被忽略或过滤掉。替代地,通知拦截层513可以拦截来自应用程序504的原始api调用并将原始api调用转发到统一应用程序通知框架501,而不是生成影子通知并将其发送到统一应用程序通知框架501。
72.还可以经由服务对服务通知信道509接收其他通知。服务对服务通知信道509是指用于将通知消息从一个服务(例如后端服务)传递到另一服务(例如统一应用程序通知框架501)的通信信道。服务对服务通知509可以依赖于后端服务511(也称为备份服务)以直接向
统一应用程序通知框架501发送通知。具体地,应用程序通知可以由与应用程序相关联的一个或多个后端服务生成和推送。例如,后端服务511可以是将消息或通知推送到应用程序504(例如,电子邮件客户端)的邮件服务器,然后后者将其自己的通知消息发送到操作系统505。然而,统一应用程序通知框架501可以向后端服务511暴露其接口(例如,服务对服务通知信道509),使得后端服务511可以将通知直接发送到统一应用程序通知框架501。后端服务511可以是向客户端设备503、应用程序504、操作系统505和/或虚拟机502提供服务的服务提供商(例如,第三方服务器)。因此,后端服务511可以由各种硬件和/或软件部件组成,并且可以包括例如向应用程序504提供服务的网络服务器、邮件服务器、应用程序服务器、消息传送服务器、位置服务器、内容提供商、在线流媒体服务、社交媒体服务、金融机构、电信服务、因特网服务提供商(isp)、软件即服务(saas)提供商等。后端服务511可以同时或串行地向应用程序504和统一应用程序通知框架501两者发出单独且可能重复的通知。替代地,虚拟机502可以将由后端服务511发送的任何通知消息转发到统一应用程序通知框架501,而不是后端服务511将通知消息直接发送到统一应用程序通知框架501。服务对服务通知消息可以经由诸如因特网的网络512发送。由于后端服务511不是虚拟机502的一部分,因此即使当虚拟机502离线或其他不可用于通信时,也可以由统一应用程序通知框架501接收来自后端服务511的通知。例如,已经集成了统一应用程序通知框架501的本地api的诸如社交媒体服务的后端服务511可以向统一应用程序通知框架501发送朋友请求通知,即使当虚拟机502离线或停止服务时。在其他实例中,服务对服务通知消息可以是来自电子邮件服务器的新电子邮件警报、来自即时通讯服务器的新即时通讯警报、来自文件传输协议(ftp)服务器的下载完成消息、来自在线零售商的交易警报等。统一应用程序通知框架501然后可以将朋友请求通知转发到客户端设备503。统一应用程序通知框架501还可以支持通知多播,使得应用程序可以容易地向所有或一组用户发送通知。例如,通过服务对服务通知信道509的通知消息可以通过后端服务511为应用程序504提供的api发送到多个用户。
73.三个通信信道(即,通知api 507、操作系统级通知拦截508和服务对服务通知509)可以单独或同时采用。尽管本文所示的三个通信信道可以在逻辑上彼此不同,但是这些通信信道中的两个或更多个可以在物理上组合成一个通信信道。例如,通知api调用507和os级拦截508可以在虚拟机502和统一应用程序通知框架501之间共享相同的物理通信信道。通知api 507和服务对服务通知509通信信道可以要求第三方(例如,应用程序开发者、后端服务提供商等)集成特定代码或指令(例如,用于统一应用程序通知框架501的本地api),而操作系统级通知拦截508可以不提出此类要求。另外,通知api 507和操作系统级通知拦截508通信信道可以要求应用程序504正在运行(例如,在后台),而服务对服务通知509通信信道即使在应用程序504和/或虚拟机502关闭时也可以操作,因为服务对服务通知509源自通常独立于虚拟机502操作的后端服务511。例如,当诸如电子邮件服务器等后端服务511接收到用户506的新电子邮件时,电子邮件服务器可以通过服务对服务通知信道509将新电子邮件警报消息直接发送到统一应用程序通知框架501,并最终发送到客户端设备503,即使虚拟机502离线或不可操作。此外,当经由服务对服务通知信道509从后端服务511接收到与应用程序504相关联的通知但应用程序504当前未在虚拟机502上运行时,统一应用程序通知框架501可以使应用程序504在虚拟机502上运行(例如,向虚拟机502发送消息或命令以启动应用程序504)(例如,作为后台进程运行),以便加速用户访问。例如,当用户506在客户端
设备503处经由统一应用程序通知框架501(即,服务对服务通知509)从后端服务511接收到新的电子邮件警报消息时,统一应用程序通知框架501可以抢先地启动虚拟机502内的应用程序504,使得当用户506经由客户端设备503中的工作区访问虚拟机504时,应用程序504将已经在虚拟机502中启动并运行,并且准备好显示新的电子邮件,而不是用户506必须手动地启动应用程序504。类似地,响应于通知统一应用程序通知框架501经由服务对服务通知信道509从后端服务511接收到与应用程序504相关联的通知,如果操作系统505和/或虚拟机502尚未运行,则统一应用程序通知框架501还可以使它们运行。具体地,统一应用程序通知框架501可以首先确定操作系统505和/或虚拟机502当前是否可操作(例如,运行、在线、接通电源等),并且如果不是,则使操作系统505和/或虚拟机502可操作。这可以通过向虚拟机502或与虚拟机502相关联的管理程序传输触发操作系统505和/或虚拟机502的启动的特定消息或命令(例如,数据分组)来实现。此类消息或命令可以经由上述三个通信信道之一或经由与上述通信信道分离的通信信道发送。
74.图6描绘了根据本文描述的一个或多个方面的用于客户端设备接收通知的示例性用户界面(ui)。客户端设备可以是例如图5的客户端设备503。客户端设备的用户可以访问诸如客户端设备上的工作区环境600(也称为客户端工作区或虚拟环境)等用户界面,以访问一个或多个虚拟机,诸如图5的虚拟机502。客户端工作区可以是用户可以通过其与虚拟应用程序交互的前端。工作区环境600可以是例如在网络浏览器中呈现的网络界面、在移动设备上运行的移动应用程序、在pc上运行的桌面应用程序、集成到客户端设备的操作系统(例如,集成到windows文件资源管理器或macos finder)的模块。工作区环境600可以是与服务器通信的独立应用程序或客户端应用程序的一部分。具体地,工作区环境600可以由服务器(诸如图4的管理服务器410)提供给客户端设备。
75.客户端设备的用户可以与工作区环境600交互以访问远程桌面(例如,操作系统505)、虚拟应用程序(例如,应用程序504)等。在图6所示的示例实施例中,工作区环境600可以允许用户(例如,“约翰
·
史密斯”)登录并访问表示虚拟桌面环境601a、601b、601c(统称为601)的ui元素(例如,图标)之一。例如,虚拟桌面601a可以是windows 10操作系统的虚拟实例,虚拟桌面601b可以是macos操作系统的虚拟实例,而虚拟桌面601c可以是linux操作系统的虚拟实例。因此,当用户选择例如工作区环境600上的虚拟桌面601a时,可以在客户端设备上启动并显示在远程定位的计算设备上运行的windows 10操作系统的虚拟实例的远程桌面图形用户界面(gui)。
76.另外,工作区环境600还可以包括表示虚拟应用程序602a、602b(统称为602)的ui元素(例如,图标)。例如,虚拟应用程序602a可以是在由远程定位的计算设备(例如,服务器206)提供的虚拟机(例如,虚拟机502)上运行的电子邮件应用程序。在其他实例中,虚拟应用程序602b可以是日历应用程序。虚拟应用程序602a和虚拟应用程序602b可以在相同或单独的虚拟机上运行。因此,当用户选择例如工作区环境600上的虚拟应用程序602a时,客户端设备可以显示由在远程定位的计算设备(例如服务器206)上执行的电子邮件应用程序的对应虚拟实例生成的输出。
77.工作区环境600可以从统一应用程序通知框架(诸如图1的统一应用程序通知框架501)接收通知。通知可能源自应用程序、操作系统实例或后端服务,这取决于上面列举的三个通信信道中的哪一个用于通知传递。一旦工作区环境600接收到通知,工作区环境600可
以向用户呈现通知。例如,通知可以可视地显示(例如,文本、图标、弹出窗口、对话框、状态栏、提示信息、磁贴、徽标、警报、计数器等)或可听地播放(例如,闹钟、铃声、音频警报等)。在图6所示的示例实施例中,通知呈现为徽标603a、603b、603c、603d(统称为603)和状态栏604。
78.徽标603a、603b、603c、603d可以各自指示已从相应的虚拟桌面和虚拟应用程序接收但未被清除的通知的数目。因此,例如,徽标603a可以指示当前存在来自虚拟桌面601a的两个未决通知。这些通知可能源自虚拟桌面601a(即,操作系统的虚拟实例)本身或源自在虚拟桌面601a上运行的应用程序中的任何一个。在另一实例中,徽标603b可以指示当前存在来自虚拟应用程序602a的29个未决(即,未清除)通知。具体地,这些通知可以表示29个新的未读电子邮件消息。此外,与虚拟桌面601b相关联的通知徽标的缺失可以指示没有接收到与虚拟桌面601b相关联的通知或者其所有通知已被清除。最后,工作区环境600可以诸如通过状态栏604显示全局通知消息。
79.尽管在图6所示的示例实施例中使用了徽标603,但是也可以使用其他方法来指示关于虚拟桌面环境601和/或虚拟应用程序602的通知的存在或缺失。例如,表示虚拟桌面环境601和/或虚拟应用程序602的图标可以高亮显示、着色、阴影、动画、放大、缩小等,以指示未决(即,未清除)通知的存在或缺失。根据通知的数目和/或通知的优先级,可以以不同的方式可视地改变图标。例如,具有正常优先级通知的图标可以显示为绿色徽标,而具有高优先级通知的另一图标可以显示为红色徽标。徽标603可以位于图标的顶部、底部、左侧、右侧等或图标上方。另外,可以基于通知自动地重新排列图标。例如,具有最高通知计数的图标可以放在用户最容易注意到的位置,如第一页的左上角位置,其余图标可以按降序排列。在一些示例实施例中,当用户选择带有通知的图标时,可以在屏幕上显示通知消息的内容。在一些示例实施例中,当鼠标指针悬停在具有通知的图标上或在图标上接收到长触摸输入(即,触摸并保持)时,可以显示通知消息(例如,部分消息)的预览。
80.在公开了一些基本系统部件和概念之后,本公开现在转向图7和图8中所示的示例方法实施例。为了清楚起见,根据如图5所示的经配置以实践方法的统一应用程序通知环境500来描述这些方法。然而,上面讨论的任何其他设备或系统,诸如计算环境200、虚拟化服务器301、云计算环境400等,也可以执行本文公开的任何步骤。本文概述的步骤是示例性的,并且可以以其任何组合来实现,包括排除、添加或修改某些步骤的组合。例如,可以以任何顺序执行图7的操作701、702、703,或者可以同时执行操作701、702、703中的两个或更多个。
81.图7描绘了用于提供统一应用程序通知框架的示例性方法。图7的示例方法可以由诸如统一应用程序通知框架501等统一应用程序通知框架来执行。首先,统一应用程序通知框架可以检查是否存在经由可用的通信信道之一接收的任何通知。可以同步或异步地执行对通知的检查和接收。统一应用程序通知框架可以周期性地(例如,每1秒、10秒、1分钟、5分钟、1小时等)轮询以查看是否存在未决通知,或者可以将通知推送到统一应用程序通知框架。
82.统一应用程序通知框架可以确定是否存在要经由通知api信道接收的通知(701)。如果有一个或多个通知要接收,则该方法进行到操作704。如果否,则统一应用程序通知框架可以确定是否存在要经由操作系统级拦截信道接收的通知(702)。如果有一个或多个通
知要接收,则该方法进行到操作704。如果否,则统一应用程序通知框架可以确定是否存在要经由服务对服务通知信道接收的通知(703)。如果有一个或多个通知要接收,则该方法返回到操作701,并且统一应用程序通知框架继续监测未决通知。
83.在操作704处,统一应用程序通知框架可以经由多个通信信道之一接收与虚拟应用程序相关联的通知。多个通信信道可以包括本地通知api信道、操作系统级通知拦截信道和/或服务对服务通知信道。
84.对于经由本地通知api信道接收通知的统一应用程序通知框架,虚拟应用程序可能需要请求api调用。例如,当应用程序遇到特定事件(例如,接收到新电子邮件、接收到新即时消息、下载完成、严重错误等)时,应用程序可以根据统一应用程序通知框架提供的api进行调用(例如,sendnotif())。然后,可以根据api将适当的通知消息(例如,数据分组)从应用程序传输到统一应用程序通知框架。通知消息可以经由诸如因特网的网络传输。
85.当经由操作系统级通知拦截信道接收到通知时,从虚拟应用程序正在其上执行的虚拟操作系统接收通知。该通知可以基于由虚拟应用程序发送到虚拟操作系统的虚拟通知生成。虚拟通知是指由虚拟应用程序向虚拟操作系统生成的操作系统级通知消息(例如,windows提示信息/磁贴/徽标api、linux libnotify库)。通知(例如,影子通知)可以在拦截虚拟通知之后由通知拦截层(例如,在虚拟操作系统和/或虚拟机上执行的应用程序、服务和/或进程)生成。
86.当经由服务对服务通知信道接收到通知时,可以从服务于虚拟应用程序的后端服务(例如,诸如网络服务器、电子邮件服务器、内容服务器等的第三方服务器)接收通知。
87.统一应用程序通知框架可以确定接收到的通知的标识符(id)。标识符可以指示与通知和/或后端服务相关联的虚拟应用程序。例如,标识符可以是在某个命名空间内唯一标识应用程序的字母数字字符串。标识符可以由发送者(例如,应用程序、通知拦截层、后端服务等)插入到通知中,并由统一应用程序通知框架提取。统一应用程序通知框架可以将接收到的标识符存储在存储标识符与应用程序之间的关联的数据库中。该数据库稍后可用于例如标识源自同一应用程序的重复通知。
88.统一应用程序通知框架可以过滤接收到的通知(705)。换言之,可以对接收到的通知进行分类,并且可以滤除不满足某些条件或阈值的通知。例如,在经由多个通信信道之一接收到与虚拟应用程序相关联的通知之后,统一应用程序通知框架可以确定该通知是否满足过滤标准。过滤标准可以包括通知类型(例如,提示信息、徽标、弹出窗口等等)、通信信道类型(例如,通知api、操作系统级拦截、服务对服务通知等)、应用程序类型(例如,电子邮件客户端、即时通讯工具、日历应用程序等)、时间(例如,时间或接收)、优先级(例如,高优先级、正常优先级、低优先级等等)和/或重复(例如,是否最近已经接收到重复的或类似的通知)。如果通知不满足过滤标准,则可以丢弃该通知,并且因此不将其发送到客户端工作区。可以基于接收到的通知中包括的标识符执行过滤过程。
89.统一应用程序通知框架然后可以将接收到的通知发送到客户端工作区(706)。客户端工作区可以是网络客户端、应用程序、服务和/或操作系统。统一应用程序通知框架还可以发送其他相关信息,诸如对应于虚拟应用程序的应用程序标识符(id)、通知类型(例如,提示信息、徽标、弹出窗口等等)、时间戳、通知优先级信息等。可以基于接收通知的通信信道类型确定要发送的附加信息。除立即向客户工作区发送通知之外,统一应用程序通知
框架可以安排在特定时间(例如,在星期一上午6:00、12小时后等)将通知发送到客户端工作区。一旦在客户端工作区接收到通知,工作区就可以显示通知(707)。例如,通知可以显示为文本、弹出窗口、对话框、状态栏更新、徽标、提示信息、图标、磁贴、警报、计数器等。通知可以部分显示(例如,作为概要)或全部显示。
90.如果经由服务对服务通知信道接收到通知(708),则统一应用程序通知框架可以启动虚拟应用程序(709)。换言之,统一应用程序通知框架可以使虚拟应用程序在其尚未运行时作为前台或后台进程执行,以便加速用户对应用程序的访问。统一应用程序通知框架可以首先确定虚拟应用程序是否已在虚拟机上执行,并仅在虚拟应用程序未执行时使虚拟应用程序启动。另外,在接收到服务对服务通知消息时,统一应用程序通知框架可以触发虚拟机、操作系统和/或应用程序的其他适当动作,诸如下载文件、终止应用程序、启动相关应用程序等。例如,如果桌面应用程序的新更新可以从文件服务器获得,则服务器可以经由统一应用程序通知框架向客户端设备发送服务对服务通知。此时,统一应用程序框架还可以使桌面应用程序在虚拟机上启动,使得即使在用户对通知作出反应之前也可以下载和/或安装应用程序的更新。如果未经由服务对服务通知信道接收到通知,则方法进行到操作710。
91.统一应用程序通知框架可以确定客户端工作区是否已响应于所发送的通知而发送了接收确认(710)。如果向客户端工作区发送通知失败(例如,在阈值时限内未接收到接收确认),则可以保存该通知(例如,在统一应用程序通知框架处)并且可以应用重试机制。例如,通知可以立即重新发送(706),或者可以安排在稍后的时间重新发送到客户端工作区。然而,如果在阈值时限内从客户端工作区接收到接收确认,则统一应用程序通知框架可以将该通知标记为已清除,并且还从统一应用程序通知框架中删除该通知。只有在客户端工作区的用户已经确认通知之后,才可以将通知标记为已清除和删除。
92.图8描绘了用于由客户端工作区接收通知的示例性方法。图8的示例方法可以由诸如客户端设备503的客户端工作区执行。客户端工作区可以从诸如图5的统一应用程序通知框架501等统一应用程序通知框架接收通知(801)。客户端工作区可以将接收确认发送回统一应用程序通知框架。客户端工作区可以提取包括在通知中的应用程序id(802)以确认应用程序id是否匹配与客户端工作区相关联的应用程序之一。如果应用程序id不匹配,则客户端工作区可能会放弃通知,而不进行进一步处理。因此,该方法可以返回到操作801以监测任何其他通知。
93.如果发现与应用程序id匹配,则客户端工作区可以向用户呈现通知(803)。例如,客户端工作区可以显示通知消息和/或播放如上所述的警报声音。可选地,通知消息可以由统一应用程序通知框架加密并由客户端工作区解密以提高安全性。具体地,可以经由对称或非对称密码术来执行加密/解密。例如,统一应用程序可以在传输之前用客户端的公钥对通知消息进行加密,并且客户端可以用其私钥对接收到的通知消息进行解密。在操作804处,客户端工作区然后可以确定通知是否已被用户确认(例如,在阈值时限内)。用户可以通过例如点击所显示的通知消息和/或访问与通知相关联的虚拟应用程序来解除所显示的通知消息来确认该通知。替代地,可以在没有用户干预的情况下自动确认通知。如果用户未确认通知,则客户端工作区可以继续等待其确认。然而,一旦成功地确认了通知,就可以从客户端工作区清除通知(805)。客户端工作区可以通过调用虚拟操作系统的操作系统通知
api、调用统一应用程序通知框架的本地通知api和/或通知后端服务来清除通知,后端服务随后将调用本地通知api。统一应用程序通知框架然后可以将通知标记为已清除。一旦清除了消息,统一应用程序通知框架将不再尝试将消息传递或重新传递到客户端工作区。
94.尽管已经以特定于结构特征和/或方法动作的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不一定限于上述特定特征或动作。相反,以上描述的具体特征和动作是作为以下权利要求的示例实现来描述的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1