IP Library Granted Patent US 8,938,721
Granted Patent B2
US 8,938,721 · App. 12/840,783 · Granted Jan 20, 2015

Measuring actual end user performance and availability of web applications

Inventors: Ilarie Letca (Redmond, WA); Alexandre Coelho (Redmond, WA); Venkata Seshu Kumar Kurapati (Bellevue, WA); Rajeev Sudhakar (Seattle, WA); Daniel Savage (Redmond, WA); Ashvinkumar Sanghvi (Sammamish, WA); Jin Soon Lim (Redmond, WA)
Assignee: Microsoft Corporation
G06F11/3466G06F2201/865G06F2201/875
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 8,938,721
App. No.
12/840,783
Granted
Jan 20, 2015
Kind
B2
Abstract

Techniques for monitoring web application performance are provided. A request for a web application is received at an application server. A response pipeline at the application server generates client application code corresponding to the requested web application. The client application code is intercepted in the response pipeline. Instrumentation code is inserted into the intercepted client application code to generate an instrumented client application code. The instrumentation code is configured to be executed when the instrumented client application code is rendered at the client to capture performance information at the client, and is configured to transmit the captured performance information from the client.

Claims (48)

1. A method implemented in one or more servers having one or more processors, the method comprising:

intercepting a client application code in a response pipeline, the client application code generated in response to a request from a client for a web application, the request for the web application being processed using a plurality of HTTP (hypertext transfer protocol) modules and an HTTP handler in the response pipeline, said intercepting comprising receiving the client application code at an HTTP module of the plurality of HTTP modules;

inserting the instrumentation code into the intercepted client application code using the HTTP module to generate an instrumented client application code, the instrumentation code being configured to be executed when the instrumented client application code is rendered at the client to capture performance information at the client, and being configured to transmit the captured performance information from the client; and

providing the instrumented client application code to be transmitted to the client.

2. The method of claim 1 , wherein said inserting comprises:

modifying page code of the client application code.

3. The method of claim 1 , further comprising:

configuring the instrumentation code to capture data regarding at least one of a type of browser at the client, a locale of the client, or a client language.

4. The method of claim 1 , further comprising:

receiving from the client performance information captured by the instrumented client application code.

5. The method of claim 1 , further comprising:

analyzing the client application code to determine one or more attributes of the client application code to monitor; and

configuring the instrumentation code to monitor the one or more attributes of the client application code.

6. The method of claim 1 , further comprising:

determining that the client application code meets predetermined criteria for receiving the instrumentation code; and

inserting the instrumentation code into the intercepted client application code using the HTTP module when the client application code meets the predetermined criteria.

7. The method of claim 6 , wherein said determining that the client application code meets predetermined criteria for receiving the instrumentation code is performed each time the client application code passes through the response pipeline.

8. A server, having a processor, comprising:

a response pipeline configured to generate a data stream to provide a client application code to a client in response to a request from the client for a web application, the request for the web application being processed using a plurality of HTTP (hypertext transfer protocol) modules and an HTTP handler in the response pipeline;

an application scanning module configured to intercept the client application code in the response pipeline, the application scanning module being included in an HTTP module of the plurality of HTTP modules; and

an instrumentation insertion module configured to insert the instrumentation code into the intercepted client application code to generate an instrumented client application code, the instrumentation code being configured to be executed when the instrumented client application code is rendered at the client to capture performance information at the client, and being configured to transmit the captured performance information from the client, the instrumentation insertion module being included in the HTTP module of the plurality of HTTP modules;

the response pipeline being configured to provide the instrumented client application code to be transmitted to the client.

9. The server of claim 8 , wherein the instrumentation insertion module is configured to modify page code of the client application code.

10. The server of claim 8 , wherein the instrumentation insertion module is configured to configure the instrumentation code to capture data regarding at least one of a browser at the client, a locale of the client, or a client language.

11. The server of claim 8 , further comprising:

a performance data receiving module that is configured to receive captured performance information from the instrumented client application code;

the performance data receiving module being configured to sample captured performance information received from a category of clients to generate a data set associated with a set of clients, and to analyze the data set associated with the set of clients.

12. The server of claim 8 , wherein the instrumentation insertion module is configured to analyze the client application code to determine one or more functions of the client application code to monitor; and

the instrumentation insertion module is configured to configure the instrumentation code to monitor the one or more functions of the client application code.

13. The server of claim 8 , wherein the application scanning module is configured to determine whether the client application code meets predetermined criteria for receiving the instrumentation code; and

wherein the instrumentation insertion module is configured to insert the instrumentation code into the intercepted client application code if the client application code meets the predetermined criteria.

14. The server of claim 13 , wherein the application scanning module includes a custom user control configured to search for the predetermined criteria.

15. A device having one or more processors and a memory storing instructions, the one or more processors configured to perform a method in accordance with the instructions stored in the memory, the method comprising:

intercepting a client application code in a response pipeline, the client application code generated in response to a request from a client for a web application, the request for the web application being processed using a plurality of HTTP (hypertext transfer protocol) modules and an HTTP handler in the response pipeline, said intercepting comprising receiving the client application code at an HTTP module of the plurality of HTTP modules;

inserting the instrumentation code into the intercepted client application code using the HTTP module-to generate an instrumented client application code, the instrumentation code being configured to be executed when the instrumented client application code is rendered at the client to capture performance information at the client, and being configured to transmit the captured performance information from the client; and

providing the instrumented client application code to be transmitted to the client.

16. The device of claim 15 , wherein said inserting comprises:

modifying page code of the client application code.

17. The device of claim 15 , wherein the method further comprises:

configuring the instrumentation code to capture data regarding at least one of a type of browser at the client, a locale of the client, or a client language.

18. The device of claim 15 , wherein the method further comprises:

receiving performance information from the client that was captured by the instrumented client application code.

19. The device of claim 15 , wherein the method further comprises:

analyzing the client application code to determine one or more attributes of the client application code to monitor; and

configuring the instrumentation code to monitor the one or more attributes of the client application code.

20. The device of claim 15 , wherein the method further comprises:

determining that the client application code meets predetermined criteria for receiving the instrumentation code; and

inserting the instrumentation code into the intercepted client application code using the HTTP module when the client application code meets the predetermined criteria.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2010
From: LETCA, ILARIE; COELHO, ALEXANDRE; KURAPATI, VENKATA SESHU KUMAR; SUDHAKAR, RAJEEV; SAVAGE, DANIEL; SANGHVI, ASHVINKUMAR; SOON LIM, JIN
To: MICROSOFT CORPORATION
Reel/Frame 024771/0758 →
Continuity (1)
Related Publication 20120023487A1 · Jan 26, 2012