-
Introducción a Composite UI Application Block (CAB) I
2 CommentsDurante mi primera semana en Southworks estuve aprendiendo sobre Composite UI Appication Block. Leí mucha documentación y realice distintos tipos de ejercicios.
Al concluir mi etapa de entrenamiento en este block decidí realizar una guía que explique los conceptos básicos de CAB así como también sus principales componentes y la forma correcta de emplearlos.
La guía incluye una descripción general del block y de sus componentes. Este documento solo pretende ser una introducción a Composite UI Application Block. Para obtener una visión más profunda de su uso y funcionamiento leer la documentación oficial:
Descripción General
Composite UI Application Block permite construir aplicaciones de interfaz de usuario que corren sobre Windows. Este application block esta diseñado para soportar el desarrollo de aplicaciones clientes line of business.
El patrón de diseño Composite – uno de los patrones utilizados en el diseño este bloque – combina distintas interfaces de usuario simples para crear una más compleja. Estas piezas son integradas dentro del shell para formar la aplicación. La separación de la aplicación en partes más pequeñas permite que cada parte sea desarrollada y testeada por separado.
El principal objetivo de su diseño es proveer a los desarrolladores de aplicaciones soporte para desarrollar módulos independientes y desacoplados.
Componentes
Los principales compomentes que introduce Composite UI Application Block son:
- SmartParts: son los elementos visuales de la aplicación. Estos controles Windows Form pueden ser completamente independientes de la aplicación que los contiene, lo que permite que sean desarrollados y probados por separado.
- Workspace: son contenedores de SmartParts y se encargan de su manejo. Controlan como se muestran u ocultan de acuerdo al estilo del Workspace. Estos estilos son: WindowWorkspace, MdiWorkspace, TabWorkspace, DeckWorkspace y ZoneWorkspace.
- WorkItems: contienen la lógica para manejar un determinado caso de uso (para inicializarlo y darle de baja). Es un contenedor de diversos componentes como ser controladores o presenters (Controllers), vistas (SmartParts) y estado (State).
- Controllers: tienen el mismo rol que en el patrón Model-View-Controller (MVC). Son los que implementan la lógica de negocio por detrás de la vista. También pueden ser usados para crear un presenter y aplicar el patrón Model-View-Presenter (MVP).
- Service: son clases de soporte que proveen funcionalidad a otros componentes. CAB incluye una infraestructura de servicios que se puede usar en la aplicación. Entre estos están: Catalog Reader service, Module Loader service, Authentication service y State Persistence service. También permite crear servicios propios mediante el uso del atributo Service.
- Module: están compuestos por servicios, WorkItems, SmarParts, Controllers, entidades de negocio y por la clase que carga el módulo (ModuleInit) la cual es usada para inicializar y ejecutar los WorkItems.
- UIElements: permite que algunos elementos del shell sean accedidos por todos los módulos como son la barra de menú o la barra de estado. Esto se logra registrando a los elementos como UIExtensionSite. Cada módulo puede agregar sus propios elementos gracias a esto.
- Commands: las aplicaciones en general tienen más de un control que invoca el mismo método. CAB utiliza el concepto de comandos para permitir asociar un command handler con más de un UIElement y asociar un UIElement con más de un command handler.
- Event Broker: maneja la publicación y suscripción de eventos entre SmartParts y otros componentes en forma desacoplada.
En los siguients post se profundizará sobre los principales conceptos de CAB.
-
2 Comments:
Leave a comment
Your email address will not be published.
AGarcia-GT said on September 7, 2007:
Interesante propuesta.
He comprado el primer libro sobre CAB y SCSF de David S. Platt, pero la verdad no es nada bueno, se queda muy corto en contenido no digamos sus 195 hojas.
Recien termine de desarrollar una aplicacion con este Factory y me he entusiasmado y quiero seguir aprendiendo y porque no ayudar a que otros aprendan.
Sigue adelante, este articulo es muy bueno.
Saludos,
AGarcia
Guatemala, C.A.
Frank said on February 19, 2009:
Hola Mariano.
Has manejado con CAB referencias circulares entre módulos ?
Saludos