CN110998528A - 自动基于工作流的装置切换 - Google Patents

自动基于工作流的装置切换 Download PDF

Info

Publication number
CN110998528A
CN110998528A CN201880051033.5A CN201880051033A CN110998528A CN 110998528 A CN110998528 A CN 110998528A CN 201880051033 A CN201880051033 A CN 201880051033A CN 110998528 A CN110998528 A CN 110998528A
Authority
CN
China
Prior art keywords
task
user
server
application
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201880051033.5A
Other languages
English (en)
Inventor
西蒙·弗罗斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN110998528A publication Critical patent/CN110998528A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明描述了用于以下操作的方法和系统:接收在第一装置上运行的应用程序准备好执行任务的指示;确定与执行所述任务相关联的装置能力;确定与所述第一装置的用户相关联的一个或多个装置,其中所述一个或多个装置中的每一个与所述装置能力相关联;基于所述任务和与所述用户相关联的一个或多个用户偏好从所述一个或多个装置选择第二装置;以及将指令发送到所述第二装置,其中所述指令使所述第二装置执行所述任务。

Description

自动基于工作流的装置切换
相关申请的交叉引用
本申请要求2017年6月21日提交且标题为“自动基于工作流的装置切换(AUTOMATIC WORKFLOW-BASED DEVICE SWITCHING)”的第15/629,118号美国专利申请案的权益和优先权,所述美国专利申请案以全文引用的方式并入本文中。
技术领域
本文所描述的方面大体上涉及一起交互以执行一个或多个任务的多个计算装置。
背景技术
用户通常拥有或能够访问大量装置,例如智能电话、平板计算机、计算机、电视机和其它电子装置。用户通常经由大量装置与媒体和其它内容进行交互并消费它们。一些装置比其它装置更能够与某些类型的媒体和其它内容进行交互和/或消费它们。
发明内容
下文提供了本文所述各个方面的简化概述。此概述并非广泛综述,且并不打算识别关键或重要要素或划定权利要求书的范围。以下概述仅按简化形式提出一些概念,作为对以下提供的更详细描述的介绍性序言。
为了克服上文描述的现有技术中的限制,且为了克服在阅读和理解本说明书之后将显而易见的其它限制,本文所描述的方面是针对用于自动选择装置以执行用户工作流的不同任务的系统和方法。
如本文中所描述的一个或多个系统可以执行一种方法,所述方法包含:接收在第一装置上运行的应用程序准备好执行任务的指示;确定与执行所述任务相关联的装置能力;确定与所述第一装置的用户相关联的一个或多个装置,其中所述一个或多个装置中的每一个与所述装置能力相关联;基于所述任务和与所述用户相关联的一个或多个用户偏好从所述一个或多个装置选择第二装置;以及将指令发送到所述第二装置,其中所述指令使所述第二装置执行所述任务。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含方法,其中所述装置能力是显示大小、输入装置的类型、输出装置的类型和网络连接的类型中的一个或多个。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含从第二装置接收与第二装置相关联的一个或多个装置能力,且将第二装置和所述一个或多个装置能力添加到与用户相关联的简档。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含在从第二装置接收所述一个或多个装置能力之前,且响应于确定用户在第二装置附近,向第二装置传输针对与第二装置相关联的所述一个或多个能力的请求。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含接收通过在第二装置上执行任务而生成的数据,且将数据传输到第一装置。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含向第一装置传输使第一装置显示所述数据的指令。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含向第一装置发送使第一装置在第二装置执行任务的同时暂停在第一装置上运行的应用程序的执行的指令,且响应于第二装置完成任务,发送使第一装置恢复在第一装置上运行的应用程序的执行的指令。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含方法,其中所述指令还使第一装置在所述暂停期间显示指示第二装置在执行任务的消息。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含方法,其中在第一装置上运行的应用程序准备好执行任务的指示包括所述应用程序尝试访问与装置能力相关联的虚拟装置的指示。
由如本文中所描述的所述一个或多个系统执行的方法还可以包含方法,其中在第一装置上运行的应用程序是网络浏览器,且在第一装置上运行的应用程序准备好执行任务的指示包括所述网络浏览器接收到对链接的选择的指示。
这些和另外的方面将通过下文进一步详细讨论的公开内容的益处来了解。
附图说明
可通过参考考虑附图的以下描述来获取对本文中描述的方面和其优点的更完整理解,附图中相同参考标号指示相同特征,且其中:
图1描绘可根据本文中所描述的一个或多个说明性方面使用的说明性计算机系统架构。
图2描绘可根据本文中描述的一个或多个说明性方面使用的说明性远程访问系统架构。
图3描绘可根据本文中所描述的一个或多个说明性方面使用的说明性虚拟化(管理程序)系统架构。
图4描绘可根据本文中描述的一个或多个说明性方面使用的说明性基于云的系统架构。
图5描绘可根据本文中所描述的一个或多个说明性方面使用的说明性操作环境。
图6A、6B、6C和6D描绘可根据本文中描述的一个或多个说明性方面使用的说明性系统配置。
图7A、7B、7C和7D描绘可根据本文中描述的一个或多个说明性方面使用的说明性过程流程。
图8描绘可根据本文中描述的一个或多个说明性方面使用的说明性方法。
具体实施方式
在各种实施例的以下描述中,参考上文识别且形成本文的一部分的附图,且其中借助于说明展示可实践本文中所描述的方面的各种实施例。应理解,在不脱离本文所描述的范围的情况下,可以利用其它实施例且可以进行结构和功能修改。各个方面能够有其它实施例并且以各种不同方式实践或实行。
作为对下文更详细地描述的主题的一般介绍,本文所描述的方面是针对在与用户相关联的不同装置处执行用户工作流的不同任务。任务切换服务器和/或用户装置可以自动监视用户的情境以确定用户工作流中的当前和/或下一任务。任务切换服务器可以进一步监视哪些装置可用于用户,且对每一装置的执行特定当前和/或下一任务的能力进行排名。以此方式,任务切换服务器可能够自动识别在较适当装置处执行任务的机会,向用户通知所述机会,且协调跨越不同装置的任务的执行。
应当理解,本文所用的措辞和术语是出于描述的目的,不应被视为是限制性的。相反地,应对本文中使用的短语和术语给予其最广泛的解释和含义。“包含(including)”和“包括(comprising)”和其变体的使用打算涵盖其后列出的项目和其等效物以及额外项目和其等效物。使用术语“安装”、“连接”、“联接”、“定位”、“接合”和类似术语,旨在包括直接和间接安装,连接,联接,定位和接合。
计算架构
可在包含独立式、联网、远程访问(又名,远程桌面)、虚拟化和/或基于云的环境等多种不同系统环境中利用计算机软件、硬件和网络。图1说明可用以在独立式和/或联网环境中实施本文中所描述的一个或多个说明性方面的系统架构和数据处理装置的一个实例。各种网络节点103、105、107和109可通过例如因特网的广域网(WAN)101互连。同样或替代地可以使用其它网络,包含私人内联网、公司网络、局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、无线网络、个人网络(personal network,PAN)及类似物。网络101是出于说明的目的,且可由更少或额外计算机网络替换。局域网133可以具有任何已知LAN拓扑结构中的一个或多个,并且可以使用多种不同协议,诸如以太网中的一种或多种。装置103、105、107和109以及其它装置(未示出)可以经由双绞线电线、同轴电缆、光纤或其它通信介质连接到一个或多个网络。
如本文中所使用且在图式中描绘的术语“网络”不仅指远程存储装置经由一个或多个通信路径耦合在一起的系统,而且指可不时地耦合到具有存储能力的此类系统的单独装置。因此,术语“网络”不仅包含“物理网络”,而且包含“内容网络”,其包括驻留在所有物理网络上的可归于单一实体的数据。
组件可包含数据服务器103、网页服务器105以及客户端计算机107、109。数据服务器103提供对用于执行本文描述的一个或多个说明性方面的数据库和控制软件的总体访问、控制和管理。数据服务器103可连接到网络服务器105,经由所述网络服务器,用户按请求与数据交互和获得数据。替代地,数据服务器103可充当网络服务器自身且直接连接到因特网。数据服务器103可以通过局域网133、广域网101(例如,因特网)、经由直接或间接连接或经由某一其它网络连接到网页服务器105。用户可以使用远程计算机107、109与数据服务器103交互,例如,使用网络浏览器以经由由网页服务器105代管的一个或多个外部公开网站连接到数据服务器103。客户端计算机107、109可以与数据服务器103协同使用以访问其中存储的数据,或者可以用于其它目的。举例来说,从客户端装置107,用户可使用因特网浏览器(如所属领域中已知)或通过执行在计算机网络(例如因特网)上与网页服务器105和/或数据服务器103通信的软件应用程序来访问网页服务器105。
服务器与应用可在相同物理机器上组合,且保留单独的虚拟或逻辑地址,或可驻留于单独的物理机器上。图1说明可使用的网络架构的仅一个实例,且本领域的技术人员将了解,使用的特定网络架构和数据处理装置可变化,且对于其提供的功能性是次要的,如本文中进一步描述。举例来说,由网页服务器105和数据服务器103提供的服务可在单个服务器上组合。
每一组件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。数据服务器软件的功能性可以指代基于经译码为控制逻辑的规则自动做出、通过用户对系统提供输入而手动做出的操作或决策,和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。
存储器121还可存储用于执行本文所描述的一个或多个方面的数据,包含第一数据库129和第二数据库131。在一些实施例中,第一数据库可包含第二数据库(例如,作为单独的表、报告等)。也就是说,取决于系统设计,信息可存储于单个数据库中,或分成不同逻辑、虚拟或物理数据库。装置105、107和109可以具有相对于装置103描述的相似或不同的架构。本领域的技术人员将了解,如本文所述的数据处理装置103(或装置105、107或109)的功能可以跨多个数据处理装置扩展,例如,以在多个计算机上分配处理负载,以基于地理位置、用户访问级别、服务质量等分离交易。
一个或多个方面可由本文中描述的一个或多个计算机或其他装置执行的例如一个或多个程序模块中的计算机可用或可读数据和/或计算机可执行指令来体现。通常,程序模块包含在由计算机或其它装置中的处理器执行时执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。模块可按随后被编译供执行的源代码编程语言来撰写,或可按例如(但不限于)超文本标记语言(HTML)或可扩展标记语言(XML)的脚本语言来撰写。计算机可执行指令可以存储在计算机可读介质上,例如非易失性存储装置。可利用任何合适的计算机可读存储介质,包含硬盘、CD-ROM、光学存储装置、磁性存储装置和/或其任何组合。另外,如本文中所描述的表示数据或事件的各种传输(非存储)介质可以行进通过信号传导介质的电磁波的形式在源与目的地之间传送,所述信号传导介质例如金属线、光纤和/或无线传输介质(例如,空气和/或空间)。本文所述的各个方面可以体现为方法,数据处理系统或计算机程序产品。因此,各种功能可全部或部分地体现于软件、固件和/或硬件或硬件等同物中,例如集成电路、现场可编程门阵列(FPGA)等。可使用特定数据结构更有效地实施本文中描述的一个或多个方面,且预期此类数据结构在本文中描述的计算机可执行指令和计算机可用数据的范围内。
进一步参看图2,可在远程访问环境中实施本文中描述的一个或多个方面。图2描绘包含在可根据本文中所描述的一个或多个说明性方面使用的说明性计算环境200中的通用计算装置201的实例系统架构。通用计算装置201可以用作被配置成为客户端访问装置提供虚拟机的单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a。通用计算装置201可具有用于控制服务器和其相关联组件(包含RAM 205、ROM 207、输入/输出(I/O)模块209和存储器215)的总体操作的处理器203。
I/O模块209可以包含通用计算装置201的用户可以用来提供输入的鼠标、小键盘、触摸屏、扫描仪、光学阅读器和/或触笔(或其它输入装置),且还可以包含用于提供音频输出的扬声器中的一个或多个以及用于提供文字、视听和/或图形输出的视频显示装置中的一个或多个。软件可存储于存储器215和/或其它存储装置内以将用于将通用计算装置201配置成专用计算装置以便执行如本文中描述的各种功能的指令提供到处理器203。举例来说,存储器215可以存储由计算装置201使用的软件,例如操作系统217、应用程序219和相关联数据库221。
计算装置201可在支持到例如终端240(也被称为客户端装置)的一个或多个远程计算机的连接的联网环境中操作。终端240可以是个人计算机、移动装置、膝上型计算机、平板计算机或服务器,其包含上文关于通用计算装置103或201描述的元件中的许多或全部。图2中描绘的网络连接包含局域网(LAN)225和广域网(WAN)229,但也可包含其它网络。当用于LAN联网环境中时,计算装置201可以通过网络接口或适配器223连接到LAN 225。当在WAN联网环境中使用时,计算装置201可以包含调制解调器227或其它广域网接口以用于在WAN229上建立通信,例如计算机网络230(例如,因特网)。将了解,所展示的网络连接是说明性的,且可使用在计算机之间建立通信链路的其它构件。计算装置201和/或终端240也可以是包含例如电池、扬声器和天线(未示出)的各种其它组件的移动终端(例如,移动电话、智能手机、个人数字助理(PDA)、笔记本计算机等)。
本文中所描述的方面也可与众多其它通用或专用计算系统环境或配置一起操作。可适合与本文中描述的方面一起使用的其它计算系统、环境和/或配置的实例包含(但不限于)个人计算机、服务器计算机、手持式或笔记本计算机、多处理器系统、基于微处理器的系统、机顶盒、可编程消费型电子装置、网络个人计算机(PC)、微型计算机、大型计算机、包含以上系统或装置中的任一者的分布式计算环境和类似物。
如图2中所示出,一个或多个客户端装置240可与一个或多个服务器206a-206n(通常在本文中被称作“服务器206”)通信。在一个实施例中,计算环境200可包含安装在服务器206与客户端机器240之间的网络设备。网络设备可管理客户端/服务器连接,且在一些情况下可使多个后端服务器206当中的客户端连接负载平衡。
客户端机器240在一些实施例中,可被称作单个客户端机器240或客户端机器240的单个群组,而服务器206可被称作单个服务器206或服务器206的单个群组。在一个实施例中,单个客户端机器240与多于一个服务器206通信,而在另一实施例中,单个服务器206与多于一个客户端机器240通信。在又一实施例中,单个客户端机器240与单个服务器206通信。
在一些实施例中,客户端机器240可由以下非详尽术语中的任一个参考:客户端机器;客户端;客户端计算机;客户端装置;客户端计算装置;本地机器;远程机器;客户端节点;端点;或端点节点。在一些实施例中,服务器206可以由以下非详尽术语中的任一个参考:服务器,本地机器;远程机器;服务器集群,或主机计算装置。
在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由1型或2型管理程序管理的任何虚拟机,所述管理程序例如,由Citrix系统、IBM、VMware或任何其它管理程序开发的管理程序。在一些方面,虚拟机可以由管理程序管理,同时在其它方面,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序来管理。
一些实施例包含客户端装置240,其显示由在服务器206上远程执行的应用程序或其它远程定位的机器产生的应用程序输出。在这些实施例中,客户端装置240可执行虚拟机接收器程序或应用程序以在应用窗口、浏览器或其它输出窗中显示输出。在一个实例中,应用程序是桌面,而在其它实例中,应用程序是生成或呈现桌面的应用程序。桌面可包含图形壳层,其提供用于其中可集成本地和/或远程应用程序的操作系统的例项的用户接口。如本文中所使用的应用程序是在已加载操作系统(且任选地,以及桌面)的例项之后执行的程序。
在一些实施例中,服务器206使用远程呈现协议或其它程序将数据发送到精简客户端或客户端上执行的远程显示应用程序,以呈现由服务器206上执行的应用程序产生的显示输出。精简客户端或远程显示协议可以是以下非详尽协议列表中的任一个:由CitrixSystems,Inc.(佛罗里达,劳德代尔堡)开发的独立计算架构(ICA)协议;或由华盛顿雷德蒙德的微软公司制造的远程桌面协议(RDP)。
远程计算环境可包含多于一个服务器206a-206n,使得服务器206a-206n例如在云计算环境中一起逻辑分组为服务器集群206。服务器集群206可包含虽然地理上分散却逻辑分群在一起的服务器206,或位置相互最接近同时逻辑分群在一起的服务器206。在一些实施例中,在服务器集群206内的地理上分散的服务器206a-206n使用WAN(广)、MAN(都市)或LAN(本地)通信,其中不同地理区域可表征为:不同大陆;大陆的不同区域;不同国家;不同州;不同城市;不同园区;不同房间;或先前地理位置的任何组合。在一些实施例中,可将服务器集群206作为单个实体管理,而在其他实施例中,服务器集群206可包含多个服务器集群。
在一些实施例中,服务器集群可以包含执行基本上相似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID、SYMBIAN等)的服务器206。在其它实施例中,服务器集群206可以包含执行第一类型的操作系统平台的一个或多个服务器的第一群组,以及执行第二类型的操作系统平台的一个或多个服务器的第二群组。
服务器206可按需要被配置为任一类型的服务器,例如,文件服务器、应用程序服务器、网页服务器、代理服务器、器具、网络器具、网关、应用程序网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(SSL)VPN服务器、防火墙、网页服务器、应用程序服务器,或作为主应用程序服务器、执行活动目录的服务器,或执行提供防火墙功能性、应用程序功能性或负载平衡功能性的应用程序加速程序的服务器。也可以使用其它服务器类型。
一些实施例包含第一服务器206a,其接收来自客户端机器240的请求,将请求转发到第二服务器206b(未示出),且以来自第二服务器206b(未图示)的响应对由客户端机器240生成的请求进行响应。第一服务器206a可以获取可用于客户端机器240的应用程序的列举,以及与代管在所述应用程序列举内识别的应用程序的应用程序服务器206相关联的地址信息。第一服务器206a可以随后使用网络接口呈现对客户端的请求的响应,且直接与客户端240通信以为客户端240提供对所识别应用程序的访问。一个或多个客户端240和/或一个或多个服务器206可在例如网络101的网络230上传输数据。
图3示出说明性应用程序虚拟化系统的高层级架构。如所示,应用程序虚拟化系统可以是单服务器或多服务器系统或云系统,其包含配置成将虚拟桌面和/或虚拟应用程序提供到一个或多个客户端访问装置240的至少一个虚拟化服务器301。如本文所使用,桌面是指其中可代管和/或执行一个或多个应用程序的图形环境或空间。桌面可包含图形壳层,其提供用于其中可集成本地和/或远程应用程序的操作系统的例项的用户接口。应用程序可包含在已加载操作系统(且任选地还有桌面)的例项之后执行的程序。操作系统的每一例项可以是物理的(例如,每装置一个操作系统)或虚拟的(例如,在单个装置上运行的OS的许多例项)。每一应用程序可在本地装置上执行,或在位于远处的装置(例如,远程)上执行。
计算机装置301可以被配置为虚拟化环境中的虚拟化服务器,例如单服务器、多服务器或云计算环境。图3所示的虚拟化服务器301可部署为图2所示的服务器206的一个或多个实施例,和/或通过图2所示的服务器206的一个或多个实施例或通过其它已知计算装置来实施。虚拟化服务器301中包含硬件层,所述硬件层可包含一个或多个物理磁盘304、一个或多个物理装置306、一个或多个物理处理器308和一个或多个物理存储器316。在一些实施例中,固件312可存储于物理存储器316中的存储器元件内且可由物理处理器308中的一个或多个执行。虚拟化服务器301可进一步包含操作系统314,所述操作系统可存储于物理存储器316中的存储器元件中且可由物理处理器308中的一个或多个执行。另外,管理程序302可存储在物理存储器316中的存储器元件中,且可由物理处理器308中的一个或多个执行。
在物理处理器308中的一个或多个上执行的可以是一个或多个虚拟机332A-C(通常为332)。每一虚拟机332可具有虚拟磁盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332A可使用虚拟处理器328A执行包含工具堆栈324的控制程序320。控制程序320可称作控制虚拟机、Dom0、域0或用于系统管理和/或控制的其它虚拟机。在一些实施例中,一个或多个虚拟机332B-C可使用虚拟处理器328B-C执行访客操作系统330A-B。
虚拟化服务器301可包含硬件层310,所述硬件层具有与虚拟化服务器301通信的一件或多件硬件。在一些实施例中,硬件层310可包含一个或多个物理磁盘304、一个或多个物理装置306、一个或多个物理处理器308和一个或多个物理存储器316。物理组件304、306、308和316可包含例如上文所描述的组件中的任一个。物理装置306可以包含(例如)网络接口卡、视频卡、键盘、鼠标、输入装置、监视器、显示装置、扬声器、光盘驱动器、存储装置、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址翻译器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等),或连接到虚拟化服务器301或与其通信的任何装置。硬件层310中的物理存储器316可包含任何类型的存储器。物理存储器316可存储数据,且在一些实施例中,可存储一个或多个程序或可执行指令集。图3示出固件312存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316中的程序或可执行指令可由虚拟化服务器301的一个或多个处理器308执行。
虚拟化服务器301还可包含管理程序302。在一些实施例中,管理程序302可以是由虚拟化服务器301上的处理器308执行以创建且管理任何数目个虚拟机332的程序。管理程序302可被称为虚拟机监测器或平台虚拟化软件。在一些实施例中,管理程序302可以是监测在计算机器上执行的虚拟机的可执行指令与硬件的任何组合。管理程序302可以是2型管理程序,其中管理程序在操作系统314内执行,所述操作系统在虚拟化服务器301上执行。虚拟机接着可以在高于管理程序的级别处执行。在一些实施例中,2型管理程序可以在用户的操作系统的情境内执行,使得2型管理程序与用户的操作系统交互。在其它实施例中,在虚拟化环境中的一个或多个虚拟化服务器301可改为包含1型管理程序(未图示)。1型管理程序可通过直接访问硬件层310内的硬件和资源而在虚拟化服务器301上执行。即,虽然2型管理程序302通过主机操作系统314访问系统资源,如所示,但1型管理程序可在无主机操作系统314的情况下直接访问所有系统资源。1型管理程序可直接在虚拟化服务器301的一个或多个物理处理器308上执行,且可包含存储于物理存储器316中的程序数据。
在一些实施例中,以模拟能够直接访问系统资源的操作系统330或控制程序320的任何方式,管理程序302可将虚拟资源提供到在虚拟机332上执行的操作系统330或控制程序320。系统资源可包含但不限于物理装置306、物理磁盘304、物理处理器308、物理存储器316和包含在虚拟化服务器301硬件层310中的任何其它组件。管理程序302可用于模拟虚拟硬件、分割物理硬件、虚拟化物理硬件和/或执行提供对计算环境的访问权的虚拟机。在又其它实施例中,管理程序302可以控制在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分割。管理程序302可包含:加利福尼亚州帕洛阿尔托(Palo Alto,California)的VMWare,Inc.制造的管理程序;XENPROJECT管理程序,其为在开源XenProject.org团体监督下开发的开源产品;由微软提供的HyperV、VirtualServer或虚拟PC管理程序,或其它管理程序。在一些实施例中,虚拟化服务器301可以执行创建访客操作系统可在其上执行的虚拟机平台的管理程序302。在这些实施例中,虚拟化服务器301可被称为主机服务器。此类虚拟化服务器的实例是由佛罗里达州劳德代尔堡的思杰系统公司提供的XENSERVER。
管理程序302可创建访客操作系统330于其中执行的一个或多个虚拟机332B-C(通常为332)。在一些实施例中,管理程序302可加载虚拟机映像以创建虚拟机332。在其它实施例中,管理程序302可以执行虚拟机332内的访客操作系统330。在再其它实施例中,虚拟机332可以执行访客操作系统330。
除创建虚拟机332之外,管理程序302还可以控制至少一个虚拟机332的执行。在其它实施例中,管理程序302可以通过由虚拟化服务器301提供的至少一个硬件资源(例如,在硬件层310内可用的任何硬件资源)的抽象来呈现至少一个虚拟机332。在其它实施例中,管理程序302可控制虚拟机332访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可包含确定虚拟机332是否应能够访问处理器308和物理处理器能力被呈现给虚拟机332的方式。
如图3中所示,虚拟化服务器301可托管或执行一个或多个虚拟机332。虚拟机332是可执行指令的集合,其在由处理器308执行时可以模仿物理计算机的操作以使得虚拟机332可极类似于物理计算装置而执行程序和过程。虽然图3示出虚拟化服务器301代管三个虚拟机332的实施例,但在其他实施例中,虚拟化服务器301可代管任何数目的虚拟机332。在一些实施例中,管理程序302可以为每一虚拟机332提供可用于虚拟机332的物理硬件、存储器、处理器和其它系统资源的唯一虚拟视图。在一些实施例中,唯一虚拟视图可基于虚拟机权限、将策略引擎应用于一个或多个虚拟机标识符、访问虚拟机的用户、在虚拟机上执行的应用程序、由虚拟机访问的网络或任何其它所要准则中的一个或多个。举例来说,管理程序302可创建一个或多个不安全虚拟机332和一个或多个安全虚拟机332。可阻止不安全虚拟机332访问可准许安全虚拟机332访问的资源、硬件、存储器位置和程序。在其它实施例中,管理程序302可为每个虚拟机332提供可用于虚拟机332的物理硬件、存储器、处理器和其它系统资源的大体上类似虚拟视图。
每一虚拟机332可以包含虚拟磁盘326A-C(通常为326)和虚拟处理器328A-C(通常为328)。在一些实施例中,虚拟磁盘326是虚拟化服务器301的一个或多个物理磁盘304或者虚拟化服务器301的一个或多个物理磁盘304的一部分的虚拟化视图。物理磁盘304的虚拟化视图可由管理程序302产生、提供和管理。在一些实施例中,管理程序302为每一虚拟机332提供物理磁盘304的唯一视图。因此,在这些实施例中,包含在每一虚拟机332中的特定虚拟磁盘326在与其它虚拟磁盘326比较时可以是唯一的。
虚拟处理器328可为虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可由管理程序302产生、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的大体上全部相同特性。在其它实施例中,虚拟处理器308提供物理处理器308的经修改视图以使得虚拟处理器328的至少一些特性不同于对应物理处理器308的特性。
另外参考图4,可在基于云的环境中实施本文中描述的一些方面。图4示出云计算环境(或云系统)400的实例。如图4中所见,客户端计算机411-414可以与云管理服务器410通信以访问云系统的计算资源(例如,主机服务器403a-403b(本文通常称为“主机服务器403”)、存储资源404a-404b(本文通常称为“存储资源404”)和网络资源405a-405b(本文通常称为“网络资源405”))。
管理服务器410可在一个或多个物理服务器上实施。管理服务器410可运行例如佛罗里达州劳德代尔堡的思杰系统公司的CLOUDPLATFORM或OPENSTACK等等。管理服务器410可管理各种计算资源,包含云硬件和软件资源,例如,主机计算机403、数据存储装置404和联网装置405。云硬件和软件资源可包含私有和/或公共组件。举例来说,云可被配置为待由一或多个特定客户或客户端计算机411-414和/或在私用网络上使用的私用云。在其它实施例中,公用云或混合公用-私用云可由其它客户在开放式或混合网络上使用。
管理服务器410可被配置以提供用户接口,通过所述用户接口,云操作员和云客户可与云系统400交互。举例来说,管理服务器410可以提供一组应用程序编程接口(API)和/或具有用户接口的一个或多个云操作员控制台应用程序(例如,基于网络的或独立的应用程序)以允许云操作员管理云资源,配置虚拟化层,管理客户账户,以及执行其它云管理任务。管理服务器410还可包含具有用户接口的一组API和/或一个或多个客户控制台应用程序,所述用户接口配置成通过客户端计算机411-414接收来自终端用户的云计算请求,例如创建、修改或毁坏云内的虚拟机的请求。客户端计算机411-414可以经由因特网或某一其它通信网络连接到管理服务器410,且可以请求访问由管理服务器410管理的计算资源中的一个或多个。响应于客户端请求,管理服务器410可包含资源管理器,所述资源管理器被配置成基于客户端请求选择和布建云系统的硬件层中的物理资源。举例来说,云系统的管理服务器410和额外组件可被配置成在网络(例如,因特网)上为在客户端计算机411-414处的顾客提供、创建和管理虚拟机及其操作环境(例如,管理程序、存储资源、由网络元件提供的服务等),从而给顾客提供计算资源、数据存储服务、联网能力以及计算机平台和应用程序支持。云系统也可被配置以提供各种具体服务,包含安全系统、开发环境、用户接口和类似物。
某些客户端411-414可以相关,例如,不同客户端计算机代表同一终端用户创建虚拟机,或不同用户附属于同一公司或组织。在其它实例中,某些客户端411-414可以不相关,例如用户附属于不同公司或组织。对于不相关客户端,可将任何一个用户的关于虚拟机或存储的信息对其它用户隐藏。
现参考云计算环境的物理硬件层,可用性区401-402(或区)可指物理计算资源的并置集合。可将区与计算资源的总体云中的其它区地理上分开。举例来说,区401可以是位于加利福尼亚的第一云数据中心,且区402可以是位于佛罗里达的第二云数据中心。管理服务器410可位于可用性区中的一个处,或位于单独的位置。每个区可包含通过网关与管理服务器410等在所述区外的装置介接的内部网络。云的终端用户(例如,客户端411-414)可能察觉到或可能察觉不到区之间的区别。举例来说,终端用户可请求创建具有指定量的存储器、处理能力和网络能力的虚拟机。管理服务器410可响应用户的请求,且可在用户不知晓是使用来自区401还是区402的资源创建虚拟机的情况下分配资源以创建虚拟机。在其它实例中,云系统可允许终端用户请求将虚拟机(或其他云资源)分配在特定区中或区内的特定资源403-405上。
在此实例中,每一区401-402可包含各种物理硬件组件(或计算资源)403-405的布置,例如,物理代管资源(或处理资源)、物理网络资源、物理存储资源、交换机和可用以对客户提供云计算服务的额外硬件资源。云区401-402中的物理代管资源可包含一个或多个计算机服务器403,例如以上描述的虚拟化服务器301,其可被配置以创建和代管虚拟机例项。云区401或402中的物理网络资源可包含包括被配置成对云顾客提供网络服务的硬件和/或软件的一个或多个网络元件405(例如,网络服务提供者),例如防火墙、网络地址翻译程序、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等。云区401-402中的存储资源可包含存储磁盘(例如,固态驱动器(SSD)、磁性硬盘等)和其它存储装置。
图4中示出的实例云计算环境还可以包含具有额外硬件和/或软件资源的虚拟化层(例如,如图1-3中所示),其被配置成创建和管理虚拟机且使用云中的物理资源对客户提供其它服务。虚拟化层可包含管理程序,如上文在图3中所描述,所述管理程序与其它组件一起提供网络虚拟化、存储虚拟化等。虚拟化层可作为与物理资源层分开的层,或可与物理资源层共享相同硬件和/或软件资源中的一些或全部。举例来说,虚拟化层可包含与物理计算资源一起安装在每个虚拟化服务器403中的管理程序。可替代地使用已知云系统,例如,WINDOWS AZURE(华盛顿雷德蒙德的微软公司)、AMAZON EC2(华盛顿西雅图的Amazon.comInc.)、IBM BLUE CLOUD(纽约阿蒙克的IBM公司)或其它。
基于工作流的装置切换
用户可以与装置网络相关联,所述装置网络包含用户拥有或另外与用户个人相关联的私用装置,以及共享或另外公用的装置。用户通常在单个装置上一个接一个地执行包括一系列任务的工作流。然而,某些工作流任务可能在某些装置处的执行比在其它装置处更合适。举例来说,用户可能希望在具有大屏幕的第一装置处查看文档,随后在具有触摸垫和/或触笔的另一装置上签署文档。作为另一实例,用户可能希望浏览在第一装置上捕获的一系列图像,随后在具有较大显示器的另一装置上查看图像中的一个或多个。在另一实例中,用户可能希望在第一装置上浏览关于商业或其它机构的信息,随后在具有电话功能的第二装置上呼叫所述商业或机构。作为另一实例,用户可能希望在具有指纹读取器的第二装置上认证用户的身份之后在第一装置上访问私人信息。因此,用户可能希望在工作流的某些事件处将工作流从一个装置切换到另一装置。
图5描绘包含与用户503相关联的装置的私用和公用群组的说明性装置网络。与用户503相关联的装置的私用群组500可以包含一个或多个用户装置501、502。此类装置可以包含由用户503拥有的装置和/或用户503具有个人账户的装置,例如用户的电话502、个人计算机501或平板计算机501。在一些实施例中,用户装置502中的一个可以表示为可以指示用户503的位置(例如,因为用户通常携载装置502)的用户装置。在一些实施例中,用户503也可以基于用户503和/或装置502的位置与装置的公用群组550相关联。举例来说,当用户503和/或装置502在公用装置551附近时,用户503可能够经由私用群组500中的装置(例如装置502)与公用装置551介接和/或交互。公用装置可以包含(例如)共享电视机551和共享音频服务器551。在一些实施例中,公用装置可以包含用户具有共享账户的装置(例如,办公室电视机,或设定为客人模式的朋友的电视机)和/或允许私用用户装置502连接的装置(例如,经由蓝牙连接)。
图6A示出用于将工作流任务传送到第二装置的第一配置。第一装置620可以执行第一应用程序625,且第一应用程序625可以设定成用于执行第一任务(例如,工作流的当前任务)的状态。在与第一应用程序625的用户交互期间,事件可以使第一应用程序625准备执行和/或开始执行第二任务(例如,工作流的下一任务)。举例来说,用户与第一装置620和/或第一应用程序625进行交互可以造成选择签署正在第一装置620上查看的文档的选项(例如,经由用户接口)。第一装置620可以向任务切换服务器610通知任务信息(例如,当前/第一任务和/或第二/下一任务),且任务切换服务器610可以检测在第二装置630执行第二任务的机会。任务切换服务器610可以随后指示第二装置630执行第二任务,包含以指令执行任务所需的任何额外数据(例如,用于签名的文档)。响应于指令,第二装置630可以使在第二装置630上执行的第二应用程序635执行第二任务。第二应用程序635可以执行第二任务,并且还使第二装置630将执行第二任务的结果传输回到任务切换服务器610。举例来说,第二装置630可以将已签署的文档传输回到任务切换服务器610。任务切换服务器610可以随后通知第一装置620第二装置630已结束执行任务,且可以包含与任务相关联的结果(例如,已签署的文档)。第一应用程序625可以随后显示接收的结果和/或与接收的结果交互。在一些实施例中,第二应用程序635可以与第一应用程序625相同(例如,第一应用程序625和第二应用程序635可以都是具有文档查看和签名功能的应用程序)。
图6B示出用于将任务传送到第二装置的第二配置。根据第二配置,第一应用程序625可以是在虚拟化服务器640中运行的虚拟化应用程序。在一些实施例中,虚拟化服务器640可以是和/或包含在图3图示的应用程序虚拟化服务器301。装置620和/或630可以本地运行客户端应用程序627、637以用于显示虚拟化应用程序且与其进行交互。在第二配置中,任务切换服务器610可以与虚拟化服务器640成可操作通信,和/或任务切换服务器610和虚拟化服务器640可以是同一服务器的部分。在检测到正在装置620上显示的第一虚拟化应用程序625中的潜在任务切换事件之后,任务切换服务器610和/或虚拟化服务器640即刻可以将用于与第一虚拟化应用程序625进行交互的网络会话从第一装置620传送到第二装置630。可以随后经由第二装置630显示第一虚拟化应用程序625且与其交互以执行第二任务。在第二任务完成之后,任务切换服务器610和/或虚拟化服务器640可以将用于与第一虚拟化应用程序625进行交互的网络会话从第二装置630传送回到第一装置620。
图6C示出用于将任务传送到第二装置的第三配置。根据第三配置,第一应用程序625和第二应用程序635可以是在虚拟化服务器640中运行的虚拟化应用程序。在一些实施例中,虚拟化服务器640可以是和/或包含在图3图示的应用程序虚拟化服务器301。装置620和/或630可以本地运行客户端应用程序637以用于显示虚拟化应用程序且与其进行交互。在第二配置中,任务切换服务器610可以与虚拟化服务器640成可操作通信,和/或任务切换服务器610和虚拟化服务器640可以是同一服务器的部分。在检测到正在装置620上显示的第一虚拟化应用程序625中的潜在任务切换事件之后,任务切换服务器610即刻可以使虚拟化服务器640执行第二虚拟化应用程序635以用于执行第二任务。可以经由第二装置630显示第二虚拟化应用程序635且与其进行交互。虚拟化服务器640可以使第一应用程序625和第二应用程序635根据需要进行通信以传送信息和/或情境(例如,来回传送与第二任务相关联的信息和/或执行第二任务的结果)。在一些实施例中,虚拟化服务器640可以重新配置第一应用程序625以产生第二应用程序635。在第二任务完成之后,任务切换服务器610和/或虚拟化服务器640可以停止执行第二应用程序635和/或关闭与第二装置630的网络会话。
图6D示出用于将任务传送到第二装置的第四配置。根据第四配置,任务切换服务器610可以是第一装置620的组件。任务切换服务器610可以任选地是第一应用程序625的一部分,和/或任务切换服务器610可以由单独应用程序实施。在用户与第一应用程序625的交互期间,事件可以使第一应用程序625准备执行和/或开始执行第二任务。第一装置620的任务切换服务器610可以(例如,从第一应用程序625)接收任务信息(例如,当前/第一任务和/或第二/下一任务),且任务切换服务器610可以检测在第二装置630执行第二任务的机会。任务切换服务器610可以随后使第一装置620指示第二装置630执行第二任务,包含以指令执行任务所需的任何额外数据。响应于指令,第二装置630可以使在第二装置630上执行的第二应用程序635执行第二任务。第二应用程序635可以执行第二任务,并且还使第二装置630将执行第二任务的结果传输回到第一装置620。第一应用程序625可以随后显示接收的结果和/或与接收的结果交互。在一些实施例中,第二应用程序635可以与第一应用程序625相同(例如,第一应用程序625和第二应用程序635可以都是具有文档查看和签名功能的应用程序)。
在一些实施例中,任务切换服务器610可以是图2的服务器201,包含图2的服务器201,或由图2的服务器201实施。
图7A、7B、7C和7D示出用于将由第一应用程序执行的任务传送到另一装置的实例过程图式。第一装置620和第二装置630可以根据第一配置(例如,根据图6A说明的配置)分别执行第一应用程序625和第二应用程序635。替代地,第一装置620和第二装置630可以根据第二配置(例如,根据图6B说明的配置)分别执行客户端应用程序627、637以用于与在虚拟化服务器640上执行的虚拟化第一应用程序625进行交互。替代地,第一装置620和第二装置630可以根据第三配置(例如,根据图6C说明的配置)分别执行客户端应用程序627、637以用于与在虚拟化服务器640上执行的虚拟化第一应用程序625和虚拟化第二应用程序635进行交互。替代地,根据第四配置(例如,根据图6D说明的配置),第一装置620可以执行第一应用程序625和任务切换服务器610且第二装置630可以执行第二应用程序635。因此,参考任务切换服务器610描述的功能可由独立任务切换服务器610和/或第一装置620执行,参考第一应用程序625描述的功能可由第一装置620和/或虚拟化服务器640执行,且参考第二装置630描述的功能可单独由第二装置630和/或由虚拟化服务器640执行。
在步骤701,任务切换服务器610可以经由在第一装置620或虚拟化服务器640上执行的第一应用程序625接收指示与第一装置620相关联的一个或多个装置能力的信息,所述第一装置可以是例如私用群组500和/或公用群组550的装置。装置能力可以包含(例如)关于输入能力的信息(例如,输入的类型,例如键盘、鼠标、触摸屏、相机、麦克风、指纹读取器及类似物,以及输入的任何性质,例如相机的分辨率和/或快门速度、键盘的语言等),关于输出装置的信息(例如,关于一个或多个显示器大小的信息,例如与装置620集成或连接的显示器的尺寸和/或分辨率、扬声器的数目和类型等),关于网络接口的信息(例如,蜂窝接口的存在和装置620是否具有蜂窝连接、蓝牙接口的存在和连接装置的列表,及类似物),关于存储装置的信息(例如,装置上的存储空间的量、装置上的自由存储空间的量及类似物),以及关于装置620的任何其它能力的信息(例如,关于图形卡和/或处理器的信息、关于装置是否被配置成对所捕获图像和/或视频执行虹膜辨识的信息及类似物)。
在一些实施例中,第一应用程序625可以收集关于装置能力的信息且将信息发送到任务切换服务器610。举例来说,第一应用程序625可以被配置成搜集此类信息(例如,通过辨识通过在装置620上运行的操作系统而可用的功能、访问装置能力的列表及类似操作)。在一些实施例中,第一应用程序625可以获得和发送装置标识符(例如,唯一装置标识符和/或例如装置的制造商、型号和/或版本等类型标识符)到任务切换服务器610,且任务切换服务器610可以检索与所指示装置标识符相关联的装置能力的列表(例如,从此类能力的数据库)。举例来说,来自第一应用程序625的通信可以包含识别装置620的类型的用户代理字符串。
在步骤702,任务切换服务器610可以生成和/或更新包含至少装置620的装置能力信息的用户简档。用户简档还可以包含关于与特定用户相关联的一个或多个其它装置的信息,所述其它装置例如私用群组500的装置501和/或502和/或公用群组550的装置551。任务切换服务器610可以在各种时间(未示出)在用户简档中接收关于每一装置的能力的信息,如针对步骤701所描述。
生成的用户简档还可以包含指定优选装置、装置等级及类似物的用户偏好。在一些实施例中,用户偏好可以由与用户简档相关联的用户503明确地提供。任务切换服务器610可以提供用户界面(例如,用于在装置620上显示),从而允许用户按偏好明确地选择用户的最爱装置和/或对装置进行排名。举例来说,用户可以指定(例如,经由在装置620上显示的用户界面)最爱装置排名,包含排名第一的个人计算机,随后是平板计算机,随后是移动电话。在一些实施例中,用户可以指定指示用户位置的一个或多个装置。举例来说,用户可以指定移动电话和/或智能手表的位置指示用户位置。用户简档可以包含此指定。任务切换服务器610可以从用户接收包含此类偏好的指示,且基于此类偏好中的一些或全部生成用户简档。
用户还可以指定任务特定的装置排名(例如,经由由任务切换服务器610提供的用户界面)。举例来说,对于“观看视频”的任务,用户可以指定排名,包含排名第一的电视机、排名第二的平板计算机和排名第三的移动电话。作为另一实例,对于“拍照片”的任务,用户可以指定排名,包含排名第一的移动电话、排名第二的平板计算机和排名第三的膝上型计算机。排名可以识别特定装置(例如,特定电视机,例如起居室电视机)和/或装置类型(例如,用户简档中的任何电视机)。任务切换服务器610可以从用户接收包含此类偏好的指示,且基于此类偏好中的一些或全部生成用户简档。
在一些实施例中,除明确的用户偏好之外或作为替代方案,任务切换服务器610可以收集用于以推断方式生成用户偏好的信息。举例来说,任务切换服务器610可以在用户简档中接收指示每一装置的使用频率的信息。安装在每一装置上的应用程序(例如,在装置620上执行的第一应用程序625和/或客户端应用程序627)可以上载指示与装置相关联的使用时间、在装置上执行的任务、位置和/或位置历史的信息。任务切换服务器610可以基于用户简档中的每一装置的使用确定最爱装置排名(例如,使用较多的装置可以排名较高)。任务切换服务器610还可以基于在用户简档中的每一装置上执行任务的频率和/或次数确定任务特定排名(例如,执行任务较多的装置可以排名较高)。任务切换服务器610还可以基于每一装置的位置历史确定用户简档中的哪一装置指示用户503的位置(例如,最经常移动和/或移动最远距离的装置可以指示用户的位置)。
在步骤703,任务切换服务器610可以通过接收指示用户位置的装置的位置信息跟踪用户位置。在所说明实例中,第一装置620可以(例如,通过用户简档)被指定为指示用户的位置的装置。因此,通过跟踪第一装置620的位置,任务切换服务器610可以跟踪用户位置。第一应用程序625可以收集第一装置的位置信息(例如,通过访问第一装置620的GPS功能和/或经由第一装置620的WI-FI和/或蓝牙功能检测到的装置的列表)且将位置信息发送到任务切换服务器610。因此,任务切换服务器610可以接收包含GPS坐标、纬度/经度信息及类似物的位置信息。另外或替代地,任务切换服务器610可以接收包含由第一装置620检测到的一个或多个附近无线装置(例如,WI-FI热点、蓝牙装置等)的位置信息。
在步骤704,任务切换服务器610可以基于位置信息对用户简档添加装置和/或从用户简档移除装置(例如,可以基于用户是否在附近而临时添加和移除公用装置551)。任务切换服务器610可以维持装置的列表(例如,公用装置551的数据库)和与每一装置相关联的位置。基于比较用户的位置与列表上的装置的位置,任务切换服务器610可以确定一个或多个装置在用户附近。如果装置在用户的某一距离(例如,给定半径)内和/或如果用户和装置在同一地板上和/或同一房间(例如,使用驻地地图以确定用户和装置是否在所定义区域内)或另外同一区域中,那么任务切换服务器610可以确定装置在附近且将其添加到列表。在所说明实例中,任务切换服务器610可以确定用户的位置在第二装置630的位置附近,且将第二装置630添加到用户简档(例如,如果其尚未在用户简档中)。
如果任务切换服务器610尚未具有关于第二装置630的能力的信息,那么任务切换服务器可以将针对关于其装置能力的信息的请求发送到与第二装置630相关联的第二应用程序635。此类信息可以临时添加到用户简档。任务切换服务器610可以另外或替代地基于在步骤703接收的位置信息确定用于用户简档的装置能力信息。举例来说,如果位置信息包含检测到的无线装置的列表,那么关于检测到的无线装置的信息可以包含类型标识符,例如供应商ID、装置ID及类似物。因此,任务切换服务器610可以基于在步骤703接收的位置信息确定装置能力。
任务切换服务器610还可以基于用户位置从用户简档移除装置。举例来说,当所跟踪用户位置改变时,任务切换服务器610可以确定用户简档中的先前在用户附近的装置是否仍在用户附近。如果一个或多个装置不再在用户附近,那么可以从用户简档移除那些装置。在一些实施例中,无论用户是否在附近,在私用群组500内的装置都可以保持于用户简档中,且公用群组550中的装置可以基于所跟踪用户位置而添加到用户简档和从用户简档移除。在一些实施例中,用户可以指定无论用户位置如何都将保持在用户简档中的一个或多个装置。
参考图7B,在步骤705,第一应用程序625可以检测可以包含当前任务和/或下一任务的任务信息,且将任务信息传输到任务切换服务器610。举例来说,第一应用程序625可能在执行第一任务。第一应用程序625可以随后检测第一应用程序625准备好执行下一任务。在一些实施例中,第一应用程序625可以确定用户已选择下一任务。举例来说,视频流式传输应用程序的用户可以选择视频内容且随后选择“播放”按钮,这可以对应于“显示视频”下一任务。因此,第一应用程序625可以响应于与用户接口的一个或多个用户交互和/或功能的用户选择而检测下一任务。
作为另一实例,应用程序可以基于当前任务确定(潜在的)下一任务。举例来说,文档查看应用程序可以显示包含用于用户签名的字段的文档。在此实例中,“查看文档”的当前任务(例如,与具有签名字段的文档组合)可以使第一应用程序625检测“签署文档”的下一任务。因此,第一应用程序625可以响应于执行特定任务作为当前任务而检测下一任务。在一些实施例中,仅当存在一个或多个情境信号时(例如,当查看的文档包含签名字段时)可以基于当前任务检测下一任务。
作为另一实例,应用程序可以基于情境信号确定(潜在的)下一任务,所述情境信号例如时间、位置、用户的时间表或用户接下来可以做什么的某一其它情境指示符。举例来说,日历应用程序可以基于即将到来和/或当前安排的含有电话号码的会见而确定用户可能不久将执行“呼叫电话号码”任务。
第一应用程序625可以使用一个或多个变量检测用户的任务信息,包含当前任务和/或下一任务,所述变量描述第一应用程序625的当前状态、第一应用程序625的下一状态、接收到的用户交互及类似物。第一应用程序625可以在步骤705将此类任务信息发送到任务切换服务器610。因此,第一应用程序625可以被配置成与任务切换服务器610介接(例如,使用API)。
在一些实施例中,第一应用程序625可以是以浏览器插件增强的浏览器应用程序,所述浏览器插件经配置以检测指示当前任务的当前状态(例如,当前页的URL和/或URL中包含和/或由浏览器设定的一个或多个变量)。浏览器插件可以另外检测指示下一任务的与所选链接(或用户可能潜在地选择的链接)相关联的URL。浏览器插件可以使浏览器应用程序在步骤705将此类任务信息(例如,用于当前任务和/或下一任务的URL)发送到任务切换服务器610。
在一些实施例中,第一应用程序625可以通过维持任务切换服务器610可理解的应用程序状态信息而检测任务信息。举例来说,任务切换服务器610可以使用和/或发布包含多个任务的任务纲要,且第一应用程序625可以被配置成维持指示任务纲要的任务中的一个何时是当前任务和/或下一任务的状态信息。举例来说,如果任务切换服务器610提供包含“显示视频”任务的任务纲要,那么视频流式传输应用程序可以跟踪其是否当前在流式传输视频、用户是否已选择流式传输视频作为下一任务及类似情形。第一应用程序625可以在步骤705将此类任务信息(例如,以任务切换服务器610可理解的格式指示当前任务和/或下一任务的信息)发送到任务切换服务器610。
在一些实施例中,第一应用程序625可以与在第一装置620上运行的操作系统和/或虚拟化层(例如,管理程序、虚拟机和/或域)结合操作。操作系统和/或虚拟化层可以被配置成通过监视由第一应用程序625请求的操作系统和/或硬件功能而检测用户的当前任务和/或下一任务。举例来说,如果第一应用程序625尝试访问相机(例如,通过使用由操作系统和/或虚拟化层提供的API发送请求),那么操作系统和/或虚拟化层可以确定“捕获图像”任务是下一任务。在一些实施例中,即使当运行操作系统和/或虚拟化层的装置不具有对应于特征的能力时,操作系统和/或虚拟化层也可以提供“虚设”硬件和/或软件特征(例如,即使当运行操作系统的装置无相机时,操作系统也可以指示相机已安装)。
在一些实施例中,第一应用程序625可以检测第一装置620缺乏执行所请求任务和/或下一任务的能力。举例来说,当第一应用程序625尝试经由虚设装置(例如,例如虚设相机)访问功能时,操作系统和/或虚拟化层可以确定第一装置620缺乏执行所请求功能的能力且将此指示提供到第一应用程序625。传输到任务切换服务器610的任务信息可以包含装置620是否具有执行下一任务的能力的指示。
第一应用程序625可以生成包含当前和/或下一任务的指示和/或与当前和/或下一任务相关联的一个或多个参数的任务信息。所述一个或多个参数可以包含关于与任务相关联的数据的信息(例如,用于访问数据的地址,例如URL,例如视频、音频或文字等数据的类型,例如编码和/或压缩格式等数据的格式,及类似物),以及关于在执行任务之后预期的返回数据的信息(例如,用于“签署文档”任务的已签署文档的格式、用于“转码视频”任务的已转码视频的格式及类似物)。任务信息可以另外或替代地包含与任务相关联的数据有效负载(例如,用于查看的图像、用于重放的歌曲、需要签名的文档及类似物)。
在一些实施例中,第一应用程序625可以确定任务与私用或敏感数据(例如,个人数据及类似物)相关联。举例来说,用户可以在装置620上查看个人银行信息。因此,第一应用程序625可以在任务信息中包含任务是不应传送到公用装置的私用任务的指示。另外,在一些实施例中,与任务信息相关联的数据可以进行加密(例如,使用在私用装置501、502之间共享的秘密密钥)。
在一些实施例中,第一应用程序625可以确定任务与用户凭证相关联。举例来说,如果第一应用程序625是视频流式传输应用程序,那么用户可以登录进入第一应用程序625的账户。第一应用程序625可以在任务信息中包含可以由第二装置使用以在执行下一任务之前登录用户账户的凭证信息。凭证信息可以被加密(例如,使用在私用装置501、502之间共享的秘密密钥)。
在一些实施例中,第一应用程序625还可以在任务信息中包含包括与任务相关联的数据的数据有效负载。举例来说,任务信息可以包含用于编辑的照片、要签署的文档,或与当前和/或下一任务相关联的其它此类数据。
在一些实施例中,第一应用程序625可以是容器化和/或虚拟应用程序,且第一装置620和/或虚拟化服务器640可以在任务信息中包含可以传送到另一装置用于继续执行的容器化和/或虚拟应用程序625的映像。
在步骤706,任务切换服务器610可以从第一应用程序625接收任务信息。在一些实施例中,第一应用程序625可以发送用于每个检测到的当前任务和/或下一任务的任务信息。在其它实施例中,第一应用程序625可以仅发送具有用户的批准的任务信息。举例来说,在检测到下一任务之后,第一应用程序625即刻可以使第一装置620显示(例如,经由弹出通知)用户可以请求在另一装置执行下一任务的指示。举例来说,通知可以包含指示下一任务且指示另一装置可以执行下一任务的文字(例如,“您想要在另一装置上签署此文档?”)。在一些实施例中,所述显示可以指示第一装置620缺乏执行下一任务的能力(例如,“您的装置无相机。您想要在另一装置上捕获图像?”)。在一些实施例中,第一应用程序625可以仅当第一装置620缺乏执行任务所需的能力时将下一任务信息发送到任务切换服务器610。
在一些实施例中,任务切换服务器610可以接收关于当前任务的信息,且可以基于关于当前任务的信息确定关于下一任务的信息。任务切换服务器610可以存储指示哪一个(哪些)下一任务经常或始终跟随特定当前任务的工作流信息。举例来说,存储在任务切换服务器610处的工作流信息可以指示在当前任务包含“查看产品”时下一任务通常包含“接收支付信息”。在一些情况下,工作流信息可以是用户特定和/或装置特定的。举例来说,用户特定工作流可以指示用户经由特定基于云的数字钱包提供支付信息。因此,下一任务可以对应于从特定数字钱包检索支付信息。因此,基于当前任务、与当前任务相关联的用户和/或与当前任务相关联的装置,任务切换服务器610可以确定下一任务。
在步骤707,任务切换服务器610可以对用户简档中的一个或多个装置进行排名以用于执行下一任务。任务切换服务器610可以基于一个或多个因素对用户简档中的装置进行排名。作为一个因素,任务切换服务器610可以确定用户简档的具有与任务相关联的能力的一个或多个装置。作为另一因素,任务切换服务器610可以基于用户简档中包含的用户装置排名和/或任务特定装置排名确定哪些装置是优选的。作为另一因素,任务切换服务器610可以确定哪些装置最接近用户。作为另一因素,任务切换服务器610可以维持与任务相关联的一个或多个能力排名。举例来说,对于与查看图像或视频相关联的任务,任务切换服务器610可以基于显示大小确定和/或存储装置的能力排名。类似地,对于与播放音频相关联的任务,任务切换服务器610可以基于声音系统质量的度量(例如,扬声器的数目、扬声器的大小、音质等级和/或类似物)确定和/或存储装置的能力排名。任务切换服务器610可以基于这些和其它因素中的一个或多个对装置进行排名。
在一些实施例中,任务切换服务器610可以从最佳装置排名中排除并不具有与任务相关联的能力的任何装置。举例来说,对于“捕获图像”的任务,任务切换服务器610可以排除不具有相机的任何装置。另外或替代地,任务切换服务器610可以从最佳装置排名中排除不在用户附近(例如,在阈值距离内、在同一建筑物地板上和/或类似情形)的任何装置。另外或替代地,任务切换服务器610可以当任务涉及私用或敏感数据(例如,用户凭证、个人数据及类似物)时排除公用群组550中的装置。任务切换服务器610还可以从最佳装置排名中排除排名低于第一装置620的任何装置(例如,以使得任务将不传送到比第一装置620排名差的装置)。
作为一实例,任务切换服务器610可以接收执行“捕获图像”任务的请求。任务切换服务器610可以确定用户简档包含移动电话、两个平板计算机和具有相机功能的膝上型计算机。任务切换服务器610还可以确定针对“捕获图像”任务的用户偏好排名列出了在第一位置的平板计算机、在第二位置的移动电话和在第三位置的膝上型计算机。任务切换服务器610还可以确定两个平板计算机都在用户的阈值距离内,且平板计算机中的一个更接近。基于这些因素,任务切换服务器610可以选择较接近的平板计算机作为最佳装置。在其它实例中,任务切换服务器610可能已基于所述三个因素中的一个或多个而选择移动电话作为最佳装置(例如,如果没有平板计算机在用户附近),膝上型计算机作为最佳装置(例如,如果任务特定用户偏好排名列出膝上型计算机高于移动电话),或者某个或其它装置。
作为第二实例,任务切换服务器610可以接收执行“视频重放”任务的请求。任务切换服务器610可以确定用户简档包含具有能够显示电影的显示器的六个装置。任务切换服务器610还可以确定针对“视频重放”任务的用户偏好排名列出了在第一位置的电视机、在第二位置的平板计算机和在第三位置的移动电话。任务切换服务器610还可以确定能力排名指示在第一位置的电视机、在第二位置的桌上型计算机、在第三位置的膝上型计算机、在第四位置的平板计算机和在最后位置的移动电话。任务切换服务器610还可以确定平板计算机、膝上型计算机和移动电话在用户附近。基于这些和/或其它因素,任务切换服务器610可以选择装置中的一个或多个。举例来说,任务切换服务器610可以由于平板计算机在用户偏好排名上的较高位置而选择平板计算机,所述较高位置可能超过膝上型计算机在装置能力排名上的较高位置。
在步骤708,任务切换服务器610可以确定用于执行所请求任务的最高排名装置的可用性。任务切换服务器610可以发送可由最高排名装置接收的请求,所述最高排名装置可以用最高排名装置的可用性的指示响应任务切换服务器610。最高排名装置可以基于未检测到活动(例如,如果至少在阈值时间内未接收到用户交互,那么最高排名装置可以确定其可用),基于确定当前登入和或作用中用户而确定其可用性(例如,如果与第一装置620的用户不同的用户登入和/或与在最高排名装置上运行的一个或多个应用程序进行交互,那么最高排名装置可以确定其不可用)。
如果最高排名装置指示其不可用,和/或如果任务切换服务器610未从最高排名装置接收到响应,那么任务切换服务器610可以针对最佳装置排名中的第二排名装置重复步骤708。任务切换服务器610可以重复步骤708直到其找到排名高于第一装置620的可用装置。
在步骤709,任务切换服务器610可以将指示另一装置可用于执行所请求任务的通知发送到第一应用程序625。在一些实施例中,响应于接收到所述通知,第一应用程序625可以使第一装置620显示接受和/或拒绝任务切换的选项(例如,作为弹出式通知)。所述选项可以指示第二装置的身份和任务的身份(例如,“您想要在您的移动电话上签署此文档?”或“您想要在电视机上看此电影?”)。如果用户接受任务切换,那么第一应用程序625可以将接受的指示发送到任务切换服务器610。
在步骤710,第一应用程序625可以在等待第二装置630完成与任务交互和/或执行任务的同时暂停执行。在一些实施例中,第一应用程序625可以使第一装置620显示指示任务可以在第二装置630上执行的覆盖层。同时,第一应用程序625可以显示空白屏幕和/或停用对用户输入的响应(例如,忽略用户触摸屏输入、键盘输入和/或类似物),以使得用户停止与第一应用程序625交互。
在步骤711,响应于来自第一应用程序625的指示,任务切换服务器610可以发送致使在第二装置630执行下一任务(例如,通过在第二装置上执行的第二应用程序635和/或通过连接到在第二装置630上执行的客户端应用程序627的虚拟化应用程序)的指令。所述指令可以包含指示任务的一个或多个参数、可以执行任务的一个或多个应用程序、对与任务有关的数据的参考(例如,待显示视频的URL),和/或关于与任务有关的数据的信息(例如,数据的一个或多个格式)。另外或替代地,所述指令可以包含(或附接到)包括与任务有关的数据的数据有效负载(例如,用于签名的文档、用于重放的歌曲)。
在步骤712,第二装置630可以开始执行第二任务(例如,通过在第二装置上执行的第二应用程序635和/或通过连接到在第二装置630上执行的客户端应用程序637的虚拟化应用程序)。在一些实施例中,第二装置630和/或虚拟化服务器640可以最初在第二应用程序635尚未运行的情况下启动第二应用程序635。第二应用程序635可以随后访问由下一任务指令指示的特定状态。举例来说,任务切换服务器610可以与第二装置630(和/或虚拟化服务器640)的操作系统和用于执行任务的第二应用程序635兼容的格式发送指令。第二应用程序635在接收到指令之后即刻可以开始执行任务。
作为另一实例,任务切换服务器610可以发送指令,所述指令经配置以使在第二装置630上执行的虚拟化层启动虚拟化应用程序和/或将虚拟化应用程序设定为与在第一装置620上执行的第一应用程序625相同的状态。另外或替代地,任务切换服务器610可以在指令中包含用于在第二装置630上执行的虚拟或容器化应用程序的映像。第二装置630可以随后执行虚拟和/或容器化应用程序以执行第二任务。
在一些实施例中,所述指令可以使在第二装置630上执行的客户端应用程序637与虚拟化服务器640建立网络连接。第二装置630可以随后与在虚拟化服务器640上执行的虚拟化应用程序(例如,虚拟化第一应用程序625或虚拟化第二应用程序635)结合执行第二任务。
如果所述指令包含加密数据和/或凭证,那么第二装置630(和/或虚拟化服务器640)可以造成所述数据和/或凭证的解密(例如,使用共享秘密密钥)。第二装置630(和/或虚拟化服务器640)可以随后在执行任务之前访问所述数据和/或使用所述凭证访问与用户相关联的账户。因此,任务切换服务器610可能够以安全方式传送与私用数据和/或用户登入相关联的任务。
在步骤712执行下一任务期间或之后,第二装置630(和/或虚拟化服务器640)可以生成返回数据。举例来说,对于“签署文档”的任务,执行任务可以得到已签署的文档。作为另一实例,对于“编辑和图像”或“捕获图像”的任务,任务可以得到已编辑和/或捕获的图像。
参考图7D,在步骤713,可以将返回数据发送到任务切换服务器610。第二装置630(和/或虚拟化服务器640)还可以包含描述执行第二任务的应用程序的当前和/或下一状态的当前和/或下一任务信息(例如,针对第二任务和/或第三任务)作为返回数据的部分,如针对步骤705-706所描述。
在步骤714,任务切换服务器610可以将返回数据发送到第一应用程序625。任务切换服务器610还可以包含配置第一应用程序625以从对应于第二任务和/或跟随第二任务的第三任务的特定状态恢复执行的指令。
在步骤715,第一应用程序625可以恢复执行(例如,移除覆盖层且开始再次接受用户输入)。响应于来自任务切换服务器610的指令,第一装置620可以将第一应用程序625设定为用于显示任何返回数据和/或用于执行第三任务的新状态。
在执行步骤715之后,任务切换服务器610和/或第一应用程序625可以重复任何其它步骤。举例来说,第一应用程序625可以如针对步骤703所描述继续发送用户位置和/或如针对步骤705所描述确定当前和/或下一任务信息。任务切换服务器610可以继续监视器用户位置,从用户简档添加/移除装置,和接收任务信息,如在步骤703-706所描述。响应于接收到任务信息,任务切换服务器610可以致使再次执行步骤707-715中的任一个或全部。
在一些实施例中,在步骤714的返回数据中指定的第三任务可以基于与第三任务相关联的最佳装置排名而传送到与第一装置620和第二装置630不同的第三装置。随后可以将第三任务传送到第三装置,如上文关于将第二任务传送到第二装置所描述。
图8示出可由任务切换服务器610执行的方法。在步骤801,任务切换服务器610可以接收与正经由第一装置执行的第一任务有关的第二任务的指示(例如,第一任务可以在第一装置处执行和/或由经由第一装置访问的虚拟化服务器执行)。第二任务可以是第一装置准备好执行的任务(例如,因为第一装置的用户选择第二任务和/或第一装置将可能在完成第一任务之后执行第二任务)。因此,可以基于第一任务和/或指示在用户工作流中的下一任务将是什么任务的一个或多个情境信号而确定第二任务。
在步骤802,任务切换服务器610可以确定与第二任务相关联的一个或多个装置能力。装置能力可以包含所需的和/或优选的装置硬件和/或软件能力。任务切换服务器610可以存储与多个任务中的每一个相关联的一个或多个装置能力。
在步骤803,任务切换服务器610可以确定与第一装置的用户相关联的一个或多个装置。所述一个或多个装置可以是由用户拥有、由用户使用、在用户附近和/或另外与用户相关联的装置。此类装置可以出现在由任务切换服务器610维持的用户简档内。
在步骤804,任务切换服务器610可以从与用户相关联的一个或多个装置当中选择第二装置。第二装置可以是用于执行第二任务的最佳装置。任务切换服务器610可以对所述一个或多个装置进行排名且基于排名确定最佳装置。任务切换服务器610可以检验最佳装置可用于执行第二任务。
在步骤805,任务切换服务器610发送致使经由第二装置执行第二任务的指令(例如,第二任务可以在第二装置处执行和/或由经由第二装置访问的虚拟化服务器执行)。所述指令可以包含数据和/或对与第二任务相关联的数据的参考。所述指令可以使第二装置(和/或虚拟化服务器)访问数据,执行第二任务,随后将受到第二任务执行的影响的任何数据传输回到任务切换服务器610。在步骤806,任务切换服务器610可以使第一装置接收和/或显示产生于第二任务的执行的任何数据,和/或另外在执行第二任务之后继续操作。
尽管已经以特定地针对结构特征和/或方法动作的语言来描述主题,但应理解,所附权利要求书中所界定的主题未必限于上文所描述的特定特征或动作。实际上,上文所描述的具体特征和动作被描述为所附权利要求的实例实施方案。

Claims (20)

1.一种方法,其包括:
接收在第一装置上运行的应用程序准备好执行任务的指示;
确定与执行所述任务相关联的装置能力;
确定与所述第一装置的用户相关联的一个或多个装置,其中所述一个或多个装置中的每一个与所述装置能力相关联;
基于所述任务和与所述用户相关联的一个或多个用户偏好从所述一个或多个装置选择第二装置;以及
将指令发送到所述第二装置,其中所述指令使所述第二装置执行所述任务。
2.根据权利要求1所述的方法,其中所述装置能力是显示大小、输入装置的类型、输出装置的类型和网络连接的类型中的一个或多个。
3.根据权利要求1所述的方法,还包括:
从所述第二装置接收与所述第二装置相关联的一个或多个装置能力;以及
将所述第二装置和所述一个或多个装置能力添加到与所述用户相关联的简档。
4.根据权利要求3所述的方法,还包括:
在从所述第二装置接收所述一个或多个装置能力之前,且响应于确定所述用户在所述第二装置附近,向所述第二装置传输针对与所述第二装置相关联的所述一个或多个装置能力的请求。
5.根据权利要求1所述的方法,还包括:
接收通过在所述第二装置上执行所述任务而生成的数据;以及
将所述数据传输到所述第一装置。
6.根据权利要求5所述的方法,还包括:
向所述第一装置传输使所述第一装置显示所述数据的指令。
7.根据权利要求1所述的方法,还包括:
向所述第一装置发送使所述第一装置在所述第二装置执行所述任务的同时暂停在所述第一装置上运行的所述应用程序的执行的指令;以及
响应于所述第二装置完成所述任务,发送致使所述第一装置恢复在所述第一装置上运行的所述应用程序的执行的指令。
8.根据权利要求7所述的方法,其中所述指令还使所述第一装置在所述暂停期间显示指示所述第二装置在执行所述任务的消息。
9.根据权利要求1所述的方法,其中在所述第一装置上运行的所述应用程序准备好执行任务的所述指示包括所述应用程序尝试访问与所述装置能力相关联的虚拟装置的指示。
10.根据权利要求1所述的方法,其中在所述第一装置上运行的所述应用程序是网络浏览器,且在所述第一装置上运行的所述应用程序准备好执行任务的所述指示包括所述网络浏览器接收到对链接的选择的指示。
11.一种系统,其包括:
一个或多个处理器;
通信接口;以及
一个或多个存储指令的非暂时性计算机可读介质,所述指令当由所述一个或多个处理器执行时使所述系统:
经由所述通信接口接收与第一装置相关联的应用程序准备好执行任务的指示;
由所述一个或多个处理器确定与执行所述任务相关联的装置能力;
由所述一个或多个处理器确定与所述第一装置的用户相关联的一个或多个装置,其中所述一个或多个装置中的每一个具有所述装置能力;
由所述一个或多个处理器基于所述任务和与所述用户相关联的一个或多个用户偏好从所述一个或多个装置中选择第二装置;以及
经由所述通信接口将指令发送到所述第二装置,其中所述指令使所述第二装置执行所述任务。
12.根据权利要求11所述的系统,其中所述装置能力是显示大小、输入装置的类型、输出装置的类型和网络连接的类型中的一个或多个。
13.根据权利要求11所述的系统,其中所述一个或多个非暂时性计算机可读介质还存储指令,所述指令当由所述一个或多个处理器执行时使所述系统:
经由所述通信接口从所述第二装置接收与所述第二装置相关联的一个或多个装置能力;以及
由所述一个或多个处理器将所述第二装置和所述一个或多个装置能力添加到与所述用户相关联的简档。
14.根据权利要求13所述的系统,其中所述一个或多个非暂时性计算机可读介质还存储指令,所述指令当由所述一个或多个处理器执行时使所述系统:
在从所述第二装置接收所述一个或多个装置能力之前,且响应于确定所述用户在所述第二装置附近,经由所述通信接口向所述第二装置传输针对与所述第二装置相关联的所述一个或多个装置能力的请求。
15.根据权利要求11所述的系统,其中所述一个或多个非暂时性计算机可读介质还存储指令,所述指令当由所述一个或多个处理器执行时使所述系统:
经由所述通信接口接收通过在所述第二装置上执行所述任务而生成的数据;以及
经由所述通信接口将所述数据传输到所述第一装置。
16.根据权利要求15所述的系统,其中所述一个或多个非暂时性计算机可读介质还存储指令,所述指令当由所述一个或多个处理器执行时使所述系统:
经由所述通信接口向所述第一装置传输使所述第一装置显示所述数据的指令。
17.根据权利要求11所述的系统,其中所述一个或多个非暂时性计算机可读介质还存储指令,所述指令当由所述一个或多个处理器执行时使所述系统:
经由所述通信接口向所述第一装置发送使所述第一装置在所述第二装置执行所述任务的同时暂停在所述第一装置上运行的所述应用程序的执行的指令;以及
响应于所述第二装置完成所述任务,经由所述通信接口发送使所述第一装置恢复在所述第一装置上运行的所述应用程序的执行的指令。
18.根据权利要求17所述的系统,其中所述指令还使所述第一装置在所述暂停期间显示指示所述第二装置在执行所述任务的消息。
19.根据权利要求11所述的系统,其中在所述第一装置上运行的所述应用程序准备好执行任务的所述指示包括所述应用程序尝试访问与所述装置能力相关联的虚拟装置的指示。
20.根据权利要求11所述的系统,其中在所述第一装置上运行的所述应用程序是网络浏览器,且在所述第一装置上运行的所述应用程序准备好执行任务的所述指示包括所述网络浏览器接收到对链接的选择的指示。
CN201880051033.5A 2017-06-21 2018-05-15 自动基于工作流的装置切换 Pending CN110998528A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/629,118 US11385930B2 (en) 2017-06-21 2017-06-21 Automatic workflow-based device switching
US15/629,118 2017-06-21
PCT/US2018/032705 WO2018236491A1 (en) 2017-06-21 2018-05-15 AUTOMATIC DEVICE SWITCH BASED ON WORKFLOW

Publications (1)

Publication Number Publication Date
CN110998528A true CN110998528A (zh) 2020-04-10

Family

ID=62685120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880051033.5A Pending CN110998528A (zh) 2017-06-21 2018-05-15 自动基于工作流的装置切换

Country Status (4)

Country Link
US (1) US11385930B2 (zh)
EP (1) EP3642712A1 (zh)
CN (1) CN110998528A (zh)
WO (1) WO2018236491A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023173856A1 (zh) * 2022-03-17 2023-09-21 荣耀终端有限公司 一种数据传输方法及系统

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019039119A1 (ja) * 2017-08-23 2019-02-28 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US10699706B1 (en) * 2017-09-26 2020-06-30 Amazon Technologies, Inc. Systems and methods for device communications
US10855667B2 (en) * 2018-06-01 2020-12-01 Paypal, Inc. Using keys with targeted access to the blockchain to verify and authenticate identity
US11736444B2 (en) * 2018-09-21 2023-08-22 Nagrastar Llc Cloud-based private area network
US11438435B2 (en) * 2019-03-01 2022-09-06 Microsoft Technology Licensing, Llc User interaction and task management using multiple devices
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US11314558B2 (en) * 2019-07-23 2022-04-26 Netapp, Inc. Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof
US11283635B2 (en) * 2019-09-28 2022-03-22 Intel Corporation Dynamic sharing in secure memory environments using edge service sidecars
CN110991983B (zh) * 2019-11-05 2023-10-13 泰康保险集团股份有限公司 一种任务处理方法、装置、介质和设备
US11368579B1 (en) * 2019-12-12 2022-06-21 Amazon Technologies, Inc. Presence-based notification system
WO2021138635A1 (en) * 2019-12-31 2021-07-08 Google Llc Operating system-level assistive features for contextual privacy
US20220335362A1 (en) * 2021-04-20 2022-10-20 At&T Intellectual Property I, L.P. Artificial intelligence-based business process management visualization, development and monitoring

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101568902A (zh) * 2007-07-18 2009-10-28 佳能株式会社 装置管理设备、作业流处理方法和任务协作处理系统
US20120254966A1 (en) * 2011-04-04 2012-10-04 Lansing Arthur Parker Apparatus for secured distributed computing
US20140351175A1 (en) * 2012-09-28 2014-11-27 Cerner Innovation, Inc. Automated workflow access based on prior user activity
CN104919420A (zh) * 2012-11-20 2015-09-16 三星电子株式会社 从可穿戴电子设备委托处理
CN105324754A (zh) * 2013-06-03 2016-02-10 微软技术许可有限责任公司 跨设备的任务继续
US20160080475A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Cross Device Application Discovery And Control
CN105493070A (zh) * 2013-09-27 2016-04-13 迈克菲股份有限公司 用于高效数据共享的任务上下文架构
CN106257960A (zh) * 2015-06-18 2016-12-28 中兴通讯股份有限公司 多设备协同操作的方法及设备

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154027A1 (en) * 1998-10-14 2004-08-05 Jean-Jacques Vandewalle Method and means for managing communications between local and remote objects in an object oriented client server system in which a client application invokes a local object as a proxy for a remote object on the server
US20050021712A1 (en) * 2003-01-24 2005-01-27 Constantin Chassapis Multi-user, multi-device remote access system
KR100739715B1 (ko) * 2005-07-12 2007-07-13 삼성전자주식회사 웹서비스 정책 합의를 수행하는 장치 및 방법
EP1760584A1 (en) 2005-08-23 2007-03-07 Research In Motion Limited Method and system for transferring an application state from a first electronic device to a second electronic device
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
EP2371110A4 (en) * 2008-12-29 2017-04-19 IDTP Holdings, Inc. Method and device for installing applications on nfc-enabled devices
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US8495193B2 (en) * 2010-02-23 2013-07-23 Microsoft Corporation Centralized management tool for remote presentation session server farms
US20120066607A1 (en) * 2010-09-13 2012-03-15 Zerodesktop, Inc. Sharing and Management of Transferable Virtual Desktop
US20120209923A1 (en) * 2011-02-12 2012-08-16 Three Laws Mobility, Inc. Systems and methods for regulating access to resources at application run time
US8996976B2 (en) * 2011-09-06 2015-03-31 Microsoft Technology Licensing, Llc Hyperlink destination visibility
US20140032733A1 (en) * 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US20130159376A1 (en) * 2011-12-15 2013-06-20 Charles Moore Systems and methods for a computing resource broker agent
US10243786B2 (en) 2013-05-20 2019-03-26 Citrix Systems, Inc. Proximity and context aware mobile workspaces in enterprise systems
WO2015134781A1 (en) * 2014-03-06 2015-09-11 Radius Mobile, Inc. Identifying proximity history of computer devices
US10795707B2 (en) * 2014-05-14 2020-10-06 Peter McClelland Hay Systems and methods for ensuring computer system security via a virtualized layer of application abstraction
US9386079B2 (en) * 2014-06-10 2016-07-05 American Megatrends, Inc. Method and system of virtual desktop infrastructure deployment studio
US9405582B2 (en) * 2014-06-20 2016-08-02 International Business Machines Corporation Dynamic parallel distributed job configuration in a shared-resource environment
US9898320B2 (en) * 2014-06-28 2018-02-20 Vmware, Inc. Using a delta query to seed live migration
US9588796B2 (en) * 2014-06-28 2017-03-07 Vmware, Inc. Live migration with pre-opened shared disks
CN104123191A (zh) 2014-07-31 2014-10-29 北京智谷睿拓技术服务有限公司 任务迁移控制方法、装置和系统
US10635296B2 (en) * 2014-09-24 2020-04-28 Microsoft Technology Licensing, Llc Partitioned application presentation across devices
US20160127465A1 (en) * 2014-10-31 2016-05-05 Bedrock Data, Inc. Cross-platform data synchronization
US20160164696A1 (en) 2014-12-08 2016-06-09 Ebay Inc. Modular internet of things
US9894185B2 (en) * 2014-12-16 2018-02-13 Software Ag System and method for condition-based application logic shifting between a client and a server
US9563454B2 (en) * 2015-02-03 2017-02-07 International Business Machines Corporation Using a mobile device to transfer virtual machine between computers while preserving session
US10191914B2 (en) * 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US20160378570A1 (en) * 2015-06-25 2016-12-29 Igor Ljubuncic Techniques for Offloading Computational Tasks between Nodes
US9811376B2 (en) * 2015-06-29 2017-11-07 Amazon Technologies, Inc. Virtual machine instance migration using a triangle approach
US10127403B2 (en) 2015-07-30 2018-11-13 Samsung Electronics Co., Ltd. Computing system with privacy control mechanism and method of operation thereof
US11537419B2 (en) * 2016-12-30 2022-12-27 Intel Corporation Virtual machine migration while maintaining live network links

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101568902A (zh) * 2007-07-18 2009-10-28 佳能株式会社 装置管理设备、作业流处理方法和任务协作处理系统
US20120254966A1 (en) * 2011-04-04 2012-10-04 Lansing Arthur Parker Apparatus for secured distributed computing
US20140351175A1 (en) * 2012-09-28 2014-11-27 Cerner Innovation, Inc. Automated workflow access based on prior user activity
CN104919420A (zh) * 2012-11-20 2015-09-16 三星电子株式会社 从可穿戴电子设备委托处理
CN105324754A (zh) * 2013-06-03 2016-02-10 微软技术许可有限责任公司 跨设备的任务继续
CN105493070A (zh) * 2013-09-27 2016-04-13 迈克菲股份有限公司 用于高效数据共享的任务上下文架构
US20160080475A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Cross Device Application Discovery And Control
CN106257960A (zh) * 2015-06-18 2016-12-28 中兴通讯股份有限公司 多设备协同操作的方法及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHII CHANG: "Towards a context-aware solution for device failures in service-oriented workflow" *
申智勇;李春林;李方云;AL-GABRI MALEK;: "普适网格中移动设备的迁移策略" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023173856A1 (zh) * 2022-03-17 2023-09-21 荣耀终端有限公司 一种数据传输方法及系统

Also Published As

Publication number Publication date
WO2018236491A1 (en) 2018-12-27
EP3642712A1 (en) 2020-04-29
US11385930B2 (en) 2022-07-12
US20180373568A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
US11385930B2 (en) Automatic workflow-based device switching
US11108845B2 (en) Rendering a web application in a cloud service
CN107925685B (zh) 用于安全网页浏览的重定向器
US9774658B2 (en) Orchestration framework for connected devices
EP3741100A1 (en) In-band voice-assistant/concierge for controlling online meetings
US11392395B2 (en) Generating and presenting contextual user interfaces on devices with foldable displays
WO2021243565A1 (en) Dynamic recommendation engine
US11783066B2 (en) Securely sharing files with user devices based on location
US20190394255A1 (en) Intermediated retrieval of networked content
US20230328147A1 (en) Smart notification system
US11675964B2 (en) Management of remote access user application layouts
US20240004685A1 (en) Virtual Machine Managing System Using Snapshot
US20230195824A1 (en) Smart Content Redirection System
CN113557503A (zh) 智能文件推荐引擎
WO2022052038A1 (en) Systems and methods for application access
WO2022261830A1 (en) Mechanisms for secure user input
WO2022026996A1 (en) Web client with response latency awareness
US20230148314A1 (en) Fast Launch Based on Hibernated Pre-launch Sessions
US20230275954A1 (en) Remote browser session presentation with local browser tabs
WO2024060133A1 (en) Dynamic sharing of web-content
WO2023050425A1 (en) Centralized resource management for disparate communication platforms

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200410