CN107852585A - 改进经包装应用程序的性能 - Google Patents

改进经包装应用程序的性能 Download PDF

Info

Publication number
CN107852585A
CN107852585A CN201680044769.0A CN201680044769A CN107852585A CN 107852585 A CN107852585 A CN 107852585A CN 201680044769 A CN201680044769 A CN 201680044769A CN 107852585 A CN107852585 A CN 107852585A
Authority
CN
China
Prior art keywords
application program
cache memory
size
packaged
execution
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.)
Granted
Application number
CN201680044769.0A
Other languages
English (en)
Other versions
CN107852585B (zh
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 CN107852585A publication Critical patent/CN107852585A/zh
Application granted granted Critical
Publication of CN107852585B publication Critical patent/CN107852585B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供用于使用应用程序包装器确保移动装置应用程序安全同时保持和/或改进所述经包装应用程序的性能的系统、方法和计算机可读媒体。在一个或多个实施例中,应用程序包装器能够在经包装应用程序的执行期间检测由所述应用程序包装器所引起的至少一个性能。所述应用程序包装器能够修改所述经包装应用程序的执行以解决所述至少一个检测到的性能问题。在一些例子中,所述至少一个性能问题能够与存储来自数据库的一个或多个页面的高速缓冲存储器相关联,且所述高速缓冲存储器和所述数据库能够维持在所述经包装应用程序内。

Description

改进经包装应用程序的性能
相关申请的交叉引用
本申请主张2015年7月15日提交的标题为改进经包装应用程序的性能(IMPROVINGPERFORMANCE OF A WRAPPED APPLICATION)的美国非临时专利申请第14/800,371号的优先权,所述美国非临时专利申请出于所有目的以引用方式并入本文中。
背景技术
本公开的方面涉及计算机硬件和软件。具体地说,本公开的一个或多个方面大体上涉及用于改进经包装应用程序的性能的计算机硬件和软件。
移动装置在个人使用和商业使用中正变得越来越普遍。公司和其它组织为其雇员和其它公司人员提供,和/或另外使其雇员和其它公司人员能够使用移动装置,例如智能手机、平板电脑和其它移动计算装置。随着这些装置持续变得普及且功能不断增多,许多组织可能希望确保在此类装置上执行的软件应用程序是安全且可靠的,以保护装置用户且保护组织自身以及其自身的计算机系统和网络。
然而,由于公司和其它组织采取措施来确保移动装置安全,因此如果不进行改进,那么可能难以在保持此类移动装置和可在这些装置上执行的软件的高效和有效性能的同时实现所要安全性等级。
发明内容
以下呈现本文中所描述的各种方面的简化概述。此概述并非广泛综述,且并不希望识别关键或重要要素或划定权利要求书的范围。以下概述仅按简化形式呈现一些概念,作为对下文提供的更详细描述的介绍性序言。
本公开的方面提供高效、有效、方便且可扩展技术,用于确保移动装置和/或可在此类装置上执行的软件的安全同时保持这些装置和/或这些装置可执行的软件的高效和有效性能。
在一些例子中,组织可通过使用应用程序包装器来包装软件应用程序而确保特定移动装置和/或特定软件应用程序(其例如可由移动装置执行)安全。此应用程序包装器可例如提供策略强制执行层,所述策略执行层可拦截到应用程序的输入、来自应用程序的输出和/或由应用程序作出的函数调用,以修改和/或另外更改执行应用程序可采用的典型和/或默认方式。具体地说,应用程序包装器可在应用程序上强制执行一个或多个策略(其可例如在一个或多个策略文件中定义),所述一个或多个策略可由寻求确保移动装置和/或特定应用程序安全的组织设定。策略可例如防止当移动装置和/或应用程序处于一个或多个特定状态(例如,如果装置处于受限位置,如果装置连接到不安全网络,如果一个或多个其它特定程序打开和/或在装置上运行等)时使用应用程序的特定特征。因此,在强制执行此类策略时,应用程序包装器可基于装置状态信息(其例如通过应用程序包装器和/或通过可安装在装置上且可与应用程序包装器通信的移动装置管理代理监测)选择性地启用和/或选择性地停用应用程序的一个或多个特定特征。
通过确保移动装置和/或具有应用程序包装器的特定移动装置应用程序安全,组织可能例如能够控制供多个不同企业用户(其可以是例如组织和/或另外与组织相关联的雇员)使用的多个不同移动装置如何执行应用程序。然而,在一些例子中,以此方式使用应用程序包装器来包装应用程序可能会不利地影响经包装应用程序在执行期间的性能。举例来说,应用程序可能耗费不可接受的时间量来响应特定命令,且在一些例子中,可能由于应用程序包装器当在经包装应用程序的执行期间强制执行策略时执行额外处理而完全超时。
然而,通过实施本公开的各种方面,组织可能能够确保移动装置和/或使用应用程序包装器的特定移动装置应用程序安全,同时保持和/或改进经包装应用程序在执行期间的性能。
举例来说,下文更详细地论述的一些实施例涉及用于改进经包装应用程序的执行性能的技术。具体地说,在下文所论述的一些布置中,应用程序包装器可在经包装应用程序的执行期间检测由应用程序包装器所引起的至少一个性能问题。基于检测至少一个性能问题,应用程序包装器可修改经包装应用程序的执行以处理至少一个检测到的性能问题。在一些例子中,性能问题可能与存储来自数据库的一个或多个页面(其可例如在执行期间由经包装应用程序访问和/或另外供经包装应用程序使用)的高速缓冲存储器相关联。此外,在检测至少一个性能问题时,应用程序包装器可监测和/或分析一个或多个性能参数,例如完成与高速缓冲存储器相关联的一个或多个交易所需的时间量、高速缓冲存储器未命中率、高速缓冲存储器的大小、页面错误率和/或正在高速缓冲存储器上执行的交易。在一些例子中,应用程序包装器可持久地存储性能参数的值且在未来时间和/或在应用程序的新的执行期间利用此历史数据。在一些例子中,应用程序包装器可通过修改高速缓冲存储器的大小来处理和/或解决性能问题。在一些例子中,当经包装应用程序继续执行时应用程序包装器可重复对各种性能问题的检测和对各种参数的修改,以处理此类问题。
通过在下文进一步详细论述的本公开的益处,将了解这些和额外方面。
附图说明
可以通过参考考虑附图的以下描述来获取对本文中所描述的方面和其优点的更完整理解,其中相似参考数字指示相似特征,且在附图中:
图1描绘可根据本文中所描述的一个或多个说明性方面使用的说明性计算机系统架构。
图2描绘可根据本文中所描述的一个或多个说明性方面使用的说明性远程访问系统架构。
图3描绘可根据本文中所描述的一个或多个说明性方面使用的说明性企业移动性管理系统。
图4描绘可根据本文中所描述的一个或多个说明性方面使用的另一说明性企业移动性管理系统。
图5描绘包含根据本文中所论述的一个或多个说明性方面的经包装应用程序的移动计算设备的实例。
图6到图8描绘说明根据本文中所论述的一个或多个说明性方面的改进经包装应用程序的执行性能的方法的流程图。
具体实施方式
在各种实施例的以下描述中,参考上文指出且形成本文的一部分的附图,且其中借助于说明示出可实践本文中所描述的方面的各种实施例。应理解,在不脱离本文中所描述的范围的情况下,可利用其它实施例,且可进行结构和功能修改。各种方面能够有其它实施例且能够以各种不同方式实践或实行。
应理解,本文中使用的措词和术语是出于描述的目的且不应被看作是限制性的。相反地,应对本文中所使用的短语和术语给予其最广泛的解释和意义。“包含”和“包括”和其变体的使用意指涵盖其后列出的项目和其等效物以及额外项目和其等效物。术语“安装”、“连接”、“耦合”、“定位”、“接合”和类似术语的使用意指包含直接和间接安装、连接、耦合、定位和接合两种。
计算架构
可在包含独立式、联网、远程访问(又名,远程桌面)、虚拟化和/或基于云的环境等多种不同系统环境中利用计算机软件、硬件和网络。图1说明可用以在独立式和/或联网环境中实施本文中所描述的一个或多个说明性方面的系统架构和数据处理装置的一个实例。各种网络节点103、105、107和109可经由例如因特网等广域网(WAN)101互连。也可或替代地使用其它网络,包含私用内联网、公司网络、LAN、城域网(MAN)无线网络、个人网络(PAN)等。网络101是出于说明的目的,且可由较少或额外计算机网络替换。局域网(LAN)可具有任何已知LAN拓扑中的一个或多个,且可使用多种不同协议(例如以太网)中的一个或多个。装置103、105、107、109和其它装置(未示出)可经由双绞线电线、同轴电缆、光纤、无线电波或其它通信媒介连接到网络中的一个或多个。
如本文中所使用且在图式中描绘的术语“网络”不仅指远程存储装置经由一个或多个通信路径耦合在一起的系统,而且指可不时地耦合到具有存储能力的此类系统的独立装置。因此,术语“网络”不仅包含“物理网络”,而且包含“内容网络”,其包括可归于驻留在所有物理网络上的单个实体的数据。
组件可包含数据服务器103、网页服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的整体访问、控制和管理,以用于执行本文中所描述的一个或多个说明性方面。数据服务器103可连接到网络服务器105,经由所述网络服务器105,用户按请求与数据交互和获得数据。替代地,数据服务器103可充当网络服务器自身且直接连接到因特网。数据服务器103可通过网络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)的功能性可跨多个数据处理装置散布,例如,以跨多个计算机分布处理负载,从而基于地理位置、用户访问级别、服务质量(QoS)等分隔交易。
一个或多个方面可由如本文中所描述的一个或多个计算机或其它装置执行的计算机可用或可读数据和/或计算机可执行指令来体现,例如在一个或多个程序模块中体现。通常,程序模块包含在由计算机或其它装置中的处理器执行时执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。模块可以随后被编译供执行的源代码编程语言来编写,或可以例如(但不限于)超文本标记语言(HTML)或可扩展标记语言(XML)的脚本语言来编写。计算机可执行指令可存储于例如非易失性存储装置等计算机可读媒体上。可利用任何合适的计算机可读存储媒体,包含硬盘、CD-ROM、光学存储装置、磁性存储装置和/或其任何组合。此外,如本文中所描述的表示数据或事件的各种传输(非存储)媒介可以穿过例如金属线、光纤和/或无线传输媒介(例如,空气和/或空间)等信号传导媒介的电磁波的形式在来源与目的地之间传递。本文中所描述的各种方面可体现为方法、数据处理系统或计算机程序产品。因此,可全部或部分地以软件、固件和/或硬件或硬件等效物(例如,集成电路、现场可编程门阵列(FPGA)和类似物)来体现各种功能性。可使用特定数据结构来更有效地实施本文中所描述的一个或多个方面,且预期此类数据结构在本文中所描述的计算机可执行指令和计算机可用数据的范围内。
进一步参看图2,可在远程访问环境中实施本文中所描述的一个或多个方面。图2描绘包含在可根据本文中所描述的一个或多个说明性方面使用的说明性计算环境200中的通用计算装置201的实例系统架构。可将通用计算装置201用作配置成提供用于客户端访问装置的虚拟机的单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a。通用计算装置201可具有处理器203,用于控制对服务器和包含RAM 205、ROM 207、I/O模块209和存储器215的服务器相关联组件的整体操作。
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可包含用于在例如计算机网络230(例如,因特网)的WAN 229上建立通信的调制解调器227或其它广域网接口。将了解,所示出的网络连接是说明性的,且可使用在计算机之间建立通信链路的其它构件。计算装置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上执行的应用程序所产生的显示输出。精简客户端或远程显示协议可以是以下非详尽性协议列表中的任一个:由佛罗里达劳德代尔堡(Ft.Lauderdale,Florida)的思杰系统(Citrix Systems)公司开发的独立计算架构(ICA)协议;或由华盛顿雷德蒙德(Redmond,Washington)的微软(Microsoft)公司制造的远程桌面协议(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服务器、防火墙、网络服务器、应用程序服务器,或作为主应用程序服务器、执行活动目录的服务器,或执行提供防火墙功能性、应用程序功能性或负载平衡功能性的应用程序加速程序的服务器。还可使用其它服务器类型。
一些实施例包含第一服务器106a,其接收来自客户端机器240的请求,将请求转发到第二服务器106b,且用来自第二服务器106b的响应来响应由客户端机器240产生的请求。第一服务器106a可获取可用于客户端机器240的应用程序的列举,以及与代管在应用程序的列举内识别的应用程序的应用程序服务器206相关联的地址信息。第一服务器106a可接着使用网络接口呈现对客户端的请求的响应,且直接地与客户端240通信以为客户端240提供对经识别应用程序的访问。一个或多个用户端240和/或一个或多个服务器206可经由例如网络101等网络230发射数据。
图2示出说明性桌面虚拟化系统的高阶架构。如所示出,桌面虚拟化系统可以是单服务器或多服务器系统或云系统,包含配置成对一个或多个客户端访问装置240提供虚拟桌面和/或虚拟应用程序的至少一个虚拟化服务器206。如本文中所使用,桌面指可在其中代管和/或执行一个或多个应用程序的图形环境或空间。桌面可包含图形壳层,其提供用于其中可整合本地和/或远程应用程序的操作系统的例子的用户接口。应用程序可包含在已装载操作系统(且任选地,还有桌面)的例子后执行的程序。操作系统的每个例子可以是物理的(例如,每个装置一个操作系统)或虚拟(例如,在单个装置上运行的OS的许多例子)。每个应用程序可在本地装置上执行,或在位于远处的装置(例如,远程)上执行。
企业移动性管理架构
图3表示用于在BYOD环境中使用的企业移动性技术架构300。架构使客户端装置(例如,移动装置)302的用户能够访问来自移动装置302的企业或个人资源两种且将移动装置302用于个人用途。用户可使用由用户购买的移动装置302或由企业提供给用户的移动装置302访问此类企业资源304或企业服务308。用户可仅将移动装置302用于商业用途,或用于商业和个人用途。移动装置可运行iOS操作系统,和Android操作系统等。企业可选择实施管理移动装置302的策略。可按以下方式经由防火墙或网关植入所述策略:可识别、安全化或安全验证移动装置,并提供对企业资源的选择性访问或完全访问。策略可以是移动装置管理策略、移动应用程序管理策略、移动数据管理策略,或移动装置、应用程序与数据管理策略的某种组合。通过应用移动装置管理策略管理的移动装置302可被称作已经登记的装置。
在一些实施例中,移动装置的操作系统可被分成受管理分割区310和未管理分割区312。受管理分割区310可具有应用到其以使在受管理分割区上运行的应用程序和存储于受管理分割区中的数据安全的策略。在受管理分割区上运行的应用程序可以是安全应用程序。在其它实施例中,所有应用程序可根据与应用程序分开接收的一个或多个策略文件的集合而执行,且所述一个或多个策略文件定义一个或多个安全参数、特征、资源限制和/或当所述应用程序正在装置上执行时由移动装置管理系统强制执行的其它访问控制。通过根据其相应策略文件进行操作,每个应用程序可允许或限于与一个或多个其它应用程序和/或资源通信,由此创建虚拟分割区。因此,如本文中所使用,分割区可指存储器的物理上分割的部分(物理分割区)、存储器的逻辑分割的部分(逻辑分割区)和/或如本文中所描述,通过跨多个应用程序强制执行一个或多个策略和/或策略文件而创建的虚拟分割区(虚拟分割区)。换句话说,通过对受管理应用程序强制执行策略,那些应用程序可限于仅能够与其它受管理应用程序和可信的企业资源通信,借此创建未管理应用程序和装置无法进入的虚拟分割区。
安全应用程序可以是电子邮件应用程序、网页浏览应用程序、软件即服务(software-as-a-service,SaaS)访问应用程序、Windows Application访问应用程序等。安全应用程序可为安全原生应用程序314、由安全应用程序启动器318执行的安全远程应用程序322、由安全应用程序启动器318执行的虚拟化应用程序326等。安全原生应用程序314可由安全应用程序包装器320包装。安全应用程序包装器320可包含当在装置上执行安全原生应用程序时在移动装置302上执行的整合策略。安全应用程序包装器320可包含元数据,所述元数据使在移动装置302上运行的安全原生应用程序314指向在企业处代管的资源,在执行安全原生应用程序314后,安全原生应用程序314可能需要所述资源来完成请求的任务。由安全应用程序启动器318执行的安全远程应用程序322可在安全应用程序启动器应用程序318内执行。由安全应用程序启动器318执行的虚拟化应用程序326可利用移动装置302上、企业资源304处的资源等。由安全应用程序启动器318执行的虚拟化应用程序326在移动装置302上使用的资源可包含用户交互资源、处理资源等。用户交互资源可用以收集和发射键盘输入、鼠标输入、相机输入、触觉输入、音频输入、视觉输入、示意动作输入等。处理资源可用以呈现用户接口,处理从企业资源304接收的数据等。由安全应用程序启动器318执行的虚拟化应用程序326在企业资源304处使用的资源可包含用户接口产生资源、处理资源等。用户接口产生资源可用以汇编用户接口、修改用户接口、刷新用户接口等。处理资源可用以创建信息、读取信息、更新信息、删除信息等。举例来说,虚拟化应用程序可记录与图形用户接口(GUI)相关联的用户交互,且将其传达到服务器应用程序,其中服务器应用程序将使用用户交互数据作为到在服务器上操作的应用程序的输入。在此布置中,企业可选择维持服务器侧上的应用程序,以及与应用程序相关联的数据、文件等。虽然企业可通过确保一些应用程序安全以供在移动装置上部署来根据本文中的原理选择“调动”一些应用程序,但也可以针对特定应用程序选择此布置。举例来说,虽然可确保一些应用程序安全以供在移动装置上使用,但是其它应用程序可能未做准备,或可能不适合在移动装置上部署,因此企业可选择通过虚拟化技术向移动用户提供对未准备的应用程序的访问。作为另一实例,企业可能具有大且复杂的数据集的大且复杂的应用程序(例如,材料资源计划应用程序),其中针对移动装置定制应用程序将很困难或不合需要,因此企业可选择通过虚拟化技术提供对应用程序的访问。作为又一实例,企业可能具有维持高度安全的数据(例如,人力资源数据、客户数据、工程数据)的应用程序,所述高度安全的数据可被企业认为对于即时安全的移动环境也过于敏感,因此企业可选择使用虚拟化技术来准许对此类应用程序和数据的移动访问。企业可选择在移动装置上提供充分安全且充分功能性的应用程序,以及提供虚拟化应用程序,以允许对被认为在服务器侧上操作更恰当的应用程序的访问。在实施例中,虚拟化应用程序可在安全存储位置中的一个中将一些数据、文件等存储在移动电话上。举例来说,企业可选择允许在通电话中存储某些信息,同时不准许其它信息。
关于虚拟化应用程序,如本文中所描述,移动装置可具有设计成呈现GUI且接着记录与GUI的用户交互的虚拟化应用程序。应用程序可将用户交互传达到服务器侧,以由服务器侧应用程序用作与所述应用程序的用户交互。作为响应,服务器侧上的应用程序可将新GUI发射回到移动装置。举例来说,新GUI可以是静态页面、动态页面、动画等,由此提供对位于远处的资源的访问。
安全应用程序可访问存储于移动装置的受管理分割区310中的安全数据容器328中的数据。安全数据容器中安全的数据可由经安全包装的应用程序314、由安全应用程序启动器322执行的应用程序、由安全应用程序启动器322执行的虚拟化应用程序326等访问。存储于安全数据容器328中的数据可包含文件、数据库等。存储于安全数据容器328中的数据可包含限于特定安全应用程序330、在安全应用程序332之间共享的数据等。限于安全应用程序的数据可包含一般安全数据334和高度安全数据338。一般安全数据可使用例如高级加密标准(AES)128位加密等强加密形式,而高度安全数据338可使用例如AES 256位加密等极强加密形式。在从装置管理器324接收到命令后,可从装置删除存储于安全数据容器328中的数据。安全应用程序可具有双模式选项340。双模式选项340可向用户呈现在不安全或未管理模式中操作安全的应用程序的选项。在不安全或未管理模式中,安全应用程序可访问存储于移动装置302的未管理分割区312上的不安全数据容器342中的数据。存储于不安全数据容器中的数据可以是个人数据344。存储于不安全数据容器342中的数据也可以由正在移动装置302的未管理分割区312上运行的不安全应用程序548访问。当从移动装置302删除存储于安全数据容器328中的数据时,存储于不安全数据容器342中的数据可保持在移动装置302上。企业可能想要从移动装置删除由企业拥有、许可或控制的所选定的或所有数据、文件和/或应用程序(企业数据),同时留下或以其它方式保存由用户拥有、许可或控制的个人数据、文件和/或应用程序(个人数据)。此操作可被称作选择性擦除。通过根据本文中所描述的方面布置的企业和个人数据,企业可执行选择性擦除。
移动装置可连接到在企业处的企业资源304和企业服务308,连接到公用因特网348等等。移动装置可经由虚拟专用网络连接连接到企业资源304和企业服务308。也被称作microVPN或专用VPN的虚拟专用网络连接可针对特定应用程序350、特定装置、移动装置上的特定安全区域等352。举例来说,电话的安全区域中的经包装应用程序中的每一个可经由专用VPN来访问企业资源,使得将可能结合用户或装置属性信息基于与应用程序相关联的属性来授予对VPN的访问。虚拟专用网络连接可携载微软交换(Microsoft Exchange)业务、微软活动目录(Microsoft Active Directory)业务、超文本传送协议(HTTP)业务、安全超文本传送协议(HTTPS)业务、应用程序管理业务等。虚拟专用网络连接可支持和实现单点登录验证过程354。单点登录过程可允许用户提供验证证书的单个集合,所述验证证书接着由验证服务358检验。验证服务358可接着准予用户访问多个企业资源304,而不需要用户将验证证书提供到每一个别企业资源304。
虚拟专用网络连接可由访问网关360建立和管理。访问网关360可包含管理、加速和改进企业资源304到移动装置302的递送的性能增强特征。访问网关还可重新投送从移动装置302到公用因特网348的业务,从而使移动装置302能够访问在公用因特网348上运行的公开可用且不安全的应用程序。移动装置可经由传输网络362连接到访问网关。传输网络362可以是有线网络、无线网络、云网络、局域网、城域网、广域网、公用网络、专用网络等。
企业资源304可包含电子邮件服务器、文件共享服务器、SaaS应用程序、Web应用程序服务器、Windows应用程序服务器等。电子邮件服务器可包含Exchange服务器、LotusNotes服务器等。文件共享服务器可包含ShareFile服务器等。SaaS应用程序可包含Salesforce等。Windows应用程序服务器可包含建造成提供既定在本地Windows操作系统等上运行的应用程序的任何应用程序服务器。企业资源304可以是内建式资源、基于云的资源等。企业资源304可由移动装置302直接或经由访问网关360访问。企业资源304可由移动装置302经由传输网络362访问。传输网络362可以是有线网络、无线网络、云网络、局域网、城域网、广域网、公用网络、专用网络等。
企业服务308可包含验证服务358、威胁检测服务364、装置管理器服务324、文件共享服务368、策略管理器服务370、社交整合服务372、应用程序控制器服务374等。验证服务358可包含用户验证服务、装置验证服务、应用程序验证服务、数据验证服务等。验证服务358可使用证书。证书可由企业资源304等存储在移动装置302上。存储在移动装置302上的证书可存储于移动装置上的经加密位置中,所述证书可临时存储于移动装置302上,以供在验证时和类似情况使用。威胁检测服务364可包含入侵检测服务、未授权访问尝试检测服务等。未授权访问尝试检测服务可包含访问装置、应用程序、数据等的未授权尝试。装置管理服务324可包含配置、布建、安全、支持、监视、报告和解除授权服务。文件共享服务368可包含文件管理服务、文件存储服务、文件合作服务等。策略管理器服务370可包含装置策略管理器服务、应用策略管理器服务、数据策略管理器服务等。社交整合服务372可包含联系人整合服务、合作服务、与例如Facebook、Twitter和LinkedIn等社交网络的整合等。应用程序控制器服务374可包含管理服务、布建服务、部署服务、指派服务、撤销服务、包装服务等。
企业移动性技术架构300可包含应用程序商店378。应用程序商店378可包含未包装应用程序380、预包装应用程序382等。可从应用程序控制器374将应用程序填入应用程序商店378中。应用程序商店378可由移动装置302通过访问网关360、通过公用因特网348等访问。应用商店程序可具备直观且易于使用的用户接口。
软件开发工具包384可向用户提供通过如先前在本说明书中所描述包装应用程序而确保由用户选择的应用程序安全的能力。接着通过使用应用程序控制器374将已使用软件开发工具包384包装的应用程序填入应用程序商店378中,可使所述应用程序供移动装置302使用。
企业移动性技术架构300可包含管理和分析能力388。管理和分析能力388可提供与使用资源的方式、使用资源的频率等有关的信息。资源可包含装置、应用程序、数据等。使用资源的方式可包含哪些装置下载哪些应用程序,哪些应用程序访问哪些数据等。使用资源的频率可包含已下载应用程序的频率、应用程序访问特定数据集的次数等。
图4是另一说明性企业移动性管理系统400。为简单起见,已省略上文参看图3所描述的移动性管理系统300的组件中的一些。图4中所描绘的系统400的架构在许多方面类似于上文参看图3所描述的系统400的架构,且可包含上文未提到的额外特征。
在此状况下,左侧表示已向客户端代理404登记的客户端装置(例如,移动装置)402,其与网关服务器406(其包含访问网关和应用程序控制器功能性)交互以访问各种企业资源408和服务409,例如Exchange、Sharepoint、公钥基础架构(PKI)资源、Kerberos资源、证书发布服务,如在右侧上方所示出。虽然未具体示出,但移动装置402还可与企业应用程序商店(StoreFront)交互以进行应用程序的选择和下载。
客户端代理404充当用于在企业数据中心中代管的Windows应用程序/桌面的UI(用户接口)中间物,使用高清用户体验(HDX)/ICA显示远程协议来访问所述Windows应用程序/桌面。客户端代理404还支持在移动装置402上的原生应用程序(例如原生iOS或Android应用程序)的安装和管理。举例来说,在上图中示出的受管理的应用程序410(邮件、浏览器、经包装应用程序)都是在装置上本地执行的原生应用程序。此架构的客户端代理404和应用程序管理框架用以提供策略驱动管理能力和特征,例如到企业资源/服务408的连接和SSO(单点登录)。客户端代理404通过到其它网关服务器组件的SSO来处置对企业的主要用户验证,通常是对访问网关(AG)的主要用户验证。客户端代理404获得来自网关服务器406的策略以控制移动装置402上受管理应用410的行为。
原生应用程序410与客户端代理404之间的安全进程间通信(IPC)链路412表示管理信道,其允许客户端代理供应将由“包装”每个应用程序的应用程序管理框架414强制执行的策略。IPC信道412还允许客户端代理404供应实现到企业资源408的连接和SSO的证书和验证信息。最后,IPC信道412允许应用程序管理框架414调用由客户端代理404实施的用户接口功能,例如线上和离线验证。
客户端代理404与网关服务器406之间的通信基本上为从包装每个原生受管理应用程序410的应用程序管理框架414的管理信道的扩展。应用程序管理框架414请求来自客户端代理404的策略信息,客户端代理404继而向网关服务器406请求所述信息。应用程序管理框架414请求验证,且客户端代理404登录网关服务器406(也称为NetScaler访问网关)的网关服务部分。客户端代理404还可调用网关服务器406上的支持服务,其可产生输入材料以导出用于本地数据库416的加密密钥,或提供针对PKI受保护资源可实现直接验证的客户端证书,如下文更充分阐述。
更详细地,应用程序管理框架414“包装”每个受管理的应用程序410。这可经由明确的建造步骤或经由后建造处理步骤来并入。应用程序管理框架414可在应用程序410的首次启动后与客户端代理404“配对”以初始化安全IPC信道和获得用于所述应用程序的策略。应用程序管理框架414可强制执行本地应用的策略的相关部分,例如客户端代理登录相依性和限制可使用本地操作系统(OS)服务的方式或其可与应用程序410交互的方式的包容策略中的一些。
应用程序管理框架414可使用由客户端代理404在安全IPC信道412上提供的服务以促进验证和内网访问。用于专用和共享数据库416(容器)的密钥管理还可通过受管理应用程序410与客户端代理404之间的适当交互来管理。库416可仅在线上验证之后可用,或如果策略允许,可在离线验证之后可用。库416的首次使用可能需要线上验证,且离线访问可限于至多在再次需要线上鉴验证之前的策略刷新周期。
对内部资源的网络访问可经由访问网关406直接从个别受管理应用程序410发生。应用程序管理框架414负责代表每个应用程序410编排网络访问。客户端代理404可通过提供在线上验证之后获得的合适时间有限次要证书来促进这些网络连接。可使用多个网络连接模式,例如反向网络代理连接和端对端VPN样式隧道418。
邮件和浏览器管理的应用程序410具有特殊状态,且可使用通常可能不可用于任意包装的应用程序的设施。举例来说,邮件应用程序可使用允许其在延长的时间周期上访问Exchange而不需要充分AG登录的特殊背景网络访问机制。浏览器应用程序可使用多个专用数据库来分隔不同种类的数据。
此架构支持各种其它安全特征的合并。举例来说,在一些状况下,网关服务器406(包含其网关服务)将不需要校验活动目录(AD)密码。可使企业作出断定,在一些情况下,是否将AD密码用作对一些用户的验证因素。如果用户在线上或离线(即,连接或未连接到网络),那么可使用不同验证方法。
设置验证特征如下:网关服务器406可识别允许能够访问需要强验证的高度分类的数据的受管理原生应用程序410,且确保仅在执行适当验证之后准许对这些应用程序的访问,即使这意味着在先前较弱等级的登录之后需要用户进行重新验证。
此解决方案的另一安全特征是对移动装置402上的数据库416(容器)加密。可对库416加密,使得包含文件、数据库和配置的所有装置上数据受到保护。对于线上库,可将密钥存储于服务器(网关服务器406)上,且对于离线库,密钥的本地副本可受到用户密码或生物标识校验保护。当将数据本地存储于安全容器416中的装置402上时,优选地,利用AES 256加密算法的最小值。
也可实施其它安全容器特征。举例来说,可包含记录特征,其中应用410内部发生的所有安全事件被记录和报告给后端。可支持数据擦除,例如,如果应用程序410检测到篡改,那么可用随机数据重写相关联的加密密钥,从而在文件系统上不留下用户数据被毁坏的提示。截屏保护是另一特征,其中应用程序可防止任何数据存储于截屏中。举例来说,可将密钥窗的隐藏性质设定成是(YES)。这可致使当前显示于屏幕上的任何内容都被隐藏,从而导致任何内容将通常驻留的空白截屏。
可例如通过防止任何数据在本地传递到应用程序容器外部,例如,通过将其复制或将其发送到外部应用程序,而防止本地数据传递。键盘高速缓存特征可操作以针对敏感文本框停用自动校正功能性。SSL证书校验可为可操作的,因此应用程序特定地校验服务器SSL证书,而非将其存储于密钥链中。可使用加密密钥产生特征,使得使用由用户供应的通行短语或生物识别数据(如果需要离线访问)产生用以加密装置上的数据的密钥。如果不需要离线访问,那么可将其与随机产生且存储于服务器侧上的另一密钥进行异或运算。密钥导出函数可运算,使得从用户密码产生的密钥使用KDF(密钥导出函数,值得注意地,基于密码的密钥导出函数2(PBKDF2)),而非创建其密码杂凑。后者使密钥易受蛮力或词典攻击的影响。
另外,可在加密方法中使用一个或多个初始化向量。初始化向量将使相同加密数据的多个复本产生不同编密文本输出,从而防止重放和密码分析攻击。如果用以加密数据的具体初始化向量并不已知,那么这也将防止攻击者甚至用被盗的加密密钥解密任何数据。另外,可使用验证,然后解密,其中只在用户已在应用程序内验证后解密应用程序数据。另一特征可涉及存储器中的敏感数据,仅当需要时,可将敏感数据保持在存储器中(且不在磁盘中)。举例来说,可在登录之后从存储器擦除登录证书,且不存储在面向对象的C语言例子变量内部的加密密钥和其它数据,因为它们可易于参考。实际上,可针对这些手动分配存储器。
可实施不活动超时,其中在不活动的策略定义周期后,终止用户会话。
可以其它方式防止来自应用程序管理框架414的数据泄漏。举例来说,当将应用程序410放置在背景中时,可在预先确定的(可配置)时间周期之后清除存储器。当作为背景时,可拍摄应用程序的最后显示的屏幕的快照以使前台过程稳固。截屏可含有机密数据且因此应被清除。
另一安全特征涉及使用OTP(一次性密码)420,不使用AD(活动目录)422密码,用于对一个或多个应用程序的访问。在一些状况下,一些用户并不知道(或不被准许知道)其AD密码,因此这些用户可例如通过使用比如SecurID等硬件OTP系统来使用OTP420进行验证(OTP也可由不同销售商提供,例如Entrust或Gemalto)。在一些状况下,在用户用用户ID验证之后,将文本与OTP 420一起发送给用户。在一些状况下,这可仅针对线上使用来实施,其中提示为单个字段。
对于经由企业策略准许离线使用的那些应用程序410,可实施离线密码,以用于离线验证。举例来说,企业可能想要以此方式访问StoreFront。在此状况下,客户端代理404可需要用户设定定制离线密码,且不使用AD密码。网关服务器406可提供策略来控制和施行关于最小长度、字符类别组成和密码的年限的密码标准,例如,通过标准Windows服务器密码复杂度要求来描述,但可修改这些要求。
另一特征涉及针对某些应用程序410启用客户端侧证书,作为次要证书(出于经由应用程序管理框架micro VPN特征访问PKI保护的网络资源的目的)。举例来说,应用程序可利用此证书。在此状况下,可支持使用ActiveSync协议的基于证书的验证,其中来自客户端代理404的证书可由网关服务器406检索且用于密钥链中。每一受管理应用程序可具有由在网关服务器406中定义的标签识别的一个相关联的客户端证书。
网关服务器406可与企业专用网络服务交互以支持客户端证书的发布以允许相关受管理应用程序对内部PKI保护的资源进行验证。
可增强客户端代理404和应用程序管理框架414以支持获得和使用客户端证书用于对内部PKI保护的网络资源的验证。可支持多于一个证书,以便匹配各种层级的安全和/或分隔要求。所述证书可由邮件和浏览器管理的应用程序使用,且最终由任意包装的应用程序使用(假设那些应用程序使用网络服务样式通信模式,在所述模式中,应用程序管理框架调节https请求是合理的)。
iOS上的应用程序管理客户端证书支持可依赖于在每一使用周期内将公钥密码术标准(PKCS)12BLOB(二进制大对象)导入到每一受管理的应用程序中的iOS密钥链内。应用程序管理框架客户端证书支持可使用具有专用存储器内密钥存储的HTTPS实施方案。客户端证书将决不存在于iOS密钥链中,且将不维持,潜在地在受到强保护的“仅线上”数据值中除外。
也可通过需要将移动装置402对企业验证来实施互SSL以提供额外安全,且反之亦然。也可实施用于对网关服务器406验证的虚拟智能卡。
有限和完全的Kerberos支持两者都可以是额外特征。完全支持特征涉及使用活动目录(AD)密码或可信客户端证书进行到AD 422的完全Kerberos登录和获得Kerberos服务票证以响应HTTP协商验证质询的能力。有限支持特征涉及在Citrix访问网关企业版(AGEE)中的受约束的委托,其中AGEE支持调用Kerberos协议转变,因此其可响应于HTTP协商验证质询而获得且使用Kerberos服务票证(经受受约束的委托)。此机制在反向网络代理(也称为公司虚拟专用网络(CVPN))模式中且当http(但不是https)连接在VPN和MicroVPN模式中代理时工作。
另一特征涉及应用程序容器锁定和擦除,其可在越狱或生根检测后自动发生,和随着来自管理控制台的推送的命令而发生,且即使当应用410不在运行中时也可包含远程擦除功能性。
可支持企业应用程序商店和应用程序控制器的多位点架构或配置,在有故障的状况下,其允许从若干不同位置中的一个服务用户。
在一些状况下,可允许受管理应用程序410经由API(实例OpenSSL)访问证书和专用密钥。可允许企业的可信受管理应用程序410用应用程序的客户端证书和专用密钥执行特定公用密钥操作。因此可识别和处理各种使用情况,例如,当应用程序表现得像浏览器且不需要证书访问时,当应用程序针对“我是谁”读取证书时,当应用程序使用证书建造安全会话符记时,和当应用程序使用私用密钥用于重要数据(例如,交易记录)的数字签名或用于临时数据加密时。
说明性实施例
已论述可用于提供和/或实施本公开的各方面的计算架构和企业移动性管理架构的若干实例,现将更详细地论述若干实施例。具体地说,且如上文所介绍,本公开的一些方面大体上涉及改进经包装应用程序的执行性能。图5示出可存储和执行于移动装置500上的示例性原生经包装应用程序501。
原生经包装应用程序501可由应用程序包装器518包装。应用程序包装器518可包含当在装置上执行原生应用程序501时在移动装置500上执行的整合策略。将应用程序包装器518引入原生应用程序501内可能影响应用程序的性能。具体地说,且如上文所介绍,本公开的一些方面大体上涉及检测执行经包装应用程序的至少一个性能问题,其中性能问题由包装过程引起,和修改经包装应用程序的执行以处理性能问题。
举例来说,由于应用程序包装器518进行的包装应用程序501,可对数据库520加密。添加加密可能导致不良数据库性能,这是因为必须对写入到数据库520的页面加密且必须对从数据库520读取的页面解密。
来自数据库520的一个或多个页面可存储于高速缓冲存储器522中。高速缓冲存储器522中的页面可以解密形式存储。因此,不需要对写入到高速缓冲存储器522的页面加密且不需要对从高速缓冲存储器522读取的页面解密。当数据库520接收读取或写入请求时,数据库520可确定对应页面是否存储于高速缓冲存储器522中。如果对应页面存储于高速缓冲存储器522中,那么数据库520将直接从高速缓冲存储器522访问对应页面。当可对高速缓冲存储器522中的页面解密时,数据库520并非必须对页面加密或解密。然而,如果对应页面不存储于高速缓冲存储器522中,那么数据库520将访问文件系统层且发出适当读取或写入请求。接着必须对由于此请求而由数据库520在此层级上访问的任何页面解密。接着可将解密页面存储于高速缓冲存储器522中,以供数据库520后续访问。
可通过利用各种测量和分析方法完成对数据库520的性能劣化检测。举例来说,系统可测量数据库520响应读取或写入请求需要多长时间。系统还可分析高速缓冲存储器522的命中率或未命中率。举例来说,命中率可对应于使用存储于高速缓冲存储器522中的信息成功地处置的从数据库520读取信息的请求的数目除以所接收的读取信息的请求的总数目。另外或替代地,未命中率可对应于使用存储于高速缓冲存储器522中的信息不可处置(且对于其,必须对来自数据库520的非高速缓存的数据进行访问和/或解密以处置特定读取请求)的从数据库520读取信息的请求的数目除以所接收的读取信息的请求的总数目。系统还可分析高速缓冲存储器522的页面错误率。举例来说,页面错误可对应于在试图访问高速缓冲存储器522中映射到虚拟地址空间中但不载入于物理存储器中的页面时出现的中断。系统可分析高速缓冲存储器522相对于其它参数的大小,包含但不限于移动装置500上数据库520和/或可用存储器资源的大小。另外,可将经包装应用程序501的性能与类似非经包装应用程序的性能进行比较。这些特征和额外实例将在下文更详细地论述。
一旦(例如,通过经包装应用程序的应用程序包装器)检测到特定经包装应用程序的性能劣化,可能有利的是修改经包装应用程序501的执行以恢愎由引入应用程序包装器518所引起的性能损失。可通过修改各种操作参数(例如,经包装应用程序的操作参数和/或应用程序的操作参数)和/或通过使用各种算法(例如,以确定此类操作参数的最优值)来修改经包装应用程序501的执行。
在上文所提供的实例中,可影响数据库520的性能的一个因素是高速缓冲存储器522的大小。如果高速缓冲存储器522较小,那么数据库520访问页面的尝试将导致大量高速缓存未命中,从而迫使数据库执行对任何所需页面解密的额外步骤。如果高速缓冲存储器522足够大以按解密形式存储数据库520的所有页面,那么应用程序501的性能得到改进,这是因为仅需要对页面进行一次解密,即使多次引用。
然而,增大高速缓冲存储器522的大小可对整个系统性能产生涟漪效应。举例来说,移动装置500上的内存是有限的且如果高速缓冲存储器522的大小高于某一阈值,那么应用程序501可占用此存储器的不相称的量。因此,高速缓冲存储器522的大小可受可用系统资源的限制。在另一实例中,增大高速缓冲存储器522的大小可导致页面错误率的增加。在确定高速缓冲存储器522的大小时可考虑的其它示例性因素包含但不限于经包装应用程序501的数据库访问频率、数据库520的大小、高速缓冲存储器522的大小的阈值限值、高速缓冲存储器522的命中率或未命中率,和数据库交易的大小。这些特征和额外实例将在下文更详细地论述。
各种算法可用于修改高速缓冲存储器522的大小。举例来说,可将大小增大到阈值大小限值。替代地,可单次逐渐调整大小或直到达到目标性能值为止。这些特征和额外实例将在下文更详细地论述。
图6描绘改进经包装应用程序的执行性能的说明性方法。方法可在经包装应用程序501开始在移动装置500上执行之前开始,可在经包装应用程序501开始在移动装置500上执行时调用,或可在经包装应用程序501开始在移动装置500上执行之后调用。在步骤602处,应用程序包装器可检测经包装应用程序501的执行的性能问题,且性能问题可能由包装应用程序引起和/或另外由于包装应用程序而产生。
性能问题可以是由包装应用程序所引起的经包装应用程序501的执行性能的任何劣化。举例来说,如果包装应用程序不利地影响应用程序的执行时序(例如,由于包装而使应用程序比未经包装的应用程序更慢地运行),那么可检测到此问题。替代地,如果包装应用程序不利地影响应用程序所使用的系统资源(例如,应用程序相比于未经包装的应用程序使用更多内存、处理功率、网络带宽、数据消耗和/或其它系统资源),那么可检测到此问题。时序和资源利用仅是在一些例子中可检测到的性能问题的示例性类型,且在其它例子中可检测到由包装应用程序所引起的任何类似性能问题。
一般来说,可通过应用程序包装器518检测性能问题。应用程序包装器518可监测经包装应用程序501的执行的操作参数以确定是否存在性能问题。举例来说,应用程序包装器518可分析针对特定时间点的操作参数的值。替代地,应用程序包装器518可分析针对预先确定或动态确定的时间间隔的操作参数的值。在另一实例中,应用程序包装器518可使用滑动时间窗口监测操作参数的值。
应用程序包装器518可同时监测多于一个参数,且可在不同时间监测不同参数。可监测针对特定时间点的第一操作参数,同时可测量针对动态确定的时间间隔的第二操作参数(或可使用任何数目的操作参数的任何其它组合)。应用程序包装器518可个别地、相对于彼此、相对于其它系统参数,或结合彼此分析操作参数的值。可在经包装应用程序501的执行之前、开始时或期间确定由应用程序包装器518监测的操作参数。另外,应用程序包装器518可在经包装应用程序501的执行期间动态地修改监测哪些操作参数。
在步骤603处,应用程序包装器518可修改经包装应用程序501的执行以处理性能问题。应用程序包装器518可预先确定或可在发现和/或另外检测到性能问题之后动态确定修改。举例来说,如果应用程序包装器518确定第一操作参数(例如,从数据库获得的高速缓存的数据的页面大小或高速缓冲存储器的大小或数据库的大小)受应用程序的包装的影响,那么应用程序包装器518可执行已针对此情形预先确定的一个或多个修改步骤。示例性步骤包含但不限于修改第一操作参数、修改不同操作参数或修改操作参数的组合。
替代地,应用程序包装器518可动态确定在已检测到性能问题之后做出的修改。在检测与第一操作参数相关的性能问题时,应用程序包装器518可权衡多个修改选项且选择最优修改。举例来说,应用程序包装器518可确定第一操作参数的值已在阈值处,且因此必须修改应用程序的执行以在不修改第一性能参数的情况下解决和/或另外处理性能问题。在此情形中,应用程序包装器518可接着在修改第二操作参数和第三操作参数之间进行选择,且在一个示例性例子中可进行动态选择以修改第二操作参数和第三操作参数两者。
在此动态确定的一个特定实例中,应用程序包装器518可在监测应用程序501的执行时确定第一性能参数的值高速缓存命中率过低。作为响应,应用程序包装器518可增大高速缓冲存储器522的大小。应用程序包装器518接着可继续监测应用程序501的性能。在此持续监测期间,应用程序包装器518可确定第二性能参数的值页面错误率过高。应用程序包装器518可确定页面错误率的增加是由增大的高速缓冲存储器大小所引起且可接着动态地权衡减小高速缓冲存储器522的大小(且因此减小页面错误率同时还减小高速缓存命中率)与维持高速缓冲存储器522的当前大小(且因此允许保持高页面错误率,以保持高高速缓存命中率)的影响。在一个例子中,应用程序包装器518可确定减小高速缓冲存储器522的大小更高效,且因此继续步骤。然而,在另一例子中,应用程序包装器518可确定维持高速缓冲存储器522的大小(即重新读取未加密页面比重新读取页面且对页面重新解密更高效)更高效,且因此继续步骤。
如上文所提及,应用程序包装器518可由于包装应用程序501而对数据库520加密。添加加密可导致不良数据库性能,这是因为必须对写入到数据库520的页面加密且必须对从数据库520读取的页面解密。来自数据库520的一个或多个页面可存储于高速缓冲存储器522中。高速缓冲存储器522中的页面可呈解密形式。因此,可不需要对写入到高速缓冲存储器522的页面加密且可不需要对从高速缓冲存储器522读取的页面解密。
因此,在一个实例情形中,应用程序包装器518可通过监测数据库520和高速缓冲存储器522的大小来检测数据库520的性能问题。如果高速缓冲存储器522的大小等效于数据库520的大小,那么应用程序包装器518可得出结论:不存在与数据库相关的性能问题。另一方面,如果高速缓冲存储器522的大小小于数据库520的大小,那么应用程序包装器可继续监测两个操作参数(例如,数据库520的大小和高速缓冲存储器522的大小),且如果大小的差值尚未达到预先确定的等级,那么还可监测任何其它相关操作参数。如上文所提及,可跨指定时间间隔或跨滑动时间窗口在特定时间处进行此监测。如果数据库520与高速缓冲存储器522之间的大小差值在预先确定的值处(或替代地,在预先确定的范围内),那么应用程序包装器518可确定这是一个性能问题,且继续到步骤603。
在此实例情形中,在步骤603处,应用程序包装器518可修改经包装应用程序501的执行以处理与数据库相关的性能问题。如果高速缓冲存储器522的大小低于阈值限值,那么应用程序包装器518可将大小增大预先确定的值或动态确定的值。除阈值限值之外,应用程序包装器518还可评估增大高速缓冲存储器522的大小是否将导致经包装应用程序使用系统资源的不相称部分。
在第二实例情形中,应用程序包装器518应用程序可通过监测高速缓冲存储器522的未命中率来检测与包装器相关的性能问题。如上文所提及,可跨指定时间间隔或跨滑动时间窗口在特定时间处进行此监测。如果在步骤602处,应用程序包装器518确定高速缓冲存储器522的未命中率高于预先确定的或动态地计算出的值,那么应用程序包装器可继续到步骤603。
在此第二实例情形中,在步骤603处,应用程序包装器518可修改经包装应用程序501的执行以处理与数据库相关的性能问题。在进行修改时,应用程序包装器518可评估和/或分析对操作参数的约束条件(例如,阈值限值、可用系统资源等)。为处理未命中率,应用程序包装器518可调整高速缓冲存储器522的大小。在这样做时,应用程序包装器518可评估高速缓冲存储器522的当前大小、未命中率、高速缓冲存储器大小的阈值限值、数据库520的大小、供经包装应用程序501的执行使用的系统资源的量,和/或其它相关参数。
举例来说,将高速缓冲存储器522的大小增加第一量可使未命中率减少第二量,同时将供经包装应用程序501使用的系统存储器的部分增加第三量。应用程序包装器518可权衡这些值中的每一个且确定是否应增大高速缓冲存储器522的大小,且如果是,增大多少。在一个例子中,应用程序包装器518可确定将高速缓冲存储器522的大小增大10%将使未命中率减少5%,但将使供经包装应用程序501使用的系统存储器的部分增加20%。因此,应用程序包装器518可确定高速缓冲存储器大小不应增加10%,且倾向对经包装应用程序501的执行的替代修改(包含但不限于将高速缓冲存储器522的大小增大不同值)。
在第二例子中,应用程序包装器518可确定将高速缓冲存储器522的大小增大10%将使未命中率减少25%,但将使供经包装应用程序501使用的系统存储器的部分增加2%。应用程序包装器518可决定这是可接受的结果且将高速缓冲存储器522的大小增大10%。替代地,应用程序包装器518可基于此计算确定10%不是最优值且可执行额外计算以确定高速缓冲存储器522的大小是否应增加不同量。
在第三实例情形中,应用程序包装器518可监测数据库520的与时序相关的操作参数。如上文所提及,可跨指定时间间隔或跨滑动时间窗口在特定时间处进行此监测。应用程序包装器518可测量完成到和来自数据库520的不同交易耗费多长时间。此外,应用程序包装器518可评估交易中的每一个的大小。如果交易时间高于预先确定的阈值或在某一范围内,那么应用程序包装器可继续到步骤603。
在此第三实例情形中,在步骤603处,应用程序包装器518可修改经包装应用程序501的执行以处理与数据库相关的性能问题。在进行修改时,应用程序包装器518可评估和/或分析对操作参数的约束条件(例如,阈值限值、可用系统资源等)。在一个例子中,应用程序包装器518可评估增大高速缓冲存储器522的大小是否将会处理性能问题。
在一个例子中,应用程序包装器518可确定将一千个记录添加到数据库520的一系列操作耗费过长时间完成。作为响应,应用程序包装器518可首先查看交易的大小。举例来说,如果存在各自针对将一个记录添加到数据库的一千次交易,那么应用程序包装器518可确定增大高速缓冲存储器522的大小将无法处理问题,且可搜索替代解决方案。然而,如果仅存在各自针对将一百个记录添加到数据库520的十次交易,那么应用程序包装器518可确定应增大高速缓冲存储器522的大小,且采取适当修改动作。在增大高速缓冲存储器522的大小时,应用程序包装器518可考虑到高速缓冲存储器大小的阈值限值、可用系统资源、供经包装应用程序501当前使用的系统资源的部分,和可能相关的其它因素。
在上文所提供的实例中,应用程序包装器518监测各种操作参数且将参数与预先确定的值或动态确定的值比较。在一个例子中,可通过使用模型数据库(和对应模型高速缓冲存储器)来确定操作参数的基准值。模型数据库可与数据库520类似或相同,例外为模型数据库可以是未加密的。可在未加密的模型数据库上执行与由数据库520上的经包装应用程序501执行的交易类似或相同的交易。可通过监测可类似于但不限于由应用程序包装器518监测的操作参数的各种操作参数来确定模型数据库和高速缓冲存储器的性能。这些操作参数的值可接着用作执行经包装应用程序501的操作参数的基准值。举例来说,模型高速缓冲存储器的未命中率可被用作高速缓冲存储器522的目标未命中率。另外或替代地,模型数据库的大小可被用作数据库520的大小的阈值限值。
图7描绘使用历史数据改进经包装应用程序的执行性能的说明性方法。方法可在应用程序501开始在移动装置500上执行之前开始,可在应用程序501开始在移动装置500上执行时调用,或可在经包装应用程序501开始在移动装置500上执行之后调用。在步骤700处,应用程序包装器518可基于历史数据调整操作参数的值。此历史数据可指经包装应用程序501的先前执行。替代地,历史数据可指经包装应用程序501的即时执行的先前时间例子或先前时间间隔。历史数据可跨多个时间间隔和/或经包装应用程序501的多次先前执行而聚集。应用程序包装器518可具有先前分析的历史数据以确定操作参数的最优初始值和/或操作参数和性能参数的阈值。
在一个实例中,应用程序包装器518可通过监测经包装应用程序501的多次执行来确定在经包装应用程序501的初始启动之后存在某一时间间隔的数据库交易的数目的增加。这可由经包装应用程序501从数据库520移除旧数据且接着压紧数据库520而引起。另外或替代地,应用程序包装器518可通过监测经包装应用程序501的执行的先前例子来确定如果经包装应用程序501执行持续某一时间周期,那么倾向于出现数据库交易的迅速增加。应用程序包装器518可在经包装应用程序501的即时执行的未来时间间隔期间和/或在经包装应用程序501的后续执行期间出于参考目的存储任何此类确定倾向。
除监测数据库交易的历史数目之外,应用程序包装器518还可监测应用程序包装器518响应于性能问题的检测而做出的历史调整。举例来说,如果应用程序包装器518响应于标注数据库交易的迅速增加而增大高速缓冲存储器522的大小,那么应用程序包装器518可在经包装应用程序501的当前执行的未来时间间隔期间和/或在经包装应用程序501的后续执行期间出于参考目的存储新的尺寸。应用程序包装器518随后可存储和聚集调整的参数值的任何其它例子。应用程序包装器518可接着分析聚集的数据以确定在某些时间点和/或某些时间间隔处的最优操作参数值和目标性能值。这允许应用程序包装器518高效地再次利用数据且允许应用程序包装器优先获取由于包装所产生的已知性能问题。
在当前实例中,在开始经包装应用程序501的执行之后,应用程序包装器518可立即基于对历史值的分析调整高速缓冲存储器522的大小的值。替代地,如果一小时之后经包装应用程序501的执行仍在进行中,那么应用程序包装器518可基于应用程序包装器对历史参数值的分析来调整高速缓冲存储器522的大小。应用程序包装器518可使用历史数据来调整一个或多个操作参数的值。可做出调整以实现任何一个或多个操作参数的目标性能等级。
在步骤701处,应用程序包装器518可在参数的初始调整之后持续监测经包装应用程序501的一个或多个参数。可持续监测参数,直到检测到性能问题为止且在处理性能问题之后可恢复所述参数。替代地,如果检测到与包装器相关的性能问题,那么应用程序包装器518可同时监测参数和处理与包装器相关的性能问题。在连续监测期间,应用程序包装器518可聚集监测到的参数的值。可持久地存储聚集的值,使得随后可在经包装应用程序501的当前执行时或在经包装应用程序501的后续执行期间利用聚集的值(例如,这些聚集的值可在后续执行期间用作历史值)。应用程序包装器518可分析在特定时间点处的参数的值。替代地,应用程序包装器518可分析针对预先确定的或动态确定的时间间隔的参数的值。在另一实例中,应用程序包装器518可使用滑动时间窗口监测参数的值。应用程序包装器518可同时监测多于一个参数,且可在不同时间监测不同参数。举例来说,应用程序包装器518可监测高速缓冲存储器522的大小和/或高速缓冲存储器522的命中率。可监测针对特定时间点的第一参数,同时可测量针对动态确定的时间间隔的第二参数(或可使用任何数目的操作参数的任何其它组合)。应用程序包装器518可个别地、相对于彼此、相对于其它系统参数,或结合彼此分析参数的值。另外,应用程序包装器518可在经包装应用程序501的执行期间动态地修改监测哪个参数。
在步骤702处,应用程序包装器518可基于持续的监测检测经包装应用程序501的执行时的与包装相关的性能问题。应用程序包装器518可通过监测执行经包装应用程序501的操作参数来检测与包装相关的性能问题。举例来说,在步骤702处,应用程序包装器518可确定数据库520耗费过长时间完成交易(例如,超过预先确定的时间限值),高速缓冲存储器522的未命中率过高(例如,超过预先确定的未命中率限值),和/或数据库520的大小相对于高速缓冲存储器522的大小过大(例如,超过预先确定的高速缓冲存储器大小比率的的目标值)。应用程序包装器518可分析在特定时间点处的操作参数的值或操作参数的组合。替代地,应用程序包装器518可分析预先确定的或动态确定的时间间隔的操作参数的值或操作参数的组合。在另一实例中,应用程序包装器518可使用滑动时间窗口监测操作参数的值或操作参数的组合。
应用程序包装器518可同时监测多于一个操作参数且可在不同时间监测不同操作参数。可监测针对特定时间点的第一操作参数,同时可测量针对动态确定的时间间隔的第二操作参数(或可使用任何数目的操作参数的任何其它组合)。应用程序包装器518可个别地、相对于彼此、相对于其它系统参数,或结合彼此分析操作参数的值。另外,应用程序包装器518可在经包装应用程序501的执行期间动态地修改监测哪个操作参数。
在应用程序包装器518在经包装应用程序501的执行期间检测与包装相关的性能问题(例如,在此实例中,性能问题与高速缓冲存储器522的大小相关)之后,方法可继续到步骤703。在步骤703处,应用程序包装器518可确定高速缓冲存储器522的大小是否低于阈值限值。可预先确定或在经包装应用程序501的执行时动态确定阈值限值。可基于数据库520的大小、执行经包装应用程序501所利用的系统资源的量、执行经包装应用程序501所利用的系统资源的百分比、任何其它与系统相关的参数或其任何组合来确定阈值限值。如果应用程序包装器518确定高速缓冲存储器522的大小已处于或高于阈值限值,那么方法可继续到706,在706处,可(例如,通过应用程序包装器518)确定用以处理与包装相关的性能问题的替代解决方案。
如果在步骤703处应用程序包装器518确定高速缓冲存储器522的大小低于阈值限值,那么方法可继续到704,其中应用程序包装器518可确定增大高速缓冲存储器522的大小是否是高效的。考虑到一个或多个预先确定的阈值,可通过评估一个或多个因素来确定效率。举例来说,可将高速缓冲存储器522的当前大小与高速缓冲存储器522的大小的预定义阈值限值比较以确定增大高速缓冲存储器522的大小是否将是高效的(例如,如果高速缓冲存储器522的当前大小小于高速缓冲存储器522的大小的预定义阈值限值,那么可确定增大高速缓冲存储器522的大小是高效的;如果高速缓冲存储器522的当前大小等于或大于高速缓冲存储器522的大小的预定义阈值限值,那么可确定增大高速缓冲存储器522的大小并非是高效的)。增加高速缓冲存储器522的大小可对整个系统性能产生涟漪效应。举例来说,移动装置500上的内存是有限的且如果高速缓冲存储器522的大小高于某一阈值,那么应用程序501可占用此存储器的不相称的量。因此,高速缓冲存储器522的大小可受可用系统资源的限制。在另一实例中,增大高速缓冲存储器522的大小可导致页面错误率的增加。应用程序包装器在权衡增大高速缓冲存储器522的大小的效率时可将这些因素以及任何其它相关操作参数纳入考虑。
换句话说,在确定增大高速缓冲存储器522的大小是否是高效的时(例如,在步骤704处),应用程序包装器518可评估与对应于一个或多个因素的一个或多个预定阈值有关的一个或多个因素,包含可用存储器的量和/或页面错误率。举例来说,如果可用存储器的量处于或高于第一预先确定的阈值,那么应用程序包装器518可确定增大高速缓冲存储器522的大小是高效的,而如果可用存储器的量低于第一预先确定的阈值,那么应用程序包装器518可确定增大高速缓冲存储器522的大小并非是高效的。作为另一实例,如果页面错误率处于或高于第二预先确定的阈值,那么应用程序包装器518可确定增大高速缓冲存储器522的大小并非是高效的,而如果页面错误率低于第二预先确定的阈值,那么应用程序包装器518可确定增大高速缓冲存储器522的大小是高效的。
在一个例子中,应用程序包装器518可确定增大高速缓冲存储器522的大小是高效的。在此例子中,应用程序包装器518可修改经包装应用程序501的执行以通过增大高速缓冲存储器522的大小来处理与包装相关的性能问题。在做出修改时,应用程序包装器518可考虑对操作参数的约束条件(例如,阈值限值、可用资源等)。在一个实例中,高速缓冲存储器522的大小可增大到其阈值限值。在第二实例中,高速缓冲存储器522的大小可逐渐增大预先确定的量。在第三实例中,高速缓冲存储器522的大小可逐渐增大动态确定的量。
在于步骤705处增大高速缓冲存储器大小之后,应用程序包装器518可返回到步骤701,其中应用程序包装器518可恢复对各种操作参数的持续监测,操作参数包含但不限于在步骤702处监测的那些操作参数。在持续监测期间,应用程序包装器518可聚集持续监测到的参数的值。可持久地存储聚集的值,使得随后可在经包装应用程序501的当前执行时或在经包装应用程序501的后续执行期间利用所述值(例如,这些聚集的值可在后续执行期间用作历史值)。在一个例子中,应用程序包装器518可用相同操作参数检测与包装器相关的性能问题(例如,高速缓冲存储器522的未命中率可能仍过高)。如果高速缓冲存储器522的大小仍低于其阈值最大值,那么应用程序包装器518可重复评估增大高速缓冲存储器522的大小的效率。应用程序包装器518可考虑对操作参数的约束条件(例如,阈值限值、可用资源等)。在一个实例中,高速缓冲存储器522的大小可增大到其阈值限值。在第二实例中,高速缓冲存储器522的大小可逐渐增大预先确定的量。在第三实例中,高速缓冲存储器522的大小可逐渐增大动态确定的量。如果高速缓冲存储器522的大小处于其阈值,那么在步骤706处应用程序包装器518可确定替代解决方案。在确定和实施替代解决方案之后,应用程序包装器518可返回到步骤701,其中应用程序包装器518可恢复对各种操作参数的持续继续监测,操作参数包含但不限于在步骤702处监测的那些操作参数。
在第二例子中,应用程序包装器518可利用不同操作参数检测与包装器相关的性能问题。举例来说,在先前在步骤705处已增大高速缓冲存储器522的大小且已返回到持续监测步骤701(例如,在步骤705之后)之后,应用程序包装器可随后在步骤702处确定页面错误率过高。应用程序包装器518可确定页面错误率的增加是由高速缓冲存储器大小的增大而引起的,且可接着动态地权衡减小高速缓冲存储器522的大小(且因此减小页面错误率)与维持高速缓冲存储器522的当前大小(且因此允许保持高页面错误率)的影响。在一个例子中,应用程序包装器518可确定减小高速缓冲存储器522的大小更高效,且因此继续步骤。高速缓冲存储器522的大小可每次改变相同或不同增值。在减小高速缓冲存储器522的大小之后,应用程序包装器518可返回到步骤701,其中应用程序包装器518可恢复对各种操作参数的持续继续监测,操作参数包含但不限于在步骤702处监测的那些操作参数。然而,在另一例子中,应用程序包装器518可确定维持高速缓冲存储器522的大小更高效(即重新读取未加密的页面比重新读取页面且对页面重新解密更高效)且返回到步骤701,其中应用程序包装器518可恢复对各种操作参数的持续继续监测,操作参数包含但不限于在步骤702处监测的那些操作参数。
图8描绘改进经包装应用程序的执行性能的说明性方法。方法可在应用程序501开始在移动装置500上执行之前开始,可在经包装应用程序501开始在移动装置500上执行时调用,或可在经包装应用程序501开始在移动装置500上执行之后调用。在步骤802处,应用程序包装器518在经包装应用程序501的执行期间监测高速缓冲存储器522的一个或多个性能参数以检测与包装相关的性能问题。
应用程序包装器518可分析在特定时间点处的性能参数的值。替代地,应用程序包装器518可分析针对预先确定的或动态确定的时间间隔的性能参数的值。在另一实例中,应用程序包装器518可使用滑动时间窗口监测性能参数的值。
应用程序包装器518可同时监测多于一个参数,且可在不同时间监测不同参数。举例来说,在步骤802处,应用程序包装器518可监测高速缓冲存储器522的大小和/或高速缓冲存储器522的命中率。可监测针对特定时间点的第一性能参数,同时可测量针对动态确定的时间间隔的第二性能参数(或可使用任何数目的操作参数的任何其它组合)。应用程序包装器518可个别地、相对于彼此、相对于其它系统参数,或结合彼此分析性能参数的值。另外,应用程序包装器518可在经包装应用程序501的执行期间动态地修改监测哪个性能参数。
在步骤803处,应用程序包装器518可分析一个或多个监测的性能参数。举例来说,应用程序包装器518可比较高速缓冲存储器522的命中率与目标值。如果高速缓冲存储器522的命中率处于或高于目标值,那么应用程序包装器可返回到步骤802。如果高速缓冲存储器522的命中率低于目标值,那么应用程序包装器518可继续到步骤804。目标值可以是标量值、百分比或范围。可预先确定或动态地计算目标值。举例来说,可通过分析例如高速缓冲存储器522的大小等其它性能参数和/或通过分析例如数据库520的大小、可用系统资源等其它操作参数来动态地计算目标值。
在步骤804处,基于高速缓冲存储器522的大小低于阈值限值,应用程序包装器518可增大高速缓冲存储器的大小以使高速缓冲存储器522的大小增大到不超过阈值限值的量。可预先确定或在经包装应用程序501的执行时动态确定阈值限值。可基于数据库520的大小、执行经包装应用程序501所利用的系统资源的量、执行经包装应用程序501所利用的系统资源的百分比、任何其它与系统相关的参数或其任何组合来确定阈值限值。
在做出修改时,应用程序包装器518可考虑对操作参数的约束条件(例如,可用系统资源)。在一个实例中,高速缓冲存储器522的大小可增大到其阈值限值。在第二实例中,高速缓冲存储器522的大小可逐渐增大预先确定的量。在第三实例中,高速缓冲存储器522的大小可逐渐增大动态确定的量。
在已修改高速缓冲存储器大小之后,应用程序包装器518可继续监测各种性能参数,包含但不限于在步骤802中监测的那些性能参数。如果应用程序包装器518检测到与包装器相关的性能问题(例如,高速缓冲存储器522的未命中率仍过高),那么在高速缓冲存储器522的大小仍低于其阈值最大值的情况下应用程序包装器518可重复修改高速缓冲存储器522的大小。
可重复检测与包装相关的性能问题(例如,高速缓存命中率低于目标值)和修改高速缓冲存储器522的大小的过程,直到达到目标性能等级或高速缓冲存储器522的大小的阈值限值为止。可预先确定或动态地计算目标性能等级。目标性能等级可以是百分比、特定值或范围。高速缓冲存储器522的大小可每次改变相同或不同增值。
尽管已经以特定地针对结构特征和/或方法动作的语言来描述主题,但应理解,所附权利要求书中所界定的主题未必限于上文所描述的特定特征或动作。实际上,上文所描述的特定特征和动作描述为所附权利要求的实例实施方案。

Claims (20)

1.一种方法,包括:
通过应用程序包装器且在与所述应用程序包装器相关联的经包装应用程序的执行期间检测由所述应用程序包装器所引起的至少一个性能问题,其中所述应用程序包装器通过在所述经包装应用程序上执行策略来控制所述经包装应用程序的所述执行;
以及
通过所述应用程序包装器动态地修改所述经包装应用程序的所述执行以解决所述至少一个检测到的性能问题。
2.根据权利要求1所述的方法,其中所述至少一个性能问题与存储来自数据库的一个或多个页面的高速缓冲存储器相关联,且其中所述高速缓冲存储器和所述数据库维持在所述经包装应用程序内。
3.根据权利要求2所述的方法,其中检测所述至少一个性能问题包括通过所述应用程序包装器监测用以完成与所述高速缓冲存储器相关联的一个或多个交易所需的时间量。
4.根据权利要求2所述的方法,其中检测所述至少一个性能问题包括通过所述应用程序包装器确定高速缓冲存储器未命中率超出预先确定的阈值。
5.根据权利要求2所述的方法,其中检测所述至少一个性能问题包括通过所述经包装应用程序监测相对于所述数据库的大小的所述高速缓冲存储器的大小。
6.根据权利要求2所述的方法,其中检测所述至少一个性能问题包括通过所述经包装应用程序监测相对于所述经包装应用程序正在其上执行的移动装置上可用存储器的大小的所述高速缓冲存储器的大小。
7.根据权利要求2所述的方法,其中检测所述至少一个性能问题包括通过所述经包装应用程序计算与所述高速缓冲存储器相关联的交易的数目且通过所述经包装应用程序监测与所述高速缓冲存储器相关联的所述交易中的每个交易的大小。
8.根据权利要求2所述的方法,其中动态地修改所述经包装应用程序的所述执行包括:
通过所述应用程序包装器确定所述高速缓冲存储器的大小是否低于阈值;以及
响应于确定所述大小低于所述阈值,确定是否应基于对一个或多个额外参数的评估来调整所述高速缓冲存储器的所述大小;以及
响应于确定应调整所述高速缓冲存储器的所述大小,通过所述应用程序包装器基于与所述高速缓冲存储器相关联的历史数据来调整所述高速缓冲存储器的所述大小。
9.根据权利要求8所述的方法,进一步包括重复所述检测至少一个性能问题和增加所述高速缓冲存储器的所述大小,直到所述高速缓冲存储器到达目标性能水平为止。
10.根据权利要求2所述的方法,其中动态地修改所述经包装应用程序的所述执行包括使所述高速缓冲存储器的大小逐渐地增加预先确定的量。
11.根据权利要求2所述的方法,其中动态地修改所述经包装应用程序的所述执行包括使所述高速缓冲存储器的大小逐渐地增加动态确定的量。
12.一个或多个非暂时性计算机可读媒体,具有存储在其上的计算机可执行指令,在所述计算机可执行指令被执行时使得至少一个计算装置:
通过应用程序包装器在与所述应用程序包装器相关联的经包装应用程序的执行期间检测由所述应用程序包装器所引起的至少一个性能问题,其中所述应用程序包装器通过在所述经包装应用程序上执行策略来控制所述经包装应用程序的所述执行;以及
通过所述应用程序包装器动态地修改所述经包装应用程序的所述执行以解决所述至少一个检测到的性能问题。
13.根据权利要求12所述的一个或多个非暂时性计算机可读媒体,其中所述至少一个性能问题与存储来自数据库的一个或多个页面的高速缓冲存储器相关联,且其中所述高速缓冲存储器和所述数据库维持在所述经包装应用程序内。
14.根据权利要求13所述的一个或多个非暂时性计算机可读媒体,其中检测所述至少一个性能问题包括通过所述应用程序包装器监测用以完成与所述高速缓冲存储器相关联的一个或多个交易所需的时间量。
15.根据权利要求13所述的一个或多个非暂时性计算机可读媒体,其中检测所述至少一个性能问题包括通过所述应用程序包装器计算与所述高速缓冲存储器相关联的交易的数目且通过所述应用程序包装器监测与所述高速缓冲存储器相关联的所述交易中的每个交易的大小。
16.根据权利要求13所述的一个或多个非暂时性计算机可读媒体,其中动态地修改所述经包装应用程序的所述执行包括:
通过所述应用程序包装器确定所述高速缓冲存储器的大小是否低于阈值;
响应于确定所述大小低于所述阈值,通过所述应用程序包装器确定是否应增加所述高速缓冲存储器的所述大小;以及
响应于确定应增加所述高速缓冲存储器的所述大小,通过所述应用程序包装器增加所述高速缓冲存储器的所述大小。
17.根据权利要求13所述的一个或多个非暂时性计算机可读媒体,其中动态地修改所述经包装应用程序的所述执行包括使所述高速缓冲存储器的大小逐渐地增加预先确定的量。
18.根据权利要求17所述的一个或多个非暂时性计算机可读媒体,具有存储在其上的额外计算机可执行指令,所述额外计算机可执行指令在被执行时进一步使得所述至少一个计算装置重复所述检测至少一个性能问题和逐渐增加所述高速缓冲存储器的所述大小,直到所述高速缓冲存储器到达目标性能水平为止。
19.一种方法,包括:
在与所述应用程序包装器相关联的经包装应用程序的执行期间通过应用程序包装器针对选定时间间隔监测经包装应用程序中高速缓冲存储器的一个或多个性能参数,其中所述应用程序包装器通过在所述经包装应用程序上执行策略来控制所述经包装应用程序的所述执行,其中所述高速缓冲存储器存储来自所述经包装应用程序中数据库的一个或多个页面,且其中所述性能参数受所述应用程序的所述包装影响;
通过所述应用程序包装器针对所述选定时间间隔确定所述高速缓冲存储器的命中率低于目标值;以及
基于所述高速缓冲存储器的大小低于阈值限值,通过所述应用程序包装器将所述高速缓冲存储器的大小调整第一增值以使所述高速缓冲存储器的所述大小增加到不超过所述阈值限值的量。
20.根据权利要求19所述的方法,进一步包括:
在将所述高速缓冲存储器的所述大小增加所述增值之后,通过所述应用程序包装器针对额外时间间隔监测所述高速缓冲存储器的所述一个或多个性能参数;
通过所述应用程序包装器针对所述额外时间间隔确定所述高速缓冲存储器的所述命中率低于所述目标值;以及
基于所述高速缓冲存储器的所述大小低于所述阈值限值,通过所述应用程序包装器使所述高速缓冲存储器的所述大小增加第二增值。
CN201680044769.0A 2015-07-15 2016-07-12 用于改进经包装应用程序的性能的方法和计算机可读媒体 Expired - Fee Related CN107852585B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/800,371 2015-07-15
US14/800,371 US10073758B2 (en) 2015-07-15 2015-07-15 Performance of a wrapped application
PCT/US2016/041832 WO2017011427A1 (en) 2015-07-15 2016-07-12 Improving performance of a wrapped application

Publications (2)

Publication Number Publication Date
CN107852585A true CN107852585A (zh) 2018-03-27
CN107852585B CN107852585B (zh) 2021-03-02

Family

ID=56550989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680044769.0A Expired - Fee Related CN107852585B (zh) 2015-07-15 2016-07-12 用于改进经包装应用程序的性能的方法和计算机可读媒体

Country Status (4)

Country Link
US (1) US10073758B2 (zh)
EP (1) EP3323253B1 (zh)
CN (1) CN107852585B (zh)
WO (1) WO2017011427A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112632644A (zh) * 2020-12-18 2021-04-09 深圳市安络科技有限公司 一种基于安卓系统的app防截屏方法、装置及设备

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017031637A1 (zh) * 2015-08-21 2017-03-02 华为技术有限公司 一种内存访问方法、装置和系统
US11086771B2 (en) * 2015-10-13 2021-08-10 Apptimize Llc Dynamic management and control of test features in native applications
US10635561B2 (en) * 2017-05-11 2020-04-28 Salesforce.Com, Inc. Techniques and architectures for managing database failure in a single-node database architecture
US10425274B2 (en) 2017-05-11 2019-09-24 Salesforce.Com, Inc. Techniques and architectures for recovering from a service disruption in a multi-server environment
US10776459B2 (en) * 2017-12-07 2020-09-15 International Business Machines Corporation Facilitating build and deploy runtime memory encrypted cloud applications and containers
WO2020064103A1 (en) * 2018-09-26 2020-04-02 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for modifying an allocation of virtualized processing resources for a digital unit based on timing feedback from a radio unit
TWI684131B (zh) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 資料傳輸裝置、資料傳輸方法以及非暫態電腦可讀取記錄媒體
US11544170B2 (en) * 2019-07-16 2023-01-03 Oracle International Corporation Tool for interrogating heterogeneous computing systems
US10860488B1 (en) * 2019-07-31 2020-12-08 EMC IP Holding Company LLC Dynamic enabling of metadata prefetch into cache
US11134039B1 (en) * 2019-10-18 2021-09-28 Twitter, Inc. Dynamically controlling messaging platform client-side and server-side behavior
US11611882B2 (en) * 2020-06-03 2023-03-21 Salesforce.Com, Inc. Automatically integrating security policy in mobile applications at build-time
US12056232B2 (en) * 2021-08-27 2024-08-06 EMC IP Holding Company LLC Function-based service framework with trusted execution platform

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002035395A2 (en) * 2000-10-27 2002-05-02 Entigen Corporation Integrating heterogeneous data and tools
US20050198298A1 (en) * 2004-03-08 2005-09-08 Norifumi Nishikawa System monitoring method
CN101206569A (zh) * 2006-12-20 2008-06-25 国际商业机器公司 用于动态识别促使服务劣化的组件的方法和系统
CN103309793A (zh) * 2012-03-07 2013-09-18 国际商业机器公司 排名分析工具的方法和系统
CN103649920A (zh) * 2011-06-27 2014-03-19 微软公司 用于云计算平台的资源管理
US20140281708A1 (en) * 2013-03-14 2014-09-18 International Business Machines Corporation Generating fault tolerant connectivity api

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934388B2 (en) * 2004-06-01 2018-04-03 Ben-Gurion University Of The Negev Research And Development Authority Method and system for database encryption
US20070180275A1 (en) * 2006-01-27 2007-08-02 Brian Metzger Transparent encryption using secure JDBC/ODBC wrappers
US7552121B2 (en) * 2006-06-22 2009-06-23 International Business Machines Corporation Autonomic lock escalation in an SQL environment
US9569443B1 (en) * 2007-09-28 2017-02-14 Symantec Corpoartion Method and apparatus for providing access to data in unsupported file systems and storage containers
US8788783B1 (en) 2010-06-18 2014-07-22 Disney Enterprises, Inc. Dynamically tuning the size of a cache stored in a shared memory
US8831658B2 (en) 2010-11-05 2014-09-09 Qualcomm Incorporated Controlling application access to a network
US8910264B2 (en) 2013-03-29 2014-12-09 Citrix Systems, Inc. Providing mobile device management functionalities

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002035395A2 (en) * 2000-10-27 2002-05-02 Entigen Corporation Integrating heterogeneous data and tools
US20050198298A1 (en) * 2004-03-08 2005-09-08 Norifumi Nishikawa System monitoring method
CN101206569A (zh) * 2006-12-20 2008-06-25 国际商业机器公司 用于动态识别促使服务劣化的组件的方法和系统
CN103649920A (zh) * 2011-06-27 2014-03-19 微软公司 用于云计算平台的资源管理
CN103309793A (zh) * 2012-03-07 2013-09-18 国际商业机器公司 排名分析工具的方法和系统
US20140281708A1 (en) * 2013-03-14 2014-09-18 International Business Machines Corporation Generating fault tolerant connectivity api

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112632644A (zh) * 2020-12-18 2021-04-09 深圳市安络科技有限公司 一种基于安卓系统的app防截屏方法、装置及设备

Also Published As

Publication number Publication date
EP3323253B1 (en) 2022-09-14
US10073758B2 (en) 2018-09-11
US20170017562A1 (en) 2017-01-19
EP3323253A1 (en) 2018-05-23
WO2017011427A1 (en) 2017-01-19
CN107852585B (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN107852585A (zh) 改进经包装应用程序的性能
JP6437589B2 (ja) 企業アプリケーションストアの提供
CN105637523B (zh) 安全客户端驱动映射和文件存储系统
CN105340309B (zh) 具有多个操作模式的应用
CN104903910B (zh) 控制移动装置对安全数据的访问
CN109558721A (zh) 客户端应用程序的安全单点登录和条件访问
CN105378744B (zh) 在企业系统中的用户和设备认证
CN105393524B (zh) 图像分析和管理
WO2014158229A1 (en) Providing mobile device management functionalities
CN107636603A (zh) 基于位置的装置可用性
CN106031128B (zh) 移动设备管理的方法和装置
CN105308923A (zh) 对具有多操作模式的应用的数据管理
CN105340239A (zh) 利用环境锁定移动设备
CN107924431B (zh) 匿名应用程序包装
CN113574837A (zh) 跟踪客户端设备上的图像发送者

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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210302