The last weeks I studied the code of Fabriq project. You can download the code from Arvindra Shemi’s blog post:
More information about the project at:
Arvindra Shemi Fabriq Articles
Clemens Vasters Fabriq Articles
An image from the docs:

According to the project documentation:
FABRIQ is an infrastructure for constructing networks of nodes processing and relaying messages. These nodes are hosted in machines running into a serviced application.
You can have multiple machines running the same or different applications. The “network” is the application, “node” is a collection of “actions”, and each action process a message. More doc:
These nodes can be hosted in any distribution on several machines according to a defined configuration, so there may be machines running a single node or several nodes, this association are made by specifying the host-name or machine identification associated with each node in the network.
Each of these machines is running a serviced application responsible for starting and stopping its Host and Nodes which are the application main components. The host is responsible for handling the configuration, loading and unloading nodes and receives the messages and delivers them to the appropriate Node.
An interesting article that goes to the guts:
Positioning FABRIQ – What? Why? Apple or Orange?
Technically oriented articles:
FABRIQ Terminology
A simple FABRIQ config file
FABRIQ Message Handlers and Pipelines
FABRIQ Networks and Nodes
Configuring FABRIQ Networks and Nodes
I think that all these features can be reimplemented using current technologies (the published project use .NET 1.x, COM hosting), as Windows Communication Foundation, or the new distributed services of Microsoft Robotics (DSS).
In the first case, the Message to exchange and process could be the System.ServiceModel.Channel.Message class from WCF. But another idea is to have a custom Message class, that could be serializable via differents transports: WCF, DSS, Remoting, Web Services, or anything else.
I’m working on rewrite from scratch the full idea, with dynamic configuration, load balancing, in WCF or in other base technologies. I borrowed some ideas from my old project AjServer:
Hacia el AjServer (Spanish)
An extract from a configuration file:
<?xml version="1.0" encoding="utf-8" ?> <AjMessages> <Application Name="AjMessages"> <Node Name="Administration"> <Handler Name="ConfigureHandler" Type="AjMessages.ConfigureHandler, AjMessages"/> <Handler Name="PrintHandler" Type="AjMessages.PrintHandler, AjMessages"/> <Handler Name="PrintMessageHandler" Type="AjMessages.PrintMessageHandler, AjMessages"/> <Handler Name="ConfigurePipeline"> <Handler Name="PrintHandler"> <Property Name="Text" Value="Reconfiguring server..."/> </Handler> <Handler Name="PrintMessageHandler"/> <Handler Name="ConfigureHandler"/> </Handler> <Action Name="Configure" Handler="ConfigurePipeline"/> </Node> </Application> ... <Host Name="Host1" Address="http://localhost:50000/AjMessages"> <Application Name="AjMessages"> <Node Name="Administration"/> </Application> <Application Name="App1"> <Node Name="Node1"/> <Node Name="Node2"/> </Application> </Host> </AjMessages>
I have a running version, with WCF and without WCF. I hope to post about my advances these days.
Angel “Java” Lopez
http://www.ajlopez.com/en
[...] a message processor Posted October 18, 2007 Following ideas from Fabriq project, I wrote last week an example of a server application that can receive and process [...]
Pingback by AjMessages: a message processor « Angel “Java” Lopez on Blog — October 18, 2007 @ 10:33 am
[...] is a customer where I working in a team, revamping Fabriq [...]
Pingback by My Week « Angel “Java” Lopez on Blog — November 19, 2007 @ 12:56 am
[...] una grilla. Tal vez es más una aplicación de computación distribuida, pero tanto AjMessages como Fabriq están ahí cerca: no son solo para explotar en una [...]
Pingback by Más programando para una grid - Angel "Java" Lopez — November 21, 2007 @ 10:16 am
[...] hours: Revamping Fabriq, at [...]
Pingback by My Week « Angel “Java” Lopez on Blog — December 3, 2007 @ 10:47 am
[...] Remember Fabriq FABRIQ has gone public! Arvindra Shemi Fabriq Articles Clemens Vasters Fabriq Articles [...]
Pingback by AjFabriq on NodeJs (Part 1) Introduction « Angel “Java” Lopez on Blog — August 25, 2011 @ 10:28 am
[...] Remember Fabriq Recordando Fabriq FABRIQ has gone public! Arvindra Shemi Fabriq Articles Clemens Vasters Fabriq Articles [...]
Pingback by AjFabriq en NodeJs (Parte 1) Introducción - Angel "Java" Lopez — August 26, 2011 @ 10:24 am
[…] See Remember Fabriq. […]
Pingback by Distributed Applications and Node.js | Angel "Java" Lopez on Blog — May 30, 2013 @ 10:28 am