Hello,
je ne suis pas une spécialiste Zope, mais pour l’avoir découvert je trouve intéressant de le partager avec vous. Ah au fait je suis votre nouvelle contributrice Magui
.
Qu’est-ce que Zope ?
Bizarre non comme nom!
De son nom Zope Object Publishing Environement, soit Environnement de Publication d’Objets Zope, Zope est un serveur d’application “objet” et gérable à partir d’une interface web. L’orientation objet de Zope ne porte pas seulement, comme la plupart des autres langages ou environnements destinés à Internet, sur le langage de programmation mais sur la totalité de l’environnement. En Zope, tout est objet (et réciproquement). On ne publie pas une page web mais un objet. On n’utilise pas une routine mais un composant. Mieux encore, on ne retourne pas une erreur HTTP mais on déclenche une exception! L’objet est véritablement présent à
tous les niveaux de Zope.
Une des particularités de Zope est la possibilité qu’il offre aux développeurs d’administrer leur site directement depuis Internet (par une interface utilisateur en HTML, elle-même réalisée… en Zope). Par « administrer », nous entendons non seulement configurer le comportement général du serveur, mais aussi écrire des pages (pardon, des objets
), programmer des composants, et même créer de nouvelles classes. Quatre-vingts pour cent d’un projet de grande envergure peut être réalisé au travers de cette interface:

Manipuler des objets en mémoire est chose courante pour les développeurs férus de C++ ou de Java. Zope, quant à lui, intègre une base de données objet, la ZODB (Zope Object DataBase), qui stocke les objets sur le disque dur, dans un fichier nommé data.fs. Ce fichier contient non seulement les versions des objets utilisées par le programmeur, mais conserve également un historique de toutes les modifications apportées à ces objets. L’avantage est que vous pouvez à tout moment annuler des modifications pour revenir à un état précédent. Vous disposez par ailleurs, dans le cadre d’un travail en équipe, d’un moyen de suivre les modifications apportées par les différents intervenants du projet. Il est bien entendu possible de purger cet historique si la taille du fichier data.fs devient trop importante.
Enfin, indépendamment de l’historisation, la base ZODB est transactionnelle, ce qui signifie que toute série de traitements entamée est soit terminée avec succès soit annulée complètement (rollback en anglais).
Maintenant que nous avons une idée de ce qu’est Zope, la question c’est : pourquoi utiliser Zope, et que peut-on faire avec Zope?
Pourquoi donc Zope ?
Les principales raisons qui pourraient vous faire utiliser Zope sont:
- Gratuit et open-source;
- Rapide et efficace (supporte la gestion de gros sites très fréquentés);
- Facilite la gestion d’un site complexe (l’articulation des pages entre elles se déduit automatiquement de la façon dont vous avez structuré les données enregistrées; eh oui, ça veut dire qu’il faut penser avant d’agir; mais ça vous évitera bien du travail);
- Simple de construire des sites dynamiques (grâce au langage simple DTML);
- Simplification du traitement des formulaires;
- Interface simple avec la plupart des bases de données (PostgreSQL, MySQL, Oracle, Sybase, etc).
Concrètement, quelle application web est adaptée à Zope et laquelle ne l’est pas ?
La réponse est simple: tout ce qui se fait sur Internet est imaginable avec Zope. Depuis la simple page d’accueil jusqu’au site de commerce électronique, depuis le forum perso jusqu’au site de gestion de contenu collaboratif.
Que peut-on faire avec Zope ?
De nombreuses versions sont apparues depuis 3 ans notamment Zope 3.2 qui est un reécriture complète de Zope 2 sous forme d’une architecture à base de composants. Il est aujourd’hui utilisable et utilisé en production, exemple du Launchpad d’Ubuntu ou aussi du projet SchoolTool et bien d’autres projets.
Zope met également en place certains produits tels que Zwiki, Yihaw, Squishdot, Qsurvey et bien d’autres.
Passons à l’architecture globale de zope et à la nature de ses composants.
La ZMI (Zope Manage Interface) est constituée de composants tels que les documents DTML (Dynamic Template Markup Language), les méthodes DTML, les scripts Python, les ZPT (Zope Page Templates) et les méthodes externes qui servent à la structure d’un site et de son adminsitration.
Basiquement, les documents DTML, méthodes DTML et les ZPT servent à générer des pages web, les scripts Python et les méthodes externes sont plutôt destinés à assurer des traitements. Cependant, les uns et les autres sont capables des deux types d’opérations, traitements et vues (en fait, les documents DTML sont plutôt des composants de données, et les méthodes de composants de présentation).
Le DTML est un langage à balises, comme le HTML. D’ailleurs le DTML comprend le HTML : vous pourriez mettre uniquement du HTML dans une méthode DTML, ça se passerait très bien (par contre, si vous essayez d’afficher du DTML dans un navigateur ou un éditeur WYSIWYG, vous aurez quelques problèmes…). Néanmoins, il faut noter une distinction entre documents et méthodes DTML. Les documents DTML sont plutôt des objets de données, ils ont des propriétés propres et peuvent réaliser un affichage. Les méthodes DTML, elles, n’ont pas de propriétés et sont plutôt des composants de présentation (d’autres objets par exemple). Le Zope Book nous précise que les documents DTML sont quelque peu “démodés”, et qu’ils ne sont là que pour assurer une compatibilité avec les anciennes versions de Zope. Il nous assure que se limiter aux méthodes DTML n’est pas une mauvaise pratique, et que l’on ne manque rien d’exceptionnel en n’utilisant pas les documents DTML. Donc, soyez sages, restez simples, et tenez-vous-en aux méthodes ! ;) Mais les marqueurs DTML mélamgés au HTML forment des documents HTML non valides. Ainsi, ZPT s’avère la technologie qui résout ce problème.
ZPT est donc un objet Zope dont le contenu est un code HTML pouvant être modifié par un éditeur de HTML et visualisé sommairement sans passer par Zope. Des instructions en langage TAL (Template Attribute Language) permettent de faire de cette page, une page dynamique, c’est-à-dire capable d’afficher des éléments tels que des titres, des noms d’objets Zope (lors d ‘un affichage au travers de Zope). Ces instructions TAL viennent enrichir le HTML et donnent de nouvelles possibiliés sans rompre le système des balises, et en s’insèrant à l’intérieur.
Si l’une des finalités de Zope est la création de sites web dynamiques, sa philosophie orientée objet plutôt que pages web demande une certaine phase d’apprentissage. D’où le terme « ZopeZen », qui décrit le moment où une personne a parfaitement compris le mode de fonctionnement de Zope.
Entre autres, Zope peut être utilisé comme serveur ftp, xml-rpc, webdav, http, mais peut facilement être utilisé avec un serveur web frontal, comme Apache.
Euhhhhh est-ce que je ne vais pas m’arrêter là ? Mon article devient long. Pour plus d’infos, rendez-vous sur:
http://fr.wikipedia.org/wiki/Zope
http://eusebius.developpez.com/zope-intro/
http://linuxfr.org/news/que-peut-on-faire-avec-zope-33
J’espère vous avoir été utile. A bientôt pour un nouvel article!!! ![]()





