|
M&P TBW™ permite construir aplicaciones
utilizando Componentes denominados BLOCKS.
|
Un aplicación M&P esta conformado por BLOCKS interconectados
para
intercambiar información.
El intercambio de información se hace en la
modalidad Event-Driven Dataflow.
Una aplicación M&P es una red de
BLOCKS que puede distribuirse sobre múltiples computadores.
|
Elementos constructivos básicos
A continuación describiremos los elementos constructivos básicos
a nivel conceptual abstracto y luego veremos su implementación mediante recursos
de .NET.
A nivel conceptual la arquitectura TBW define cuatro elementos
básicos:
-
BLOCKS
-
Connectors
-
Connections
-
Messages
BLOCKS
Son los componentes de diversos tipos con que se construye una
aplicación.
Un BLOCK tiene Connectors que le permiten conectarse con
otros BLOCKS conformando una red.
Connectors
Los Connectors (Conectores) de un BLOCK le permiten
intercambiar información (Messages) con otros BLOCKS. El intercambio de información es
Event-Driven (Asincrónico).
Los Conectores pueden ser de Input, de Output y Bidirecciónales.
La información se recibe mediante los Conectores de Input y se envía mediante
los Conectores de Output.
Los Conectores Bidirecciónales pueden recibir y enviar información.
Connections (bindings)
Las Connections (Conexiones) son los elementos que conectan a los BLOCKS
entre si, permitiendo su colaboración mediante el intercambio de información.
Una Conexión vincula un par de Conectores en diferentes BLOCKS. Una
Conexión permite establecer un DataBinding entre el par de Conectores.
El DataBinding puede ser OneWay (Unidirecciónal) o TwoWay
(Bidirecciónal).
Es posible poner lógica en las Conexiones de manera de hacer conversiones
de valores, conversiones de tipos, formateos, etc.
IMPORTANTE: En M&P TBW las Connections son BLOCKS especializados. Ver
Native Binding BLOCKS.
Messages
Los Messages (mensajes) son datos (valores o referencias a objetos)
que se pasan de un BLOCK a otro mediante las Connrctions (bindings). La
transmisión se realiza cuando un Connector de Output recibe internamente un
nuevo valor.
Diversidad de Roles
Los elementos antes descriptos pueden desempeñar roles funciónales particulares. Así, por
ejemplo, los Messages pueden actuar como:
Triggers
Un Trigger dispara
ciertas operaciones en el BLOCK receptor.
Enablers
Un Enabler habilita o deshabilita
ciertas operaciones en el BLOCK receptor.
Los BLOCKS pueden ser TopBoards,
Bindings (Connections), etc.
En la red de BLOCKS los datos fluyen impulsados por eventos originados en
el cambio de valor en un Connector de Output. Los
BLOCKS esperan y actúan solo cuando reciben la información a través de una
Connection,
Full-Asynchronous - Parallel
Los Mensajes son enviados en forma asincrónica permitiendo desacoplar los
BLOCKS de manera de aprovechar las facilidades de procesamiento paralelo
disponibles (por ejemplo en procesadores multi-core).
BLOCKS-inside-BLOCKS
Un BLOCK puede contener una Red de BLOCKS. La red de BLOCKS interna es
encapsulada por el BLOCK contenedor (sus Conectores no son accesibles desde
fuera del Contenedor).
implementación mediante recursos .NET
La implementación se basa en el Engine XAML provista por
.NET en WPF y Silverlight (SL) [R1].
Si bien XAML se asocia normalmente con los engines de graficación de WPF y Silverlight XAML es
un "general purpose declarative language" que puede usarse fuera del
entorno de graficación.
| El XAML Engine es un procesador "Event-Driven Dataflow"
[R1] de muy alta performance lo que lo convierte en el
procesador ideal para las aplicaciones M&P TBW. |
Property to Property Binding
Un BLOCK se implementa mediante un User Control XAML, los Conectores se
implementan usando Properties (Propiedades) del Control y las Conexiones
se implementan usando Bindings de XAML (extendidos por M&P para su uso
Multithreaded).
Las Conexiones implementan el concepto de Property-to-Property-Binding:

XAML opera sobre árboles (Trees) de componentes (Controls). Mencionamos
previamente que el Engine XAML puede funciónar desconectado del entorno
de graficación. En M&P distinguimos dos tipos de Trees: - Visual Trees
(conectadtados al engine de visualización).
- Disconnected Trees
y M&P permite la interoperación entre ambos tipos. M&P puede operar en
ambos contextos: - Visual
- No-visual (Diconnected)
Contexto VisualEn el contexto Visual los BLOCKS operan en forma estándar con el engine de
visualización XAML de Silverlight en los Browsers y de WPF en el Desktop. | Si bien el XAML Engine esta enfocado en la interface gráfica de
usuario (GUI) tiene capacidad de procesar Controles que no contienen
elementos visuales ("Look-less controls") . Esta capacidad hace del XAML Engine un procesador de
información de propósitos generales. 
|
En este contexto pueden operar tanto BLOCKS con contenido visual como BLOCKS
sin contenido visual (BLOCKS No-visuales).
Mas abajo describiremos algunas de las funciones y roles que pueden desempeñar
los BLOCKS No-visuales. Contexto No-visual
En el contexto No-visual se utilizan solo BLOCKS no-visuales. Los Disconnected Trees de BLOCKS pueden operar tanto en Browsers
y Mobiles como en Servers y Desktops. 
| La posibilidad de operar en Servers es fundamental para la implementación
de aplicaciones distribuidas. |
En M&P múltiples Disconnected Trees pueden operar simultáneamente e
interoperar entre si tanto en forma local como remota. Compatibilidad entre ContextosUn BLOCK
no-visual normalmente funcióna sin modificaciones en ambos contextos
(visual y no visual). Granularidad
Un BLOCK puede contener desde unas pocas líneas de código a subsistemas
completos.
Adaptación DinámicaLa configuración de red de BLOCKS se hace declarativamente, usando el
lenguaje XAML y/o mediante código. 
Utilizando código la red puede ser creada y/o modificada dinámicamente "al
vuelo" (en run-time). Versatilidad de los BLOCKS No-visualesLos BLOCKS No-visuales permiten encapsular todo tipo de funciones y pueden
usarse, por ejemplo, para: - Proveer data binding extendido para operar en Multithreding.
- Proveer interoperación entre Trees visuales y disconnected.
- Incorporar
lógica y cálculos específicos de la aplicación.
- Convertir Eventos .NET en Property Changes y viceversa,
- Crear y Modificar al vuelo la estructura y el comportamiento de
una red de BLOCKS.
- Incorporar funciones de auto-organización.
así como implementar Aplicaciones Event-Driven Dataflow con funciónalidad
avanzada. Biblioteca de BLOCKS nativosLa sección M&P TBW - Biblioteca de BLOCKS nativos incluye un
catalogo de los BLOCKS nativos disponibles.
Referencias
|