Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Recordando Fabriq

En estas semanas, estuve estudiando el código del proyecto Fabriq. Es un proyecto .NET de hace unos años, pueden bajarse el código desde este post de Arvindra Shemi:

FABRIQ has gone public!

Más información sobre el proyecto original:

Arvindra Shemi Fabriq Articles
Clemens Vasters Fabriq Articles

Una imagen de la documentación:

Según la documentación del proyecto:

FABRIQ is an infrastructure for constructing networks of nodes processing and relaying messages. These nodes are hosted in machines running into a serviced application.

Uno puede tener varias máquinas ejecutando una o varias aplicaciones. La "red" es la aplicación, un node es una colección de acciones, y cada acción procesa un mensaje. Más de la documentación:

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.

Un post interesante que va al núcleo del problema:

Positioning FABRIQ - What? Why? Apple or Orange?

Otros artículos más técnicos:

FABRIQ Terminology
A simple FABRIQ config file
FABRIQ Message Handlers and Pipelines
FABRIQ Networks and Nodes
Configuring FABRIQ Networks and Nodes

Creo que todas estas características pueden ser reimplementadas usando las tecnologías .NET actuales, y con un poco de trabajo, en Java (el proyecto publicado usa .NET 1.x, y hostea bajo COM). En .NET podemos usar Windows Communication Foundation, o los nuevos servicios distribuidos aportados por el Microsoft Robotics (DSS).

Con WCF, el mensaje a intercambiar y procesar podría ser de la clase System.ServiceModel.Channel.Message. Otra idea podría ser tener una clase propia Message, que pueda ser serializable con diferentes transportes: WCF, DSS, Remoting, Web Services, otras.

Estoy trabajando en reescribir desde cero la idea de Fabriq, con configuración dinámica, balanceo de carga, usando WCF u otra tecnología de base. He traido algunas ideas de mi viejo proyecto AjServer:

Hacia el AjServer 

Un avance de lo que estoy haciendo, un archivo de configuración:

 

<?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> <Application Name="App1"> <Node Name="Node1"> <Handler Name="PrintMessageHandler" Type="AjMessages.PrintMessageHandler, AjMessages"/> <Handler Name="PostHandler" Type="AjMessages.PostHandler, AjMessages"/> <Handler Name="DecrementHandler" Type="AjMessages.ManualTest02.DecrementHandler, AjMessages.ManualTest02"/> <Handler Name="Pipeline1"> <Handler Name="PrintMessageHandler"/> <Handler Name="DecrementHandler"/> <Handler Name="PostHandler"> <Property Name="Action" Value="App2/Node1/Process"/> </Handler> </Handler> <Action Name="Process" Handler="Pipeline1"/> </Node> <Node Name="Node2"/> </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>

Tengo una versión andando, con WCF y sin WCF. Espero postear algo sobre el tema en estos días.

Angel "Java" Lopez
http://www.ajlopez.com/en

Published Sun, Oct 21 2007 17:03 by lopez

Comments

# El software de la Enterprise@ Sunday, May 09, 2010 7:31 AM

Ayer, en la charla de WordCamp Argentina que compartí con el bueno de @eglinsky , mencioné una pregunta

Angel "Java" Lopez

# AjFabriq en NodeJs (Parte 1) Introducción@ Friday, August 26, 2011 5:24 AM

Hace unos años ya descubrí el proyecto Fabriq (gracias @asehmi !): Remember Fabriq Recordando Fabriq

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: