IP Library › Granted Patent US 9,753,759
Granted Patent B2
US 9,753,759 · App. 14/963,837 · Granted Sep 5, 2017

Optimizations and enhancements of application virtualization layers

Inventors: Mohit Dhawan (San Jose, CA); Aman Sethi (San Jose, CA); Yashabh Sethi (Mountain View, CA); Sheldon Lachambre (Chalfont, GB)
Assignee: Citrix Systems, Inc.
G06F9/45558G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,753,759
App. No.
14/963,837
Granted
Sep 5, 2017
Kind
B2
Abstract

Methods, systems, and computer-readable media for optimizing and enhancing delivery of application virtualization layers to client computing devices are described herein. In various embodiments, an application virtualization layer optimization service may identify a first and a second application virtualization layer to be delivered to one or more client computing devices. Each application virtualization layer may represent a package of one or more applications. A layer analysis service may analyze the first and second application virtualization layers to determine conflicts between the layers, using predetermined conflict analysis rules, and generate an actionable conflict resolution report based on the analysis. Based on the actionable conflict resolution report, the application virtualization layer optimization service may resolve conflicts between the first and second application virtualization layers, order the first and application virtualization layers, and deliver the ordered layers to the one or more client computing devices.

Claims (124)

1. A method comprising:

identifying a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyzing, using a layer analysis service, the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules, wherein the analyzing comprises:

determining, for each application virtualization layer, one or more operational characteristics;

comparing the one or more operational characteristics of the first application virtualization layer with the one or more operational characteristics of the second application virtualization layer;

determining, based on the comparison, one or more operational characteristics of the first application virtualization layer that conflict with corresponding operational characteristics of the second application virtualization layer;

determining, based on the comparison, a priority or precedence order for the first and second application virtualization layer; and

determining, based on the comparison, a candidate target computing device compatible with the first and second application virtualization layers;

generating, using the layer analysis service, an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolving conflicts indicated on the actionable conflict resolution report;

ordering the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices.

2. The method of claim 1 , wherein the first virtualization layer comprises files, system registry entries, and data related to the one or more applications comprised by the first application virtualization layer, and wherein the second virtualization layer comprises files, system registry entries, and data related to the one or more applications comprised by the second application virtualization layer.

3. The method of claim 1 , wherein the first application virtualization layer comprises an operating system virtualization layer, and wherein the second application virtualization layer comprises one or more applications specific to one or more predetermined users with a common-set of roles.

4. The method of claim 1 , wherein the one or more operational characteristics comprise at least one or more of the following: boot-time dependencies, run-time dependencies, login-time dependencies, operating system dependencies, computer architecture dependencies, framework dependencies, shared library dependencies, dynamically-linked library dependencies, application programming interface dependencies, or services dependencies.

5. The method of claim 1 , wherein analyzing the first application virtualization layer and the second application virtualization layer for conflicts between the layers, further comprises:

analyzing each of the one or more applications comprised by the first application virtualization layer for conflicts with each of the other one or more applications comprised by the first virtualization application layer, using predetermined conflict analysis rules; and

analyzing each of the one or more applications comprised by the second application virtualization layer for conflicts with each of the other one or more applications comprised by the second application virtualization layer, using predetermined conflict analysis rules.

6. The method of claim 1 , further comprising:

merging the ordered first application virtualization layer and the second application virtualization layer into a single combined application virtualization layer based on the actionable conflict resolution report; and

delivering the merged application virtualization layer to the one or more client computing devices.

7. The method of claim 6 , wherein the one or more applications originally in the first application virtualization layer are not isolated from the one or more applications originally in the second application virtualization layer in the merged application virtualization layer.

8. The method of claim 6 , wherein merging the ordered first application virtualization layer and the second application virtualization layer into a single combined application virtualization layer based on the actionable conflict resolution report is performed by the one or more client computing devices.

9. The method of claim 1 , wherein delivering the ordered first and second application virtualization layers to the one or more client computing devices, further comprises:

determining which of the one or more client computing devices are compatible with the ordered first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

delivering the ordered first application virtualization layer and the second application virtualization layer to the compatible one or more client computing devices.

10. The method of claim 1 , further comprising:

updating the one or more applications in the second application virtualization layer;

re-analyzing, using the layer analysis service, the updated second application virtualization layer with the first application virtualization layer;

generating, using the layer analysis service, a second actionable conflict resolution report based on the re-analysis of the updated second application virtualization layer;

resolving conflicts indicated on the second actionable conflict resolution report;

ordering the first application virtualization layer and the updated second application virtualization layer based on the second actionable conflict resolution report;

merging the ordered first application virtualization layer and the updated second application virtualization layer into a single combined application virtualization layer based on the second actionable conflict resolution report; and

delivering the single combined application virtualization layer to the one or more client computing devices.

11. The method of claim 1 , wherein delivering the ordered first and second application virtualization layers to the one or more client computing devices, further comprises:

delivering the ordered first application virtualization layer and the second application virtualization layer as part of a boot sequence of the one or more client computing devices.

12. The method of claim 1 , wherein delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices, further comprises:

delivering the ordered first application virtualization layer and the second application virtualization layer to one or more client computing devices in response to a user login.

13. The method of claim 12 , further comprising:

determining the identity of the user login into the particular client computing device;

determining whether to deliver the first application virtualization layer to the client computing device based on the identity of the user login into the particular client computing device; and

determining whether to deliver the second application virtualization layer to the client computing device based on the identity of the user login into the particular client computing device.

14. A system comprising:

at least one processor; and

at least one memory storing computer executable instructions that, when executed by the at least one processor, cause the system to:

identify a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyze the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules, wherein the analyzing comprises:

determine, for each application virtualization layer, one or more operational characteristics;

compare the one or more operational characteristics of the first application virtualization layer with the one or more operational characteristics of the second application virtualization layer;

determine, based on the comparison, one or more operational characteristics of the first application virtualization layer that conflict with corresponding operational characteristics of the second application virtualization layer;

determine, based on the comparison, a priority or precedence order for the first and second application virtualization layer; and

determine, based on the comparison, a candidate target computing device compatible with the first and second application virtualization layers;

generate an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolve conflicts indicated on the actionable conflict resolution report;

order the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

deliver the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices.

15. The system of claim 14 , further comprising additional executable instructions that, when executed by the at least one processor, cause the system to:

merge the ordered first application virtualization layer and the second application virtualization layer into a single combined application virtualization layer based on the actionable conflict resolution report; and

deliver the merged application virtualization layer to the one or more client computing devices.

16. The system of claim 14 , wherein delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices, further comprises:

determining which of the one or more client computing devices are compatible with the ordered first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

delivering the ordered first application virtualization layer and the second application virtualization layer to the compatible one or more client computing devices.

17. One or more non-transitory computer-readable medium storing computer-executable instructions that, when executed by a computer system comprising at least one processor, and least one memory, cause the computer system to perform a method comprising:

identifying a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyzing the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules, wherein the analyzing comprises:

determining, for each application virtualization layer, one or more operational characteristics;

comparing the one or more operational characteristics of the first application virtualization layer with the one or more operational characteristics of the second application virtualization layer;

determining, based on the comparison, one or more operational characteristics of the first application virtualization layer that conflict with corresponding operational characteristics of the second application virtualization layer;

determining, based on the comparison, a priority or precedence order for the first and second application virtualization layer; and

determining, based on the comparison, a candidate target computing device compatible with the first and second application virtualization layers;

generating an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolving conflicts indicated on the actionable conflict resolution report;

ordering the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices.

18. The one or more non-transitory computer-readable medium of claim 17 , having additional computer-executable instructions stored thereon that, when executed, further cause the one or more processors to:

merge the ordered first application virtualization layer and the second application virtualization layer into a single combined application virtualization layer based on the actionable conflict resolution report; and

deliver the merged application virtualization layer to the one or more client computing devices.

19. The one or more non-transitory computer-readable medium of claim 17 , wherein delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices, further comprises:

determining which of the one or more client computing devices are compatible with the ordered first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report; and

delivering the ordered first application virtualization layer and the second application virtualization layer to the compatible one or more client computing devices.

20. A method comprising:

identifying a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyzing, using a layer analysis service, the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules;

generating, using the layer analysis service, an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolving conflicts indicated on the actionable conflict resolution report;

ordering the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report;

delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices;

updating the one or more applications in the second application virtualization layer;

re-analyzing, using the layer analysis service, the updated second application virtualization layer with the first application virtualization layer;

generating, using the layer analysis service, a second actionable conflict resolution report based on the re-analysis of the updated second application virtualization layer;

resolving conflicts indicated on the second actionable conflict resolution report;

ordering the first application virtualization layer and the updated second application virtualization layer based on the second actionable conflict resolution report;

merging the ordered first application virtualization layer and the updated second application virtualization layer into a single combined application virtualization layer based on the second actionable conflict resolution report; and

delivering the single combined application virtualization layer to the one or more client computing devices.

21. A system comprising:

at least one processor; and

at least one memory storing computer executable instructions that, when executed by the at least one processor, cause the system to:

identify a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyze the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules;

generate an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolve conflicts indicated on the actionable conflict resolution report;

order the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report;

deliver the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices;

update the one or more applications in the second application virtualization layer;

re-analyze the updated second application virtualization layer with the first application virtualization layer;

generate a second actionable conflict resolution report based on the re-analysis of the updated second application virtualization layer;

resolve conflicts indicated on the second actionable conflict resolution report;

order the first application virtualization layer and the updated second application virtualization layer based on the second actionable conflict resolution report;

merge the ordered first application virtualization layer and the updated second application virtualization layer into a single combined application virtualization layer based on the second actionable conflict resolution report; and

deliver the single combined application virtualization layer to the one or more client computing devices.

22. One or more non-transitory computer-readable medium storing computer-executable instructions that, when executed by a computer system comprising at least one processor, and least one memory, cause the computer system to perform a method comprising:

identifying a first application virtualization layer and a second application virtualization layer to be delivered to one or more client computing devices, wherein each application virtualization layer represents a package of one or more applications;

analyzing the first application virtualization layer and the second application virtualization layer for conflicts between the layers, using predetermined conflict analysis rules;

generating an actionable conflict resolution report based on the analysis of the first application virtualization layer and the second application virtualization layer;

resolving conflicts indicated on the actionable conflict resolution report;

ordering the first application virtualization layer and the second application virtualization layer based on the actionable conflict resolution report;

delivering the ordered first application virtualization layer and the second application virtualization layer to the one or more client computing devices;

updating the one or more applications in the second application virtualization layer;

re-analyzing the updated second application virtualization layer with the first application virtualization layer;

generating a second actionable conflict resolution report based on the re-analysis of the updated second application virtualization layer;

resolving conflicts indicated on the second actionable conflict resolution report;

ordering the first application virtualization layer and the updated second application virtualization layer based on the second actionable conflict resolution report;

merging the ordered first application virtualization layer and the updated second application virtualization layer into a single combined application virtualization layer based on the second actionable conflict resolution report; and

delivering the single combined application virtualization layer to the one or more client computing devices.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2016
From: DHAWAN, MOHIT; SETHI, AMAN; SETHI, YASHABH; LACHAMBRE, SHELDON
To: CITRIX SYSTEMS, INC.
Reel/Frame 037519/0165 →
Continuity (1)
Related Publication 20170168861A1 · Jun 15, 2017