Originally Created: 2004-06-26
FABRIQ is a general purpose infrastructure for building fast and scalable networks of autonomous nodes for processing and relaying messages. A node is an implementation of a processing pipeline composed of reusable primitive message processing units and/or special purpose message processing units. These processing units consume, act and/or produce new messages as a result of performing their work. Nodes communicate with each other through message queues and they can be organized into queuing networks.
Clemens Vasters, Eugenio Pace, an enthusiastic development team in Argentina and newtelligence A.G. and I have spent the last six months building this system because we've seen the fundamental architectural principles behind FABRIQ working incredibly well in a number of real customer applications. Those systems needed to scale dramatically, on-demand and process messages very rapidly indeed with minimum latency and fuss.
What we've done is taken some of those ideas and created what is essentially a reusable framework which incoporates many "modern" ideas about how to build systems that scale and process messages incredibly quickly whilst being acutely aware of the need to adhere to emerging messaging standards, in particular the WS-* standards.
We've added our own innovations - like application composability. Quoting John Zachman, an underpinning motivation of enterprise architecture is to “remove the wall between Data and Process”. Which is the same motivation originating in the object community but focussing less on implementation and more on architecture. Many systems implementations require "composite architectures" where data and the processes which manipulate them come together somehow. The state-of-the-art architectural thinking is to do this through abstraction, layering and separating concerns.
Often when architecting systems the essential "implementation primitives" of the data and the process are dealt with separately. This makes thinking about how the overall system works and behaves difficult. It is also complex to manage scalability and performance and numerous design implications within this frame of architectural thinking.
So we believe both compositional architectures AND implementation primitives must come together so as to take systems from architectural development through to implementation in a seamless manner. In fact, "composite implementations" should be created from "architectural primitives"! (Note the subtle but important transposition of words.)
FABRIQ offers a flexible means of creating distributed, loosely-coupled processing components or "composite implementations" of applications from various "architectural primitive" elements such as processing units (handlers) which can in turn be arranged in a communicating networks of pipelines of sequential processing units.
Over on our new GotDotNet Workspace you can learn about the architecture of FABRIQ by working through sample configurations in various simple scenarios. [Update: 22/6/2007, GDN has been retired! Get FABRIQ here.] You can download the FABRIQ runtime, design docs and more. We have posted some hands-on labs to get you going easily. In return for our open sharing of this framework we hope you will provide us with feedback and partcipate in the discussions on using and understanding FABRIQ.
Another invaluable resource for you will be Clemens' blog posts on FABRIQ.