Angel \”Java\” Lopez on Blog

October 15, 2007

Remember Fabriq

Filed under: .NET, Windows Communication Foundation — ajlopez @ 12:15 am

The last weeks I studied the code of Fabriq project. You can download the code from Arvindra Shemi’s blog post:

FABRIQ has gone public!

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" ?> 
  <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 Name="PrintMessageHandler"/> 
        <Handler Name="ConfigureHandler"/> 
      <Action Name="Configure" Handler="ConfigurePipeline"/> 



  <Host Name="Host1" Address="http://localhost:50000/AjMessages"> 
    <Application Name="AjMessages"> 
      <Node Name="Administration"/> 
    <Application Name="App1"> 
      <Node Name="Node1"/> 
      <Node Name="Node2"/> 

I have a running version, with WCF and without WCF. I hope to post about my advances these days.

Angel “Java” Lopez


  1. [...] 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

  2. [...] 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

  3. [...] 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

  4. [...] hours: Revamping Fabriq, at [...]

    Pingback by My Week « Angel “Java” Lopez on Blog — December 3, 2007 @ 10:47 am

  5. [...] 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

  6. [...] 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

  7. […] See Remember Fabriq. […]

    Pingback by Distributed Applications and Node.js | Angel "Java" Lopez on Blog — May 30, 2013 @ 10:28 am

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Shocking Blue Green Theme. Create a free website or blog at


Get every new post delivered to your Inbox.

Join 57 other followers

%d bloggers like this: