IP Library › Granted Patent US 8,260,864
Granted Patent B2
US 8,260,864 · App. 12/030,836 · Granted Sep 4, 2012

Push mechanism for efficiently sending aggregated data items to client

Assignee: Microsoft Corporation
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,260,864
App. No.
12/030,836
Granted
Sep 4, 2012
Kind
B2
Abstract

A server push model for client/server communications. The push architecture operates on top of a non-push (e.g., request/response) protocol (e.g., HTTP) to combine notifications from multiple data sources (e.g., email, text messaging, etc.). The server can be a middle-tier server (or proxy) to which a single web client registers interest in one or more notification types from one or more data sources. The mid-tier server aggregates the notifications from the various data sources and delivers the notifications to the requesting client via a single “push” pipe. The web client then distributes each notification to the appropriate parts of the client user interface. A producer/consumer locking mechanism eliminates blocking threads waiting on a mutual exclusion lock. A notification throttling mechanism distinguishes different types of notifications in order to guarantee that the client is not overloaded with too much information.

Claims (43)

1. A computer-implemented data communication system, comprising:

a server having a processor for executing computer-executable components stored in memory including:

a data component for receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client;

a push component for establishing a communications pipe based on a request/response protocol and pushing aggregated data items to the client via the communications pipe, wherein:

the communications pipe is established by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open, and

the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and

a locking component for managing incoming threads having data items for transmission to the client via a holding thread, wherein:

exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client,

an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and

the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe.

2. The system of claim 1 , wherein the client is a web browser, and the server is a middle-tier server.

3. The system of claim 1 , the computer-executable components further comprising a registration component for registering the client for the different types of notifications.

4. The system of claim 1 , wherein:

incoming threads having different types of notifications for transmission to the client are prioritized by the locking component.

5. The system of claim 1 , the computer-executable components further comprising a throttling component for managing push of the data items via the communications pipe based on data item classification.

6. The system of claim 1 , wherein the request/response protocol is HTTP.

7. The system of claim 6 , wherein the single request is an XML HTTP request.

8. The system of claim 6 , wherein the data items from the multiple data sources are sent as partial HTTP responses to the single request.

9. The system of claim 1 , wherein the data items from the multiple data sources comprise email message notifications and text message notifications.

10. A computer-implemented method of communicating data to a client, comprising:

receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client;

establishing a communications pipe based on a request/response protocol by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open;

pushing aggregated data items to the client via the communications pipe, wherein the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and

managing incoming threads having data items for transmission to the client via a holding thread, wherein exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client, an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe.

11. The method of claim 10 , further comprising:

keeping the single request open until all the chunks of the holding thread are pushed to the client.

12. The method of claim 10 , wherein the client is a browser application and receives the chunks from a mid-tier server based on the request/response protocol.

13. The method of claim 11 , further comprising:

prioritizing incoming threads having different types of notifications directed to the client; and

processing the notifications of the incoming threads through the holding thread based on the prioritizing.

14. The method of claim 12 , wherein incoming threads notify the holding thread of the additional data items to be processed and then exit.

15. The method of claim 10 , further comprising throttling push of the data items to the client based on data item classification of the different types of notifications for the client.

16. The method of claim 10 , further comprising registering the client for the different types of notifications.

17. The method of claim 10 , wherein the chunks are consumed by the client as individual notification packets.

18. A computer-readable storage medium not consisting of a signal, the computer-readable storage medium storing computer-executable instructions, the computer-executable instructions, when executed, causing a server to perform steps comprising:

receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client;

establishing a communications pipe based on a request/response protocol by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open;

pushing aggregated data items to the client via the communications pipe, wherein the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and

managing incoming threads having data items for transmission to the client via a holding thread, wherein exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client, an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe.

19. The computer-readable storage medium of claim 18 , further storing computer-executable instructions for:

prioritizing incoming threads having different types of notifications directed to the client; and

processing the notifications of the incoming threads through the holding thread based on the prioritizing.

20. The computer-readable storage medium of claim 18 , further storing computer-executable instructions for throttling push of the data items to the client based on data item classification of the different types of notifications for the client.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2008
From: SANA, GISELLI PANONTINI DE SOUZA; KLING, DANIEL; RAMAN, SRIDHAR; EATON, JIM VAN; SIMPSON, RUSSELL
To: MICROSOFT CORPORATION
Reel/Frame 020505/0525 →
Continuity (1)
Related Publication 20090204666A1 · Aug 13, 2009