Arquitectura de componentes de Zope 3
Compilado por Héctor Velarde con base en el capítulo 3 del libro Web Component Development with Zope 3 de Philipp von Weitershausen.
Componentes
- Zope 3 se basa en una arquitectura de componentes
- Cada componente tiene una responsabilidad diferente
- La arquitectura de componentes le da a los desarrolladores la posibilidad de reemplazar ciertas implementaciones por otras mejores o durante el proceso de desarrollo
- Es fácil reutilizar componentes ajenos a Zope o componentes de Zope fuera de Zope
Interfaces
- Las interfaces son los contratos mediante los cuales los componentes trabajan juntos
- No son parte de la distribución estándar de Python
- La semántica varía un poco respecto a otros lenguajes; por ejemplo, el cumplimiento de la interfaz no es obligatorio
- Las interfaces se utilizan a menudo como marcadores/identificadores y como documentación de la API
Componentes de contenido
- Los componentes de contenido son idealmente clases simples de Python que se pueden emplear fuera de las aplicaciones Zope
- Su única responsabilidad es almacenar los datos, no presentarlos ni procesarlos
- Típicamente los componentes de contenido son persistentes y utilizan la ZODB como almacén de objetos transparente
Views
- Las vistas (views) son componentes que presentan a otros componentes
- Son casi las únicas partes de una aplicación que tienen que lidiar con los objetos request y response
- Las características de una vista son:
- la interfaz que presenta
- el tipo de presentación que proporciona
- su nombre
- Las vistas están íntimamente relacionadas con el objeto que deben presentar (contexto), el tipo de vista y su nombre
Adapters
- Los adaptadores (adapters) extienden la funcionalidad de los componentes existentes sin modificaciones en el código
- Se registran para la interfaz que adaptan y para la que proporciona
- Son consultados para el objeto al que adaptan (contexto) y para la interfaz objetivo
- Las vistas son un tipo especial de adaptadores
Utilities
- Un utility es un pequeño componente de software que proporciona una funcionalidad limitada
- Un singleton es un utility que ocurre sólo una vez; se registra y se consulta por su interfaz
- Muchos componentes nombrados del mismo tipo pueden registrarse como named utilities; se consultan por su nombre e interfaz
Servicios
- Los servicios proporcionan funcionalidad fundamental, como son el registro y la consulta de otros componentes
- El paquete zope.app.zapi combina la funcionalidad más esencial de un servicio y la expone a través de un conjunto de funciones
- Los servicios globales están disponibles siempre y en cualquier lugar. Los servicios locales se registran en administradores del sitio y se emplean para personalizar ciertas partes de una aplicación
Configuración de componentes
- El registro de componentes es asunto de configuración
- Zope 3 emplea ZCML, un dialecto de XML, para realizar la configuración
- Los objetos globales son referidos usando una ruta de puntos. Existe soporte para tanto para rutas absolutas como relativas
Seguridad
- Los componentes se aseguran usando permisos. Diferentes acciones pueden requerir diferentes permisos
- La abstracción de un usuario en Zope se conoce como principal
- Las fuentes y las vistas de identificación de los principals se pueden personalizar para contextos específicos de seguridad de una aplicación
- Una política de seguridad determina si un principal tiene permiso para realizar una acción. La política de seguridad por defecto niega todo a menos que algo sea explícitamente permitido
- La política de seguridad por defecto abstrae las responsabilidades de un usuario como roles que representan un conjunto de permisos que pueden ser asignados a los principals
Más información
Para obtener mayor información puedes visitar worldcookery.com, un sitio acerca de Zope 3 mantenido por Philipp von Weitershausen.