Este recurso es parte de la capacitación en “Desarrollo y personalización de Plone”, el cual explica: Programación basada en componentes para Programadores Python.
2. Acerca de mí
Marabino.
Macagua.
11 años en Linux.
Debianista.
Canaimero.
Pythonista.
Plonista.
http://www.flickr.com/photos/sinlentes/5570374264/
3. Programación basada en
componentes
• Tiene énfasis en la descomposición de sistemas
en componentes funcionales o lógicos.
• A través de interfaces bien definidas usadas para
la comunicación entre componentes.
• Es nivel de abstracción más alto que los objetos.
4. Programación basada en componentes
Casos de adopción de este son:
● El modelo Enterprise JavaBeans de Oracle.
● Component Object Model (COM) de Microsoft.
● System.ComponentModel en Microsoft .NET.
● Cross Platform Component Object Model (XPCOM)
de Mozilla Foundation.
● Universal Network Objects (UNO) de
OpenOffice.org.
● Zope Component Architecture (ZCA) en Python.
5. Zope Component Architecture - ZCA
● Es un marco de trabajo (framework) en Python
que soporta el diseño y la programación basada
en componentes.
● Ayuda a separar el código de presentación del
ámbito del código de lógica y crea componentes
reusables (zope.component).
6. Conformación de la ZCA
● Publicador de Objeto (zope.publisher).
● Servidor Web (zope.server).
● Base de datos objeto transaccional (ZODB).
● Lenguaje de configuración basado XML para
registrar de componentes (zope.configuration).
● Arquitectura de seguridad flexible con políticas de
seguridad pluggable (zope.security).
7. Conformación de la ZCA
● Frameworks de pruebas unitarias y funcionales
(zope.testing, zope.testbrowser).
● Lenguaje de plantillas XHTML-compliant
(zope.pagetemplate).
● Motor de esquemas y mecanismo de generación
de formularios automático (zope.schema, z3c.form)
y muchos más paquetes del núcleo y de terceros.
9. ZCA - zope.interface
Interface, son objectos que especifican el
comportamiento externo de objetos que “proveen”.
Esta especifica comportamiento a través de:
● Documentación informal en una cadena.
● Definiciones de Atributos, especifica atributos
específicos.
● Invariantes, son condiciones que deben tomar para
los objetos que provee la interfaz.
11. ZCA - zope.component
● Utilities, son componentes que provee una
interfaz y que son observado por una interfaz y
un nombre.
● Adapters, son componentes computados desde
otros componentes para adaptarlo a alguna
interfaz, debido a esto, son proveídos como
fabricas, usualmente clases.
18. ZCA - zope.component
● Handlers, son fabricas de adaptadores de
suscripción que no producen nada, solo cuando
son llamados. Usualmente usado para manejar
eventos.
22. ZCA - zope.schema
● Schemas extiende la noción de interfaces para
descripciones detalladas de Atributos, (pero no
métodos).
● Cada esquema es una interfaz y especifica los
campos públicos de un objecto.
23. ZCA - zope.schema
● Fields, un campo roughly corresponde a un
atributo de un objecto Python.
● El paquete “zope.schema” provee un conjunto de
tipos de campos, incluyendo texto simple y
múltiple, data binaria, enteros, punto flotante y
valores fecha / hora.
24. ZCA - zope.schema
● Widgets, son componentes que muestran valores
de campos y, en el caso de campos reescribibles,
permite al usuario editar sus valores.
28. ZCA - Zope Configuration System
● ZCML, del ingles “Zope Configuration Markup
Language” es una aplicación XML.
● En Zope 2 con el producto Five le permite usar
una serie de componentes Zope 3 que pueden
ser conectado juntos usando ZCML.
30. Zope Content Providers
● Content Provider, es un termino del mundo Java
que refiere a componentes que pueden proveer
contenido HTML.
● Le permite definir regiones en su página y para
que los programadores registren piezas de
contenido HTML en esas regiones.
31. Zope Content Providers
● Son conocidos como Viewlets y están disponible
solamente dentro de Viewlet Managers.
● Implementa un patron de diseño Composite.
● En Zope 3 son adaptadores múltiples que esta
observando por el contexto, solicitud (y también el
layer / skin), y la view que ellos despliegan.
32. ZCA - Zope Content Providers
Plantilla Principal
Administrador Viewlet
Administrador Viewlet
Ranura
Principal
Viewlets
Viewlets
Portlets
Viewlets
Vista de Contenido
Principal
35. Zope Page-Template Architecture
● El compilador y interprete Template Attribute
Lenguage.
● Un motor de expresión.
● Las page templates atan todo junto.
38. Zope Object Database Architecture
● Soporte para concurrencia.
● Interfaces para almacenamiento, permitiendo
diversas estrategias de almacenamiento a usar,
desde un archivo, a RDBMS, a memoria.
● Robusto formato del archivo de almacenamiento.
● Múltiples BDs en el mismo sistema de objeto.
39. Zope Object Database Architecture
● Versionado e integraciones de versiones con el
sistema transacción.
● Múltiples procesos de gestión de almacenamiento
a través de la distribución estándar no incluirá los
administradores de almacenamiento de proceso
múltiples.
43. Zope Object Database Architecture
p1 p2 p3 p4
Pagina
titulo
descripcion
contenido
comentariorating
44. Lecturas recomendadas
● The Zope 3 Book
● http://muthukadan.net/docs/tzb.html
● The Zope2 Book
● http://docs.zope.org/zope2/zope2book/
● Una guía comprensiva de la Arquitectura de
Componentes de Zope
● http://plone-spanish-
docs.readthedocs.org/es/latest/programacion/zca/z
ca-es.html
46. ¿Quieres mejorar este material?
Este material tiene licenciamiento abierto, y puede
reportar errores o proponer mejoras:
● Repositorio de fuentes.
● https://github.com/Covantec/entrenamiento.desarrollo
_plone
● Reportar errores o proponer mejoras.
● https://github.com/Covantec/entrenamiento.desarrollo
_plone/issues/new
47. Copyright (c) 2010 - 2015 Leonardo J. Caballero GCopyright (c) 2010 - 2015 Leonardo J. Caballero G.
Esta obra está sujeta a la licenciaEsta obra está sujeta a la licencia Reconocimiento-Reconocimiento-
CompartirIgual 3.0 Venezuela de Creative CommonsCompartirIgual 3.0 Venezuela de Creative Commons..
Para ver una copia de esta licencia, visite la siguientePara ver una copia de esta licencia, visite la siguiente
dirección URL:dirección URL:
●
http://creativecommons.org/licenses/by-sa/3.0/ve/http://creativecommons.org/licenses/by-sa/3.0/ve/
Bajo los siguientes términos:Bajo los siguientes términos:
●
Reconocimiento - Usted debe dar el crédito apropiado,Reconocimiento - Usted debe dar el crédito apropiado,
proporcionar un enlace a la licencia, y de indicar si se hanproporcionar un enlace a la licencia, y de indicar si se han
realizado cambios. Usted puede hacerlo de cualquierrealizado cambios. Usted puede hacerlo de cualquier
manera razonable, pero no en una manera que sugiere elmanera razonable, pero no en una manera que sugiere el
licenciante a usted o que apruebe su utilización.licenciante a usted o que apruebe su utilización.
●
CompartirIgual - Si usted mezcla, transforma o crea nuevoCompartirIgual - Si usted mezcla, transforma o crea nuevo
material a partir de esta obra, usted podrá distribuir sumaterial a partir de esta obra, usted podrá distribuir su
contribución siempre que utilice la misma licencia que lacontribución siempre que utilice la misma licencia que la
obra original.obra original.
Licenciamiento