US20060031572A1 - Event broker - Google Patents
Event broker Download PDFInfo
- Publication number
- US20060031572A1 US20060031572A1 US10/848,417 US84841704A US2006031572A1 US 20060031572 A1 US20060031572 A1 US 20060031572A1 US 84841704 A US84841704 A US 84841704A US 2006031572 A1 US2006031572 A1 US 2006031572A1
- Authority
- US
- United States
- Prior art keywords
- events
- sink
- subscriber
- event
- filter
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims abstract description 69
- 238000001914 filtration Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 12
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 40
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008571 general function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Definitions
- aspects of the present invention generally relate to systems and methods of reporting events in a computer system across a distributed computing environment. More specifically, aspects of the invention provide for in-process and inter-process event notification for client server applications in a distributed computing environment.
- client machines and servers may be located at different locations.
- applications tend to be distributed between client and server machines.
- these systems become more componentized their complexity increases making it even more important that these components, regardless of their location, be able to efficiently communicate with each other.
- notifying an application of changes that an application program may be interested in presents a difficult problem.
- an application program may be interested in knowing about events such as any account balance changes to a particular user checking account.
- the application program may utilize message oriented middleware such as publisher subscriber programs to provide event notification services.
- a subscriber subscribes to receive certain events from a publisher of those events.
- a queue is used to receive the notifications of the particular events from the publisher and deliver those notifications to the subscriber.
- a flat namespace is used in order to determine which subscribers have registered to receive which events.
- Using these traditional publisher subscriber programs requires working with, tracking, and managing numerous queues as each subscriber has to subscribe to a unique set of queues which is redundant and inefficient. In addition, when publishers and subscribers need to work with queues they must work with each queue separately.
- the notification system should provide an inter communication channel which would enable components to communicate with each other whether they reside in the same process, in separate processes or across a distributed computer environment such as the Internet.
- the event notification system should provide a single unified interface regardless of the location of the components.
- the inventive method and system of the present invention overcomes the problems described above by providing for in-process and inter-process event notification for client server applications in a distributed computing environment using a hierarchical namespace. If the events fall within a hierarchical namespace registered by a subscriber, the events are placed in the subscriber's queue.
- the use of a hierarchical namespace enables a subscriber to forgo processing of events not intended for the subscriber even though additional events which are both intended for processing by the subscriber and not intended for processing by the subscriber are presented to the subscriber.
- the event notification system provides an inter communication channel which enables components to communicate with each other whether they reside in the same process, in separate processes or across a distributed computer environment such as the Internet.
- the invention may also provide a single unified interface regardless of the location of the components.
- FIG. 1 illustrates an example of a suitable computing system environment on which the invention may be implemented
- FIG. 2 shows a schematic diagram of an in-process event notification system in accordance with an aspect of the present invention
- FIG. 3 shows a schematic diagram of an inter-process event notification system in accordance with an aspect of the present invention
- FIG. 4 shows a schematic diagram for a distributed event notification system in accordance with an aspect of the present invention.
- FIG. 5 shows a second schematic diagram for a distributed event notification system in accordance with another aspect of the present invention.
- Sink an object for receiving notifications about events for a certain event queue.
- Source an object for transmitting events into event queues.
- the source object is a counter part of the sink object.
- Subscriber process or application code that opens a sink on some event queue.
- Provider process or application code that opens a source for some event queue.
- Embodiments of the present invention may comprise special purpose and/or general purpose computer devices that each may include standard computer hardware such as a central processing unit (CPU) or other processing means for executing computer executable instructions, computer readable media for storing executable instructions, a display or other output means for displaying or outputting information, a keyboard or other input means for inputting information, and so forth.
- suitable computer devices include hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCS, minicomputers, mainframe computers, and the like.
- program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types.
- functionality of the program modules may be combined or distributed as desired in various environments.
- Embodiments within the scope of the present invention also include computer readable media having executable instructions.
- Such computer readable media can be any available media, which can be accessed by a general purpose or special purpose computer.
- Such computer readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired executable instructions and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer readable media.
- Executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
- FIG. 1 illustrates an example of a suitable distributed computing system 100 operating environment in which the invention may be implemented.
- Distributed computing system 100 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention.
- System 100 is shown as including a communications network 102 .
- the specific network implementation used can be comprised of, for example, any type of local area network (LAN) and associated LAN topologies and protocols; simple point-to-point networks (such as direct modem-to-modem connection); and wide area network (WAN) implementations, including public Internets and commercial based network services.
- Systems may also include more than one communication network, such as a LAN coupled to the Internet
- Computer device 104 , computer device 106 , and computer device 108 may be coupled to communications network 102 through communication devices.
- Network interfaces or adapters may be used to connect computer devices 104 , 106 , and 108 to a LAN.
- communications network 102 includes a WAN
- modems or other means for establishing communications over WANs may be utilized.
- Computer devices 104 , 106 and 108 may communicate with one another via communication network 102 in ways that are well known in the art. The existence of any of various well-known protocols, such as TCP/IP, Ethernet, FTP, HTTP and the like, is presumed.
- Computers devices 104 , 106 and 108 may exchange content, applications, messages and other objects via communications network 102 .
- computer device 108 may be implemented with a server computer or server farm.
- Computer device 108 may also be configured to provide services to computer devices 104 and 106 .
- computing devices 104 , 106 , and 108 may also be arranged in a peer-to-peer arrangement in which, for a given operation, ad-hoc relationships among the computing devices may be formed.
- FIG. 2 illustrates a schematic diagram of an in-process event notification system in accordance with an aspect of the present invention.
- Such an event notification system may be located on one or more computing devices, such as the computing devices shown in FIG. 1 .
- Process 1 202 has registered within its domain sink 1 object 204 and sink 2 object 206 .
- Sink 1 object 204 and sink 2 object 206 may be registered to receive particular events of interest.
- the events or event objects (not shown) may comprise an extendable container that carries the event payload data from the source objects to the sink objects.
- the event payload data may include an event name, an event type, a sourceobjID for the source object that injected the event, and a time stamp of when the event was injected.
- Process 1 202 may register within its domain source 1 object 208 .
- Sink 1 object 204 , sink 2 object 206 , and source 1 object 208 may communicate through an inter-component communication channel 210 which may be called an Event Broker for the purpose of describing the present invention.
- the Event Broker 210 may enable components such as sink 1 object 204 , sink 2 object 206 , and source 1 object 208 to interact with each other whether the components reside in the same process such as Process 1 202 or in separate processes.
- Event Broker 210 may also enable components to communicate with each other over a distributed environment such as the Internet.
- Process 1 202 may communicate with EB.dll 212 through an application programming interface EB API 214 .
- EB.dll 212 may manage in-process event queues and may act as a proxy for out of process event queues.
- Objects such as sink 1 object 244 , sink 2 object 246 , and source 1 object 248 may be handles used to identify objects within EB.dll 212 during communication through EB API 214 .
- EB API 214 may provide a single unified interface regardless of the location of the components.
- EB API 214 may include at least four sets of functions such as EB source functions, EB sink functions, EB general functions, and EB transaction functions. These functions may operate on a source object, a sink object, or an event.
- Source 1 object 208 may inject events into the publish-subscribe communication system of the present invention.
- the events injected by source 1 object 208 may be identified by a hierarchical naming convention called a hierarchical namespace.
- the hierarchical namespace may comprise a hierarchy representing a geographical, logical, or physical organization of objects.
- An example of a hierarchical namespace is illustrated below in the context of a power plant. Those skilled in the art will realize that numerous illustrations may have been utilized to illustrate a hierarchical namespace and the use of the following power plant example is not intended to be limiting.
- the output readings of generator G 8 may include power output in megawatts or stator temperature reading from thermocouples in degrees Celsius. Electricians subscribed to “/PSE/PowerPlants/Plant5/Turbines/Generators/G8” may receive all events pertaining to generator G 8 .
- Events concerning plant number 5 may be named “/PSE/PowerPlants/Plant5.” These events may include all events for plant number 5 including the events named for generator G 8 , as Plant 5 is the parent class of generator G 8 . Similarly, generator G 8 is a subclass of the parent class Generators.
- a subscriber of events of “/PSE/PowerPlants/Plant5” may receive events concerning turbines, generators, and generator G 8 as “/PSE/PowerPlants/Plant5” is the parent structure of “/PSE/PowerPlants/Plant5/Turbines/Generators/G8.”
- each level of the hierarchy may be separated by a forward slash character similar to a file path in an operating system.
- sink 1 object 204 may be interested in events that relate to Accounts 216 .
- sink 2 object 206 may be interested in events concerning only a particular account such as 90 Checking 218 .
- source 1 object 208 injects an event such as “/Account/90 Checking/Details/Friendly Name,” the event is in-scope for both sink 1 object 204 and sink 2 object 206 .
- Eb.dll 212 may decide which sinks such as sink 1 object 204 or sink 2 object 206 want to receive the events.
- EB.dll 212 may manage in-process event queues for both sink 1 object 204 and sink 2 object 206 .
- event “/Account/90 Checking/Details/Friendly Name” is in-scope for both sink 1 object 204 and sink 2 object 206 , the event “/Account/90 Checking/Details/Friendly Name” may be stored in queue 220 for sink 1 object 204 . and queue 222 for sink 2 object 206 by EB.dll 212 .
- source 1 object 208 may inject an event such as “/Account/00 Savings/Details/Friendly Name.”
- an event such as “/Account/00 Savings/Details/Friendly Name.”
- only sink 1 object 204 may be in-scope as determined by Eb.dll 212 .
- event “/Account/00 Savings/Details/Friendly Name” is in-scope for sink 1 object 204
- the event “/Account/00 Savings/Details/Friendly Name” may be stored in queue 220 for sink 1 object 204 . Whether an event will be placed in a sink's queue will depend on the events that the particular sink has registered for as indicated by the hierarchical structure indicated in FIG. 2 for sink 1 object 204 and sink 2 object 206 .
- sink 1 object 204 may be registered for events for any Accounts 216 .
- sink 2 object 206 may be registered for the events on the 90 Checking account 218 as opposed to the more-inclusive Accounts 216 .
- a subscriber may also specify various filters.
- Other filters may include an event type filter such as an enum value filter, a property ID filter, or a string comparison based filter.
- Events may be delivered from sinks' event queues to their respective subscribers either synchronously or asynchronously through callbacks that are provided at sink registration.
- Each sink may be designated as either synchronous or asynchronous at the time of its registration.
- pending events for synchronous sinks that registered on the current thread are dispatched through their respective callbacks. This may be completed on the same thread and before control returns to the caller.
- Asynchronous sinks may be handled by a background thread spawned by the Event Broker system. Asynchronous sinks within the process may be lumped together. By default, sinks may be handled in the order they were registered. However, the order may be overridden by assigning priorities to the registered sinks.
- a database engine stores numerous transactions and details about those transactions. Examples of information that may be stored in the database include information about accounts, account balances, and payee information.
- a source such as the database may inject events into the system and the EB.dll 212 may evaluate the events for a matching scope. Any event that has a matching scope may be placed in the sink's queue.
- FIG. 3 illustrates a schematic diagram of an inter-process event notification system in accordance with another aspect of the present invention.
- a sink 3 object 326 resides in a Process 1 304 and a source 2 object 328 resides in a Process 2 308 .
- additional sources and sinks may reside in either Process 1 304 or Process 2 308 , as only one source 2 object 328 and sink 3 object 326 were chosen for ease in illustrating certain aspects of the invention.
- An Event Broker 310 may comprise components such as EB.dll 312 , EB Service component 314 , EB.dll 316 , and EB common.dll (not shown).
- Process 1 304 may communicate with EB.dll 312 through an application programming interface EB API 318 .
- Process 2 308 may communicate with EB.dll 316 through application programming interface EB API 318 .
- EB.dll 312 and EB.dll 316 may act as a proxy for out of process event queues.
- Objects such as sink 3 object 302 and source 2 object 306 may be handles used to identify objects within EB.dll 312 and EB.dll 316 during communication through an EB API 318 .
- EB API 318 may provide a single unified interface regardless of the location of the components.
- EB API 318 may include at least four sets of functions such as EB source functions, EB sink functions, EB general functions, and EB transaction functions. These functions may operate on a source object, a sink object, or an event.
- EB Service 314 may manage event queues that are not in-process. For instance, EB Service 314 manages queue 320 for sink 3 object 326 . EB Service 314 receives events from the source 2 object 328 through an inter-process communication (IPC) channel 309 .
- IPC inter-process communication
- Process 1 304 registers a sink 3 object 326 on the event scope “LOCALHOST/Online”. This may result in a proxy sink “Sink 3 (LOCALHOST)” 326 being created in EB.dll 312 which is running in Process 1 304 , but the actual sink 3 object 326 is created in the EB Service 314 .
- LOCALHOST proxy sink
- Process 2 308 may register source 2 object 328 on the event scope “LOCALHOST/Online”. All events generated by source 2 object 328 may be delivered to interested sinks' event queues in the EB Service 314 . EB Service 314 determines which sinks may be interested in the injected events.
- EB Service 314 compares the events to an internal data structure as indicated by hierarchy 322 .
- EB service 314 may determine if sink 3 object 326 is interested in the event injected by source 2 object 328 by comparing the event's namespace to the internal data structure represented by hierarchy 322 . If sink 3 object 326 is interested in the injected event, then the event is placed in queue 320 . When sink 3 object 326 wants to retrieve the events located in queue 320 , the events are routed to sink 3 object's local queue 324 located in Process 1 304 .
- the sink 3 object 326 located in Process 1 304 is a proxy object or proxy sink for sink 3 object 326 in EB Service 314 . Dotted line 330 in FIG.
- EB Service 3 conveys the logical association between the in-process proxy sink 326 and the actual sink 3 object 326 that exists in EB Service 314 .
- the actual communication between these components may be routed through IPC channel 309 .
- the communication between proxy objects and their respective sink and source objects in the EB Service 314 may be initiated periodically by the proxy objects.
- FIG. 4 shows a schematic diagram for a distributed event notification system in accordance with an aspect of the present invention.
- Process 1 400 resides in a client machine 401 .
- Process 1 400 has registered within its domain sink 4 object 420 and sink 5 object 422 .
- Sink 4 object 420 and sink 5 object 422 may be registered to receive particular events of interest.
- a source 3 object 450 resides in Process 3 404 on a server machine 406 .
- Objects such as sink 4 object 408 , sink 5 object 410 , and source 3 object 402 may be handles used to identify objects within EB.dll 412 or EB.dll 416 during communication through EB API 418 .
- An Event Broker 410 may comprise components such as a client-machine EB.dll 412 , an EB Service component 414 , a server-machine EB.dll 416 , and EB common.dll (not shown).
- Process 3 404 may communicate with server-machine EB.dll 416 through an application programming interface EB API 418 .
- Process 1 400 may communicate with client-machine EB.dll 412 through application programming interface EB API 418 .
- the event queues for which sink 4 object 420 and sinkS object 422 are registered may be managed by the EB Service 414 on server machine 406 .
- Proxy objects for sink 4 object 420 and Sink 5 object 422 may be located in the Event Broker component EB.dll 412 of Process 1 400 on the client machine 401 .
- EB Service 414 may receive events from source 3 object 450 through an inter-process communication (IPC) channel 409 .
- Process 1 400 may register sink 4 object 420 and sinkS object 422 for a particular event scope. This may result in a proxy sink “Sink4 (Server1)” 420 being created in EB.dll 412 , which is running in Process 1 400 , but the actual sink 4 object 420 is created in the EB Service 414 .
- a proxy sink “Sink5 (Server1)” 422 may be created in EB.dll 412 , but the actual sink 5 object 422 is created in the EB Service 414 .
- Dotted lines 424 and 426 in FIG. 4 convey logical associations between the in-process proxy sinks 420 and 422 and the actual sink 4 object 420 and sink 5 object 422 that exists in EB Service 414 .
- Events generated by source 3 object 450 may be delivered to interested sinks' event queues in the EB Service 414 .
- EB Service 414 determines which sinks may be interested in the injected events.
- EB Service 414 compares the events to an internal data structure as indicated by hierarchy 428 .
- EB service 414 may determine if sink 4 object 420 or sink 5 object 422 are interested in the event injected by source 3 object 450 by comparing the event's namespace to the internal data structure represented by hierarchy 428 . If sink 4 object 420 or sink 5 object 422 are interested in the injected event, then the event is placed in the sink's respective queue such as queues 430 .
- sink 4 object 420 or sink 5 object 422 wants to retrieve the events located in queues 430 , the events are routed to sinks local queues 432 or 434 located in Process 1 400 .
- the communication between the client machine 401 and the server machine 406 may be accomplished over SOAP (Simple Object Access Protocol) 436 through a SOAP Handler 438 located on the server machine 406 .
- SOAP Simple Object Access Protocol
- EB.dll 412 in Process 1 400 may communicate through the use of SOAP 436 and SOAP handler 438 .
- the SOAP Handler 438 translates the request from EB.dll 412 and forwards the request through IPC 409 to EB Service 414 .
- DCOM may be used as an alternative to SOAP.
- FIG. 5 illustrates another schematic diagram for a distributed event notification system in accordance with another aspect of the present invention.
- FIG. 5 shows that any number of client machines such as Client Machine A 502 and Client Machine Z 504 and servers such as Server A 506 and Server Z 508 may utilize the event notification system of the current invention over a distributed environment such as the Internet 510 .
- the client machines and sever machines may include components of the event notification system in order to provide for in-process and inter-process event notification.
- the event notification system utilizes a hierarchical namespace to determine events of interest to registered subscribers. If an event falls within the hierarchical namespace of a registered subscriber, the event is received in the subscriber's queue.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
The invention provides for in-process and inter-process event notification in a distributed computing environment. The event notification system and method utilizes a hierarchical namespace to determine events of interest to registered subscribers. If an event falls within the hierarchical namespace of a registered subscriber, the event is received in the subscriber's queue. The use of a hierarchical namespace enables a subscriber to process events intended for the subscriber even though additional events are presented to the subscriber.
Description
- Aspects of the present invention generally relate to systems and methods of reporting events in a computer system across a distributed computing environment. More specifically, aspects of the invention provide for in-process and inter-process event notification for client server applications in a distributed computing environment.
- In a distributed computer environment such as the Internet, client machines and servers may be located at different locations. In such environments, applications tend to be distributed between client and server machines. As these systems become more componentized their complexity increases making it even more important that these components, regardless of their location, be able to efficiently communicate with each other.
- In such distributed and componentized systems, notifying an application of changes that an application program may be interested in presents a difficult problem. For instance, an application program may be interested in knowing about events such as any account balance changes to a particular user checking account. In order to accomplish these notifications, the application program may utilize message oriented middleware such as publisher subscriber programs to provide event notification services.
- In these publisher subscriber application programs, a subscriber subscribes to receive certain events from a publisher of those events. A queue is used to receive the notifications of the particular events from the publisher and deliver those notifications to the subscriber. In these traditional publisher subscriber programs, a flat namespace is used in order to determine which subscribers have registered to receive which events. Using these traditional publisher subscriber programs requires working with, tracking, and managing numerous queues as each subscriber has to subscribe to a unique set of queues which is redundant and inefficient. In addition, when publishers and subscribers need to work with queues they must work with each queue separately.
- Therefore, there is a need in the art for an improved system and method for event notification that may be utilized in a client server architecture which supports both in-process and inter-process event notification. The notification system should provide an inter communication channel which would enable components to communicate with each other whether they reside in the same process, in separate processes or across a distributed computer environment such as the Internet. In addition, the event notification system should provide a single unified interface regardless of the location of the components.
- The inventive method and system of the present invention overcomes the problems described above by providing for in-process and inter-process event notification for client server applications in a distributed computing environment using a hierarchical namespace. If the events fall within a hierarchical namespace registered by a subscriber, the events are placed in the subscriber's queue. The use of a hierarchical namespace enables a subscriber to forgo processing of events not intended for the subscriber even though additional events which are both intended for processing by the subscriber and not intended for processing by the subscriber are presented to the subscriber.
- The event notification system provides an inter communication channel which enables components to communicate with each other whether they reside in the same process, in separate processes or across a distributed computer environment such as the Internet. The invention may also provide a single unified interface regardless of the location of the components.
- A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description in consideration of the accompanying drawings, in which like reference numbers indicate like features, and wherein:
-
FIG. 1 illustrates an example of a suitable computing system environment on which the invention may be implemented; -
FIG. 2 shows a schematic diagram of an in-process event notification system in accordance with an aspect of the present invention; -
FIG. 3 shows a schematic diagram of an inter-process event notification system in accordance with an aspect of the present invention; -
FIG. 4 shows a schematic diagram for a distributed event notification system in accordance with an aspect of the present invention; and -
FIG. 5 shows a second schematic diagram for a distributed event notification system in accordance with another aspect of the present invention. - In order to clarify the disclosure of the invention, definitions of several relevant terms are provided herein.
- Sink: an object for receiving notifications about events for a certain event queue.
- Source: an object for transmitting events into event queues. The source object is a counter part of the sink object.
- Subscriber: process or application code that opens a sink on some event queue.
- Provider: process or application code that opens a source for some event queue.
- Exemplary Operating Environment
- Aspects of the invention are suitable for use in a variety of distributed computing system environments. In distributed computing environments, tasks may be performed by remote computer devices that are linked through communications networks. Embodiments of the present invention may comprise special purpose and/or general purpose computer devices that each may include standard computer hardware such as a central processing unit (CPU) or other processing means for executing computer executable instructions, computer readable media for storing executable instructions, a display or other output means for displaying or outputting information, a keyboard or other input means for inputting information, and so forth. Examples of suitable computer devices include hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCS, minicomputers, mainframe computers, and the like.
- The invention will be described in the general context of computer-executable instructions, such as program modules, that are executed by a personal computer or a server. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various environments.
- Embodiments within the scope of the present invention also include computer readable media having executable instructions. Such computer readable media can be any available media, which can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired executable instructions and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer readable media. Executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
-
FIG. 1 illustrates an example of a suitable distributed computing system 100 operating environment in which the invention may be implemented. Distributed computing system 100 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. System 100 is shown as including a communications network 102. The specific network implementation used can be comprised of, for example, any type of local area network (LAN) and associated LAN topologies and protocols; simple point-to-point networks (such as direct modem-to-modem connection); and wide area network (WAN) implementations, including public Internets and commercial based network services. Systems may also include more than one communication network, such as a LAN coupled to the Internet - Computer device 104, computer device 106, and computer device 108 may be coupled to communications network 102 through communication devices. Network interfaces or adapters may be used to connect computer devices 104, 106, and 108 to a LAN. When communications network 102 includes a WAN, modems or other means for establishing communications over WANs may be utilized. Computer devices 104, 106 and 108 may communicate with one another via communication network 102 in ways that are well known in the art. The existence of any of various well-known protocols, such as TCP/IP, Ethernet, FTP, HTTP and the like, is presumed.
- Computers devices 104, 106 and 108 may exchange content, applications, messages and other objects via communications network 102. In some aspects of the invention, computer device 108 may be implemented with a server computer or server farm. Computer device 108 may also be configured to provide services to computer devices 104 and 106. Alternatively, computing devices 104, 106, and 108 may also be arranged in a peer-to-peer arrangement in which, for a given operation, ad-hoc relationships among the computing devices may be formed.
-
FIG. 2 illustrates a schematic diagram of an in-process event notification system in accordance with an aspect of the present invention. Such an event notification system may be located on one or more computing devices, such as the computing devices shown inFIG. 1 . InFIG. 2 ,Process1 202 has registered within itsdomain sink1 object 204 andsink2 object 206.Sink1 object 204 and sink2 object 206 may be registered to receive particular events of interest. The events or event objects (not shown) may comprise an extendable container that carries the event payload data from the source objects to the sink objects. The event payload data may include an event name, an event type, a sourceobjID for the source object that injected the event, and a time stamp of when the event was injected. -
Process1 202 may register within itsdomain source1 object 208.Sink1 object 204,sink2 object 206, and source1 object 208 may communicate through aninter-component communication channel 210 which may be called an Event Broker for the purpose of describing the present invention. TheEvent Broker 210 may enable components such assink1 object 204,sink2 object 206, and source1 object 208 to interact with each other whether the components reside in the same process such asProcess1 202 or in separate processes. In addition,Event Broker 210 may also enable components to communicate with each other over a distributed environment such as the Internet. - Referring to
FIG. 2 ,Process1 202 may communicate with EB.dll 212 through an application programminginterface EB API 214.EB.dll 212 may manage in-process event queues and may act as a proxy for out of process event queues. Objects such assink1 object 244,sink2 object 246, and source1 object 248 may be handles used to identify objects within EB.dll 212 during communication throughEB API 214. -
EB API 214 may provide a single unified interface regardless of the location of the components. In addition,EB API 214 may include at least four sets of functions such as EB source functions, EB sink functions, EB general functions, and EB transaction functions. These functions may operate on a source object, a sink object, or an event. -
Source1 object 208 may inject events into the publish-subscribe communication system of the present invention. The events injected bysource1 object 208 may be identified by a hierarchical naming convention called a hierarchical namespace. The hierarchical namespace may comprise a hierarchy representing a geographical, logical, or physical organization of objects. An example of a hierarchical namespace is illustrated below in the context of a power plant. Those skilled in the art will realize that numerous illustrations may have been utilized to illustrate a hierarchical namespace and the use of the following power plant example is not intended to be limiting. - In a power plant, suppose there are hundreds of subsystems, thousands of components, and millions of subcomponents that may generate events. In addition, there may be hundreds of entities that need to be notified of these events. Some subscribers of events may only care about a particular subsystem. For instance, electricians may only be concerned with events for which they may have responsibility, such as events concerning electrical systems or generation equipment such as generators. Electricians may subscribe to events that are named “/PSE/PowerPlants/Plant5/Turbines/Generators/G8.” The events that are named “/PSE/PowerPlants/Plant5/Turbines/Generators/G8” may comprise the particular output reading of a generator identified as generator G8. The output readings of generator G8 may include power output in megawatts or stator temperature reading from thermocouples in degrees Celsius. Electricians subscribed to “/PSE/PowerPlants/Plant5/Turbines/Generators/G8” may receive all events pertaining to generator G8.
- Other subscribers of events may be interested in all events concerning plant number 5. Events concerning plant number 5 may be named “/PSE/PowerPlants/Plant5.” These events may include all events for plant number 5 including the events named for generator G8, as Plant5 is the parent class of generator G8. Similarly, generator G8 is a subclass of the parent class Generators. A subscriber of events of “/PSE/PowerPlants/Plant5” may receive events concerning turbines, generators, and generator G8 as “/PSE/PowerPlants/Plant5” is the parent structure of “/PSE/PowerPlants/Plant5/Turbines/Generators/G8.”
- As one skilled in the art will realize, the root of the hierarchy tree is represented by the string “/”. Each level of the hierarchy may be separated by a forward slash character similar to a file path in an operating system.
- Returning to
FIG. 2 ,sink1 object 204 may be interested in events that relate toAccounts 216. Furthermore,sink2 object 206 may be interested in events concerning only a particular account such as 90Checking 218. When source1 object 208 injects an event such as “/Account/90 Checking/Details/Friendly Name,” the event is in-scope for both sink1 object 204 andsink2 object 206.Eb.dll 212 may decide which sinks such as sink1 object 204 orsink2 object 206 want to receive the events.EB.dll 212 may manage in-process event queues for both sink1 object 204 andsink2 object 206. - Because event “/Account/90 Checking/Details/Friendly Name” is in-scope for both sink1 object 204 and
sink2 object 206, the event “/Account/90 Checking/Details/Friendly Name” may be stored inqueue 220 forsink1 object 204. andqueue 222 forsink2 object 206 byEB.dll 212. - As another example,
source1 object 208 may inject an event such as “/Account/00 Savings/Details/Friendly Name.” In this instance, only sink1object 204 may be in-scope as determined byEb.dll 212. Because event “/Account/00 Savings/Details/Friendly Name” is in-scope forsink1 object 204, the event “/Account/00 Savings/Details/Friendly Name” may be stored inqueue 220 forsink1 object 204. Whether an event will be placed in a sink's queue will depend on the events that the particular sink has registered for as indicated by the hierarchical structure indicated inFIG. 2 forsink1 object 204 andsink2 object 206. As shown byarrow 224 located betweensink1 object 204 andAccounts 216,sink1 object 204 may be registered for events for anyAccounts 216. Similarly, as shown byarrow 226 located betweensink2 object Checking 218,sink2 object 206 may be registered for the events on the 90Checking account 218 as opposed to the more-inclusive Accounts 216. - In addition to specifying the event scope for a certain sink, a subscriber may also specify various filters. The filters refer to properties in the event payload. For example, when registering
sink1 object 204,Process1 202 might specify a filter such as EventType =“Balance Change.” This may limit the events delivered to sink1 to any balance change event on any of the accounts. Other filters may include an event type filter such as an enum value filter, a property ID filter, or a string comparison based filter. - Events may be delivered from sinks' event queues to their respective subscribers either synchronously or asynchronously through callbacks that are provided at sink registration. Each sink may be designated as either synchronous or asynchronous at the time of its registration.
- In the synchronous case, pending events for synchronous sinks that registered on the current thread are dispatched through their respective callbacks. This may be completed on the same thread and before control returns to the caller.
- Asynchronous sinks may be handled by a background thread spawned by the Event Broker system. Asynchronous sinks within the process may be lumped together. By default, sinks may be handled in the order they were registered. However, the order may be overridden by assigning priorities to the registered sinks.
- An example of an application that may utilize the above described aspect of the present invention will now be discussed. In an application program such as Microsoft® Money, a database engine stores numerous transactions and details about those transactions. Examples of information that may be stored in the database include information about accounts, account balances, and payee information. In an application such as Microsoft® Money, it may be useful for a user interface component to register through a publish-subscribe system which utilizes a hierarchical namespace in order to receive notifications from other components. For example, a sink may want to know if a balance on an account changed. A source such as the database may inject events into the system and the EB.dll 212 may evaluate the events for a matching scope. Any event that has a matching scope may be placed in the sink's queue.
-
FIG. 3 illustrates a schematic diagram of an inter-process event notification system in accordance with another aspect of the present invention. InFIG. 3 , asink3 object 326 resides in aProcess1 304 and asource2 object 328 resides in aProcess2 308. Those skilled in the art will realize that additional sources and sinks may reside in eitherProcess 1 304 orProcess2 308, as only onesource2 object 328 and sink3 object 326 were chosen for ease in illustrating certain aspects of the invention. - An
Event Broker 310 may comprise components such asEB.dll 312,EB Service component 314,EB.dll 316, and EB common.dll (not shown).Process1 304 may communicate with EB.dll 312 through an application programminginterface EB API 318. Similarly,Process2 308 may communicate with EB.dll 316 through application programminginterface EB API 318.EB.dll 312 andEB.dll 316 may act as a proxy for out of process event queues. Objects such assink3 object 302 and source2 object 306 may be handles used to identify objects within EB.dll 312 and EB.dll 316 during communication through anEB API 318. -
EB API 318 may provide a single unified interface regardless of the location of the components. In addition,EB API 318 may include at least four sets of functions such as EB source functions, EB sink functions, EB general functions, and EB transaction functions. These functions may operate on a source object, a sink object, or an event. -
EB Service 314 may manage event queues that are not in-process. For instance,EB Service 314 managesqueue 320 forsink3 object 326.EB Service 314 receives events from thesource2 object 328 through an inter-process communication (IPC)channel 309. -
Process1 304 registers asink3 object 326 on the event scope “LOCALHOST/Online”. This may result in a proxy sink “Sink3 (LOCALHOST)” 326 being created in EB.dll 312 which is running inProcess1 304, but theactual sink3 object 326 is created in theEB Service 314. -
Process2 308 may registersource2 object 328 on the event scope “LOCALHOST/Online”. All events generated bysource2 object 328 may be delivered to interested sinks' event queues in theEB Service 314.EB Service 314 determines which sinks may be interested in the injected events. - In
FIG. 3 ,EB Service 314 compares the events to an internal data structure as indicated byhierarchy 322.EB service 314 may determine if sink3 object 326 is interested in the event injected bysource2 object 328 by comparing the event's namespace to the internal data structure represented byhierarchy 322. If sink3 object 326 is interested in the injected event, then the event is placed inqueue 320. When sink3 object 326 wants to retrieve the events located inqueue 320, the events are routed to sink3 object'slocal queue 324 located inProcess1 304. The sink3 object 326 located inProcess1 304 is a proxy object or proxy sink forsink3 object 326 inEB Service 314.Dotted line 330 inFIG. 3 conveys the logical association between the in-process proxy sink 326 and theactual sink3 object 326 that exists inEB Service 314. The actual communication between these components may be routed throughIPC channel 309. The communication between proxy objects and their respective sink and source objects in theEB Service 314 may be initiated periodically by the proxy objects. -
FIG. 4 shows a schematic diagram for a distributed event notification system in accordance with an aspect of the present invention. InFIG. 4 ,Process1 400 resides in aclient machine 401.Process1 400 has registered within itsdomain sink4 object 420 andsink5 object 422.Sink4 object 420 and sink5 object 422 may be registered to receive particular events of interest. - A
source3 object 450 resides inProcess3 404 on aserver machine 406. Those skilled in the art will realize that additional sources and sinks may reside onserver machine 406 or on aclient machine 401. Objects such assink4 object 408,sink5 object 410, and source3 object 402 may be handles used to identify objects within EB.dll 412 or EB.dll 416 during communication throughEB API 418. - An
Event Broker 410 may comprise components such as a client-machine EB.dll 412, anEB Service component 414, a server-machine EB.dll 416, and EB common.dll (not shown).Process3 404 may communicate with server-machine EB.dll 416 through an application programminginterface EB API 418. Similarly,Process1 400 may communicate with client-machine EB.dll 412 through application programminginterface EB API 418. - The event queues for which sink4 object 420 and sinkS object 422 are registered may be managed by the
EB Service 414 onserver machine 406. Proxy objects forsink4 object 420 andSink5 object 422 may be located in the Event Broker component EB.dll 412 ofProcess1 400 on theclient machine 401. -
EB Service 414 may receive events fromsource3 object 450 through an inter-process communication (IPC)channel 409.Process1 400 may registersink4 object 420 and sinkS object 422 for a particular event scope. This may result in a proxy sink “Sink4 (Server1)” 420 being created inEB.dll 412, which is running inProcess1 400, but theactual sink4 object 420 is created in theEB Service 414. Similarly, forsink5 object 422, a proxy sink “Sink5 (Server1)” 422 may be created inEB.dll 412, but theactual sink5 object 422 is created in theEB Service 414.Dotted lines FIG. 4 , convey logical associations between the in-process proxy sinks 420 and 422 and theactual sink4 object 420 and sink5 object 422 that exists inEB Service 414. - Events generated by
source3 object 450 may be delivered to interested sinks' event queues in theEB Service 414.EB Service 414 determines which sinks may be interested in the injected events. - In
FIG. 4 ,EB Service 414 compares the events to an internal data structure as indicated byhierarchy 428.EB service 414 may determine if sink4 object 420 orsink5 object 422 are interested in the event injected bysource3 object 450 by comparing the event's namespace to the internal data structure represented byhierarchy 428. If sink4 object 420 orsink5 object 422 are interested in the injected event, then the event is placed in the sink's respective queue such asqueues 430. - When sink4 object 420 or
sink5 object 422 wants to retrieve the events located inqueues 430, the events are routed to sinkslocal queues Process1 400. - The communication between the
client machine 401 and theserver machine 406 may be accomplished over SOAP (Simple Object Access Protocol) 436 through aSOAP Handler 438 located on theserver machine 406. For example, EB.dll 412 inProcess1 400 may communicate through the use ofSOAP 436 andSOAP handler 438. TheSOAP Handler 438 translates the request from EB.dll 412 and forwards the request throughIPC 409 toEB Service 414. In a LAN environment, DCOM may be used as an alternative to SOAP. -
FIG. 5 illustrates another schematic diagram for a distributed event notification system in accordance with another aspect of the present invention.FIG. 5 shows that any number of client machines such asClient Machine A 502 andClient Machine Z 504 and servers such asServer A 506 andServer Z 508 may utilize the event notification system of the current invention over a distributed environment such as theInternet 510. Similar to the various aspects of the invention described above, the client machines and sever machines may include components of the event notification system in order to provide for in-process and inter-process event notification. The event notification system utilizes a hierarchical namespace to determine events of interest to registered subscribers. If an event falls within the hierarchical namespace of a registered subscriber, the event is received in the subscriber's queue. - While the invention has been described with respect to specific examples including presently preferred modes of carrying out the invention, those skilled in the art will appreciate that there are numerous variations and permutations of the above described systems and techniques that fall within the spirit and scope of the invention as set forth in the appended claims.
Claims (25)
1. A method of routing events of interest to a subscriber of events, the method comprising:
(a) specifying a hierarchical namespace to identify the events of interest to the subscriber;
(b) registering a sink with the specified hierarchical namespace;
(c) comparing names of the events to the hierarchical namespace of the registered sink; and
(d) if the names of the events fall within the specified hierarchal namespace of the registered sink, delivering the events to a sink queue.
2. The method of claim 1 , wherein the hierarchical namespace comprises a tree structure.
3. The method of claim 1 , further comprising:
(e) delivering the events from the sink queue to the subscriber synchronously.
4. The method of claim 3 , wherein the synchronously delivered events are provided through callbacks at sink registration
5. The method of claim 1 , further comprising:
(e) delivering the events from the sink queue to the subscriber asynchronously through callbacks provided at sink registration.
6. The method of claim 1 , wherein the subscriber specifies a filter to further limit the events of interest to the subscriber.
7. The method of claim 6 , wherein the filter comprises an event type filter, the event type including an enum value.
8. The method of claim 6 , wherein the filter comprises a property ID filter.
9. The method of claim 6 , wherein the filter comprises a string comparison based filter.
10. A computer-readable medium having computer-executable instructions for performing the method of claim 1 .
11. A method of routing events to a subscriber in a networked environment, the method comprising:
(a) registering a sink with a specified hierarchical namespace through the networked environment;
(b) receiving events transmitted by a source through an inter-process communication channel;
(c) comparing names of the events to the specified hierarchical namespace of the registered sink; and
(d) if the names of the events fall within the specified hierarchal namespace of the registered sink, delivering the events to a sink queue.
12. The method of claim 11 , wherein the hierarchical namespace comprises a tree structure.
13. The method of claim 11 , further comprising:
(e) delivering the events from the sink queue to the subscriber synchronously.
14. The method of claim 13 , wherein the synchronously delivered events are provided through callbacks at sink registration
15. The method of claim 11 , further comprising:
(e) delivering the events from the sink queue to the subscriber asynchronously through callbacks provided at sink registration.
16. The method of claim 11 , wherein the subscriber specifies a filter to further limit the events of interest to the subscriber.
17. The method of claim 16 , wherein the filter comprises an event type filter, the event type including an enum value.
18. The method of claim 16 , wherein the filter comprises a property ID filter.
19. The method of claim 16 , wherein the filter comprises a string comparison based filter.
20. A computer-readable medium having computer-executable instructions for performing the method of claim 11 .
21. The method of claim 11 , wherein the comparison of names of the events to the specified hierarchical namespace of the registered sink further includes a wild card string comparison.
22. An event notification system for notifying a subscriber of event occurrences, the event notification system comprising:
(a) at least one source object for transmitting events;
(b) at least one sink object for receiving the transmitted events, the at least one sink object registering a hierarchical namespace to identify the events of interest to the subscriber; and
(c) event filtering components in communication with the at least one source object and the at least one sink object, the event filtering components capable of identifying the events of interest to the subscriber.
23. The system of claim 22 , wherein the hierarchical namespace comprises a tree structure.
24. At least one computer readable medium containing computer-executable instructions that, when executed, route events to a subscriber in a networked environment, by performing steps comprising:
(a) registering a sink with a specified hierarchical namespace through the networked environment;
(b) receiving events transmitted by a source through an inter-process communication channel;
(c) comparing names of the events to the specified hierarchical namespace of the registered sink; and
(d) if the names of the events fall within the specified hierarchal namespace of the registered sink, delivering the events to a sink queue.
25. The computer readable medium of claim 24 , wherein the hierarchical namespace comprises a tree structure.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/848,417 US20060031572A1 (en) | 2004-05-18 | 2004-05-18 | Event broker |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/848,417 US20060031572A1 (en) | 2004-05-18 | 2004-05-18 | Event broker |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060031572A1 true US20060031572A1 (en) | 2006-02-09 |
Family
ID=35758808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/848,417 Abandoned US20060031572A1 (en) | 2004-05-18 | 2004-05-18 | Event broker |
Country Status (1)
Country | Link |
---|---|
US (1) | US20060031572A1 (en) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027928A1 (en) * | 2005-07-29 | 2007-02-01 | International Business Machines Corporation | Method and apparatus to encapsulate a queue in a namespace |
US20080065688A1 (en) * | 2006-09-07 | 2008-03-13 | Research In Motion Limited | Mediated plug-in registration of client applications and content providers with push content delivery system |
US20090077229A1 (en) * | 2007-03-09 | 2009-03-19 | Kenneth Ebbs | Procedures and models for data collection and event reporting on remote devices and the configuration thereof |
US20090113451A1 (en) * | 2007-10-25 | 2009-04-30 | International Business Machines Corporation | Processing Event Notifications with an Event Sink |
US20090113452A1 (en) * | 2007-10-25 | 2009-04-30 | International Business Machines Corporation | Processing Event Notifications with an Event Sink |
US20100169350A1 (en) * | 2006-01-11 | 2010-07-01 | Oracle International Corporation | High-performance, scalable, adaptive and multi-dimensional event repository |
US20120084792A1 (en) * | 2010-10-01 | 2012-04-05 | Imerj, Llc | Cross-environment communication using application space api |
EP2568382A1 (en) * | 2011-09-09 | 2013-03-13 | Research In Motion Limited | Optimizing of publish-subscribe interprocess communications through the use of content-filters |
CN103493010A (en) * | 2010-10-01 | 2014-01-01 | Flex Electronics ID Co.,Ltd. | Cross Environmental Incident Notification |
US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
US8842080B2 (en) | 2010-10-01 | 2014-09-23 | Z124 | User interface with screen spanning icon morphing |
US8868135B2 (en) | 2011-09-27 | 2014-10-21 | Z124 | Orientation arbitration |
US8898443B2 (en) | 2010-10-01 | 2014-11-25 | Z124 | Multi-operating system |
US8933949B2 (en) | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
US9047102B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
US20190012218A1 (en) * | 2017-07-10 | 2019-01-10 | Nokia Solutions And Networks Oy | Event handling in distributed event handling systems |
US10191930B2 (en) * | 2016-08-12 | 2019-01-29 | Sap Se | Priority queuing for updates in a database system |
US11075982B2 (en) | 2017-07-10 | 2021-07-27 | Nokia Solutions And Networks Oy | Scaling hosts in distributed event handling systems |
US11106564B2 (en) * | 2019-05-29 | 2021-08-31 | Oracle International Corporation | Deframeworking for static program analysis |
US20210360079A1 (en) * | 2013-09-11 | 2021-11-18 | Verizon Media Inc. | Unified end user notification platform |
US11468053B2 (en) | 2015-12-30 | 2022-10-11 | Dropbox, Inc. | Servicing queries of a hybrid event index |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088659A (en) * | 1997-09-11 | 2000-07-11 | Abb Power T&D Company Inc. | Automated meter reading system |
US6275957B1 (en) * | 1998-09-21 | 2001-08-14 | Microsoft Corporation | Using query language for provider and subscriber registrations |
US6279034B1 (en) * | 1998-06-03 | 2001-08-21 | International Business Machines Corporation | Distributed monitor timer service for use in a distributed computing environment |
US6314533B1 (en) * | 1998-09-21 | 2001-11-06 | Microsoft Corporation | System and method for forward custom marshaling event filters |
US20020026511A1 (en) * | 2000-04-28 | 2002-02-28 | Garcia-Luna-Aceves Jj | System and method for controlling access to content carried in a caching architecture |
US6367034B1 (en) * | 1998-09-21 | 2002-04-02 | Microsoft Corporation | Using query language for event filtering and aggregation |
US20020089956A1 (en) * | 1995-12-07 | 2002-07-11 | Hans-Christian Haugli | Wireless packet data distributed communications system |
US6477585B1 (en) * | 1995-08-18 | 2002-11-05 | International Business Machines Corporation | Filter mechanism for an event management service |
US20020194347A1 (en) * | 1997-03-17 | 2002-12-19 | Vitria Technology, Incorporated | Event driven communication system |
US6567398B1 (en) * | 1998-06-05 | 2003-05-20 | Lucent Technologies Inc. | Distributed call system |
US6584186B1 (en) * | 2000-01-12 | 2003-06-24 | Lucent Technologies Inc. | Protecting communications network integrity |
US6611840B1 (en) * | 2000-01-21 | 2003-08-26 | International Business Machines Corporation | Method and system for removing content entity object in a hierarchically structured content object stored in a database |
US6687701B2 (en) * | 2001-09-25 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
US6711615B2 (en) * | 1998-11-09 | 2004-03-23 | Sri International | Network surveillance |
US20040064530A1 (en) * | 2002-09-30 | 2004-04-01 | Microsoft Corporation | Accessibility system events mechanism and method |
US6735633B1 (en) * | 1999-06-01 | 2004-05-11 | Fast Forward Networks | System for bandwidth allocation in a computer network |
US6895586B1 (en) * | 2000-08-30 | 2005-05-17 | Bmc Software | Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance |
US7089307B2 (en) * | 1999-06-11 | 2006-08-08 | Microsoft Corporation | Synchronization of controlled device state using state table and eventing in data-driven remote device control model |
US7231550B1 (en) * | 2003-10-31 | 2007-06-12 | Sun Microsystems, Inc. | Event protocol and resource naming scheme |
US7412518B1 (en) * | 2000-05-09 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for proximity discovery of services |
US7603710B2 (en) * | 2003-04-03 | 2009-10-13 | Network Security Technologies, Inc. | Method and system for detecting characteristics of a wireless network |
-
2004
- 2004-05-18 US US10/848,417 patent/US20060031572A1/en not_active Abandoned
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477585B1 (en) * | 1995-08-18 | 2002-11-05 | International Business Machines Corporation | Filter mechanism for an event management service |
US20020089956A1 (en) * | 1995-12-07 | 2002-07-11 | Hans-Christian Haugli | Wireless packet data distributed communications system |
US20020194347A1 (en) * | 1997-03-17 | 2002-12-19 | Vitria Technology, Incorporated | Event driven communication system |
US6088659A (en) * | 1997-09-11 | 2000-07-11 | Abb Power T&D Company Inc. | Automated meter reading system |
US6279034B1 (en) * | 1998-06-03 | 2001-08-21 | International Business Machines Corporation | Distributed monitor timer service for use in a distributed computing environment |
US6567398B1 (en) * | 1998-06-05 | 2003-05-20 | Lucent Technologies Inc. | Distributed call system |
US6275957B1 (en) * | 1998-09-21 | 2001-08-14 | Microsoft Corporation | Using query language for provider and subscriber registrations |
US6314533B1 (en) * | 1998-09-21 | 2001-11-06 | Microsoft Corporation | System and method for forward custom marshaling event filters |
US6367034B1 (en) * | 1998-09-21 | 2002-04-02 | Microsoft Corporation | Using query language for event filtering and aggregation |
US6711615B2 (en) * | 1998-11-09 | 2004-03-23 | Sri International | Network surveillance |
US6735633B1 (en) * | 1999-06-01 | 2004-05-11 | Fast Forward Networks | System for bandwidth allocation in a computer network |
US7089307B2 (en) * | 1999-06-11 | 2006-08-08 | Microsoft Corporation | Synchronization of controlled device state using state table and eventing in data-driven remote device control model |
US6584186B1 (en) * | 2000-01-12 | 2003-06-24 | Lucent Technologies Inc. | Protecting communications network integrity |
US6611840B1 (en) * | 2000-01-21 | 2003-08-26 | International Business Machines Corporation | Method and system for removing content entity object in a hierarchically structured content object stored in a database |
US20020026511A1 (en) * | 2000-04-28 | 2002-02-28 | Garcia-Luna-Aceves Jj | System and method for controlling access to content carried in a caching architecture |
US7412518B1 (en) * | 2000-05-09 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for proximity discovery of services |
US6895586B1 (en) * | 2000-08-30 | 2005-05-17 | Bmc Software | Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance |
US6687701B2 (en) * | 2001-09-25 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
US20040064530A1 (en) * | 2002-09-30 | 2004-04-01 | Microsoft Corporation | Accessibility system events mechanism and method |
US7603710B2 (en) * | 2003-04-03 | 2009-10-13 | Network Security Technologies, Inc. | Method and system for detecting characteristics of a wireless network |
US7231550B1 (en) * | 2003-10-31 | 2007-06-12 | Sun Microsystems, Inc. | Event protocol and resource naming scheme |
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496926B2 (en) * | 2005-07-29 | 2009-02-24 | International Business Machines Corporation | Method and apparatus to encapsulate a queue in a namespace |
US20070027928A1 (en) * | 2005-07-29 | 2007-02-01 | International Business Machines Corporation | Method and apparatus to encapsulate a queue in a namespace |
US20100169350A1 (en) * | 2006-01-11 | 2010-07-01 | Oracle International Corporation | High-performance, scalable, adaptive and multi-dimensional event repository |
US8631024B2 (en) * | 2006-01-11 | 2014-01-14 | Oracle International Corporation | High-performance, scalable, adaptive and multi-dimensional event repository |
US9063961B2 (en) | 2006-01-11 | 2015-06-23 | Oracle International Corporation | High-performance, scalable, adaptive and multi-dimensional event repository |
US20080065688A1 (en) * | 2006-09-07 | 2008-03-13 | Research In Motion Limited | Mediated plug-in registration of client applications and content providers with push content delivery system |
US20090077229A1 (en) * | 2007-03-09 | 2009-03-19 | Kenneth Ebbs | Procedures and models for data collection and event reporting on remote devices and the configuration thereof |
US7937714B2 (en) * | 2007-10-25 | 2011-05-03 | International Business Machines Corporation | Processing event notifications with an event sink |
US20110239228A1 (en) * | 2007-10-25 | 2011-09-29 | International Business Machines Corporation | Processing Event Notifications with an Event Sink |
US8117304B2 (en) | 2007-10-25 | 2012-02-14 | International Business Machines Corporation | Processing event notifications with an event sink |
US20090113452A1 (en) * | 2007-10-25 | 2009-04-30 | International Business Machines Corporation | Processing Event Notifications with an Event Sink |
US8332540B2 (en) | 2007-10-25 | 2012-12-11 | International Business Machines Corporation | Processing event notifications with an event sink |
US20090113451A1 (en) * | 2007-10-25 | 2009-04-30 | International Business Machines Corporation | Processing Event Notifications with an Event Sink |
US9026709B2 (en) | 2010-10-01 | 2015-05-05 | Z124 | Auto-waking of a suspended OS in a dockable system |
US9077731B2 (en) | 2010-10-01 | 2015-07-07 | Z124 | Extended graphics context with common compositing |
US8683496B2 (en) | 2010-10-01 | 2014-03-25 | Z124 | Cross-environment redirection |
US8726294B2 (en) * | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US9727205B2 (en) | 2010-10-01 | 2017-08-08 | Z124 | User interface with screen spanning icon morphing |
US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
US8842080B2 (en) | 2010-10-01 | 2014-09-23 | Z124 | User interface with screen spanning icon morphing |
US9678810B2 (en) | 2010-10-01 | 2017-06-13 | Z124 | Multi-operating system |
US8898443B2 (en) | 2010-10-01 | 2014-11-25 | Z124 | Multi-operating system |
US8933949B2 (en) | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
US8957905B2 (en) | 2010-10-01 | 2015-02-17 | Z124 | Cross-environment user interface mirroring |
US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
US8963939B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Extended graphics context with divided compositing |
US9405444B2 (en) | 2010-10-01 | 2016-08-02 | Z124 | User interface with independent drawer control |
US9160796B2 (en) | 2010-10-01 | 2015-10-13 | Z124 | Cross-environment application compatibility for single mobile computing device |
US9049213B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Cross-environment user interface mirroring using remote rendering |
US9047102B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
US9060006B2 (en) | 2010-10-01 | 2015-06-16 | Z124 | Application mirroring using multiple graphics contexts |
US20120084792A1 (en) * | 2010-10-01 | 2012-04-05 | Imerj, Llc | Cross-environment communication using application space api |
US9063798B2 (en) | 2010-10-01 | 2015-06-23 | Z124 | Cross-environment communication using application space API |
US9071625B2 (en) | 2010-10-01 | 2015-06-30 | Z124 | Cross-environment event notification |
CN103493010A (en) * | 2010-10-01 | 2014-01-01 | Flex Electronics ID Co.,Ltd. | Cross Environmental Incident Notification |
US9098437B2 (en) | 2010-10-01 | 2015-08-04 | Z124 | Cross-environment communication framework |
US9152582B2 (en) | 2010-10-01 | 2015-10-06 | Z124 | Auto-configuration of a docked system in a multi-OS environment |
US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
EP2568382A1 (en) * | 2011-09-09 | 2013-03-13 | Research In Motion Limited | Optimizing of publish-subscribe interprocess communications through the use of content-filters |
US9128659B2 (en) | 2011-09-27 | 2015-09-08 | Z124 | Dual display cursive touch input |
US9128660B2 (en) | 2011-09-27 | 2015-09-08 | Z124 | Dual display pinyin touch input |
US9152179B2 (en) | 2011-09-27 | 2015-10-06 | Z124 | Portrait dual display and landscape dual display |
US9104366B2 (en) | 2011-09-27 | 2015-08-11 | Z124 | Separation of screen usage for complex language input |
US8996073B2 (en) | 2011-09-27 | 2015-03-31 | Z124 | Orientation arbitration |
US8868135B2 (en) | 2011-09-27 | 2014-10-21 | Z124 | Orientation arbitration |
US20210360079A1 (en) * | 2013-09-11 | 2021-11-18 | Verizon Media Inc. | Unified end user notification platform |
US12200079B2 (en) * | 2013-09-11 | 2025-01-14 | Verizon Patent And Licensing Inc. | Unified end user notification platform |
US11468053B2 (en) | 2015-12-30 | 2022-10-11 | Dropbox, Inc. | Servicing queries of a hybrid event index |
US11914585B2 (en) | 2015-12-30 | 2024-02-27 | Dropbox, Inc. | Servicing queries of a hybrid event index |
US10191930B2 (en) * | 2016-08-12 | 2019-01-29 | Sap Se | Priority queuing for updates in a database system |
US11075982B2 (en) | 2017-07-10 | 2021-07-27 | Nokia Solutions And Networks Oy | Scaling hosts in distributed event handling systems |
US20190012218A1 (en) * | 2017-07-10 | 2019-01-10 | Nokia Solutions And Networks Oy | Event handling in distributed event handling systems |
US11385944B2 (en) * | 2017-07-10 | 2022-07-12 | Nokia Solutions And Networks Oy | Event handling in distributed event handling systems |
US12073265B2 (en) * | 2017-07-10 | 2024-08-27 | Nokia Solutions And Networks Oy | Event handling in distributed event handling systems |
US11106564B2 (en) * | 2019-05-29 | 2021-08-31 | Oracle International Corporation | Deframeworking for static program analysis |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060031572A1 (en) | Event broker | |
US10747592B2 (en) | Router management by an event stream processing cluster manager | |
Segall et al. | Content based routing with elvin4 | |
Fidler et al. | The PADRES Distributed Publish/Subscribe System. | |
RU2429533C2 (en) | Mechanism for dynamic syntax analysis/assembly based on scheme for syntax analysis of multi-format messages | |
EP3374890B1 (en) | Event stream processing cluster manager | |
EP3796167B1 (en) | Router management by an event stream processing cluster manager | |
EP2242010A1 (en) | Systems and/or methods for end-to-end business process management, business event management, and/or business activity monitoring | |
US7958025B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects | |
US6880016B1 (en) | Method and apparatus for structured communication | |
US20120233330A1 (en) | Discovering and identifying manageable information technology resources | |
CN107743616A (en) | The end points management system of API agency service is provided | |
US20150135197A1 (en) | Accessing business object resources for a machine-to-machine communication environment | |
WO2023113968A1 (en) | Custom publisher system integration | |
CN110310100A (en) | Project management method, device, electronic equipment and storage medium | |
CN111881329A (en) | Account balance management method and system | |
US20090234904A1 (en) | System and method for dynamic extension of aggregation engine | |
US8756320B2 (en) | Web service grid architecture | |
EP1880287A2 (en) | Enterprise-to-enterprise integration | |
Carughi et al. | Modeling distributed events in data-intensive rich internet applications | |
US20080071916A1 (en) | System and method for requesting a web service from a network server | |
Liu et al. | A middleware-based implementation for data integration of remote devices | |
Aahlad et al. | Asynchonrous Notifications Among Distributed Objects. | |
Carughi | Modeling Data-intensive Rich Internet Applications with Server Push Support. | |
Michlmayr et al. | End-to-end support for QoS-aware service selection, invocation and mediation in VRESCo |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FEUERSTEIN, YEHUDA;WIGTON, ROBERT S.;REEL/FRAME:015353/0236 Effective date: 20040514 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |