In my last post you heard introductory details about the bbv.Common.EventBroker. Let us take this one step further. Imagine going from one process to multiple processes or even firing events over multiple machines. And all this with your existing event broker and with only a few lines of code. Too good to be true? I can assure you it is possible! Let’s dive into the distributed event broker.

.NET
bbv.Common, Distributed Event Broker, EventBroker
Some of you might already be familiar with the bbv.Common.EventBroker. For those who aren’t I want to give a quick overview of the bbv.Common.EventBroker because knowledge about the event broker is crucial for my future posts about the distributed event broker.
The event broker acts as a mediator between a publisher of notifications (aka publisher) and a consumer of notifications (aka subscriber). The event broker transparently integrates into the usage of classic .NET events by applying a set of attributes either to the publisher’s event or the subscribers event handler. The publisher and the subscriber don’t need to know each other during design time, they are wired up during run time.

.NET
bbv.Common, Distributed Event Broker, EventBroker
The .NET component library bbv.Common (open source – Apache License 2.0) provides a powerful hierarchical state machine.
Its features are:
- value type based (enums, ints, …) resulting in single class state machines.
- actions
- on transitions
- entry and exit actions (parametrizable)
- transaction guards
- hierarchical
- different history behaviours to initialize state always to same state or last active state
- fluent definition interface
- synchronous/asynchronous state machine
- passive state machine handles state transitions synchronuously
- active state machine handles state transitions asynchronously on the worker thread of the state machine
- configurable thorough logging simplifies debugging using log4net (can be replaced easily with custom logging)
- state machine report for textual description of state machine

.NET, Software
.NET, bbv.Common, state machine
bbv.Common – a .NET library containing components for
- (a)synchronous loosly coupled event notifications (event broker),
- hierarchical state machines,
- active objects and asynchronous workers to build robust multi-threaded applications,
- context based loosely coupled rule engines
- and much more
has move from sourceforge.net to Google Code.
Check out the project at http://code.google.com/p/bbvcommon/
Join the discussion at http://groups.google.com/group/bbvcommon
.NET
.NET, bbv.Common
I wondered about the performance of my event broker (CodeProject article) implementation in bbv.Common.
Event Broker: a notification component for synchronous and asynchronous, loosely coupled event handling.
Therefore, I implemented a quick performance test application that prints out the timings for
- Plain .NET events
- Event over Event Broker
- Event over Event Broker with logging extension enabled
- Event over Event Broker with a matching matcher on the subscriber
- Event over Event Broker with a non-matching matcher on the subscriber
- Event over Event Broker with exception throwing subscriber
As well as how the number of subscribers on a single event influences timings.

.NET, Architecture, Software
bbv.Common, event broker, performance