Ella publish/subscribe middleware

Ella is a fully distributed publish/subscribe (see http://en.wikipedia.org/wiki/Publish-subscribe_pattern for the basic concept) middleware written in pure C# and compatible with Mono.

It is also a very useful tool to build non-distributed applications. The Networking part can be completely disabled. Then Ella is used to enable composability, scalability, flexibility for your application.

Ella handles all the communication needed to transfer data from a producer to a consumer with no need to care if both are on the same or on different nodes in your network. It discoveres other nodes which run Ella instances, so you do not have to care about how to scale your application.

Ella is based on the type-based pub/sub flavour because it is most intuitive to handle and does not require topic conventions (in topic-based pub/sub) or a dedicated query mechanism for properties (in case of content-based pub/sub).

API reference

You can find the API reference in the release file or download it here

Basic concepts

An introductory article to Ella has been posted on Codeproject.

The goal in designing Ella was to make it most easy to use for developers. Thus, it does not require any inheriting from base classes or instance handling (you'll never see an Ella-object you have to use to call Ella-specific methods). Instead, we use Attributes to mark classes as publishers or subscribers (and for other stuff too) and provide a static facade to interact with the Middleware System. This facade is designed with intuitive and fluent use in mind.

So you'll see a lot of code like
Subscribe.To<String>()
or
Start.Publisher(p).

Why "Ella"?

You might ask why we call our middleware Ella......
The short answer: Because we can.
The Long answer: ever tried to find a meaningful name (or acronym) for a project? Then you know the problem. Instead of trying to fit the words "publish, subscribe, middleware,...." into an acronym we decided to go for a different approach. Being big fans of Jazz music, we decided to name the system after the greatest Jazz singer in history: Ella Fitzgerald. That's the story. It also makes it very easy to find release code names ;)

Last edited Sep 20, 2013 at 8:16 AM by bedieber, version 17