- ZMS
-
Zope
Zope est un serveur d'application web orienté objet libre écrit dans le langage de programmation Python. Il peut être entièrement géré à partir d'une interface Web. Zope publie sur le réseau des objets Python qui sont enregistrés dans une base de données objet, ZODB. Des types d'objets basiques, tels que des documents, des images, des patrons (templates) de page, sont à la disposition des utilisateurs pour être créés et gérés via l'internet. Des types d'objets spécialisés, tels que les wikis, les blogs, les galeries de photos, sont disponibles en tant que greffons tiers (appelés produits), et il existe une communauté grandissante de petites entreprises créant des applications web sur mesure à base de Zope.
Il existe 2 versions de Zope :
- La branche historique 2.x, successeur de la 1.x. C'est celle-ci qui est utilisée, par exemple, pour les CMS Plone et CPS. Elle se décompose en sous-branches 2.8.x, 2.9.x, et 2.10.x.
- La branche 3.x, qui est une réécriture totale du serveur d'application. Fruit de l'expérience du projet Zope 2 et de 10 ans de développement de serveur d'application, Zope 3 se veut plus efficace, plus léger et beaucoup plus puissant.
À la date de février 2008, les versions sont 2.9.8, 2.10.5 et 3.3.1. Depuis 2005, le projet est passé en mode temps. Une version majeure sort tous les 6 mois.
Sommaire
Histoire
Zope apparut lorsque son entreprise créatrice, Digital Creations (aujourd'hui Zope Corporation), a libéré le code source de leurs produits phares, Bobo puis Principia, en 1998. La combinaison des deux produits a été renommée Zope lors de leur diffusion. Cette décision transforma Digital Creations en une société de services, et donna à Zope bien plus de publicité et d'influence que Principia n'avait jamais eu auparavant.
Caractéristiques techniques
Un site Zope est composé d'objets dans une base de données objet, contrairement à des fichiers comme c'est le cas habituellement avec d'autres systèmes de serveurs web. Cette approche permet d'exploiter les avantages des technologies objet, telles que l'encapsulation. Zope relie les URL aux objets en utilisant la hiérarchie de contenu de tels objets. Ces objets possèdent également des méthodes.
Zope vient avec sa base de données d'objets Zope Object Database (ZODB), qui sérialise de manière transparente les objets dans une base de donnée transactionnelle.
Une caractéristique particulièrement innovante de Zope est son emploi fréquent de l'acquisition. L'acquisition est une technique ressemblant à l'héritage de classe, selon lequel les objets "héritent" du comportement de leur contexte dans une hiérarchie de composition, au lieu de l'hériter de leur classe supérieure dans une hiérarchie de classes. Cela permet certaines manières de structurer le code source qui seraient difficiles à accomplir autrement, et cela peut encourager la décomposition d'application. Une utilisation fréquente est la structuration de la manière dont les éléments sont placés sur une page web. L'acquisition telle qu'implantée dans Zope 2 est aussi perçue comme une source de bogues, étant donné qu'elle peut entraîner de nombreux comportements inattendus. L'utilisation de l'acquisition a été fortement restreinte dans Zope 3, afin d'éviter les résultats non désirés.
Zope fournit plusieurs procédés pour appliquer des patrons à du HTML : le DTML (Dynamic Template Markup Language, Langage de Balisage de Patron Dynamique ) et ZPT (Zope Page Templates, Patrons de Pages de Zope). Le DTML est un langage de balisage permettant d'implanter des scripts simples dans les patrons. Le DTML permet l'inclusion de variables, de conditions et de boucles. Toutefois, le DTML a des inconvénients majeurs : les marqueurs DTML mélangés au HTML forment des documents HTML non valides, et l'inclusion inattentive de logique dans les patrons produit du code illisible. ZPT est une technologie qui résout ces problèmes. Les patrons ZPT peuvent être soit des documents XML ou HTML bien formés, dans lesquels tout le marquage spécial se présente sous forme d'attributs dans le domaine de nom TAL (Template Attribute Language, Langage d'Attributs de Patrons). ZPT offre un ensemble limité d'outils pour l'inclusion conditionnelle ou répétitive d'éléments XML, ainsi les patrons sont habituellement assez simples, avec la majorité de la logique implantée en Python. Un avantage non négligeable des patrons ZPT est qu'ils peuvent être édités dans la plupart des éditeurs HTML graphiques. ZPT offre également le support direct de l'internationalisation.
Zope 2 sert de base aux systèmes de gestion de contenu Plone, Silva, Nuxeo CPS, Zwook et Chubaka.
Zope utilise des métadonnées (Configuration des outils de métadonnées).
Zope 3
Une nouvelle version de Zope, Zope 3, est en développement depuis 2001. Zope 2 s'est avéré être un framework utile pour le développement d'applications web, mais son utilisation a révélé quelques défauts. Pour en citer quelques uns, créer des produits pour Zope 2 requiert de copier une grande quantité de code d'initialisation, du code "magique" qui a juste besoin d'être là, et la logique du domaine est hautement liée à la logique de la présentation, ce qui rend difficile la création et la maintenance de versions sur mesure.
Zope 3 est une réécriture du logiciel qui vise à régler ces problèmes tout en gardant les avantages de Zope qui lui ont valu sa popularité. De plus, sa conception se veut moderne, avec une architecture à composants (délégation de tâches), utilisant massivement les interfaces et les adaptateurs (pour "connecter les composants entre eux"). Un objectif majeur est la qualité d'écriture du code (test unitaire, test fonctionnel, doctest, simplicité).
Une première version de Zope 3, Zope X3, a été diffusée le 6 novembre 2004. Le X signifie eXpérimentale. Néanmoins le déploiement à grande échelle par plusieurs développeurs ayant donné satisfaction, la lettre fut abandonnée. Se sont succédé les version 3.1, 3.2 puis 3.3. Ces deux dernières se voient dotées du framework Python Twisted et d'une traduction complète en français.
Tirant les enseignements des premiers déploiements de Zope 3, la version actuelle (la 3.3) a vu une simplification de plusieurs éléments, et une volonté de se rapprocher de la communauté Python. Cet objectif passe par la publication des composants et l'utilisation des œufs (format Eggs, simplifiant grandement leur installation).
Futur
La volonté de la société Zope Corporation est de « fusionner » les deux branches, afin de disposer d'une migration douce et naturelle. Pour cela deux moyens sont mis en oeuvre. Le remplacement par petites touches des éléments de Zope 2 par son équivalent Zope 3, et l'intégration dans Zope 2 du projet Five, permettant au développeur d'accéder dans Zope 2 aux composants Zope 3. L'utilisation d'avertissements d'obsolescence permet d'indiquer à l'avance ce qui doit être modifié.
Remarques
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. L'ajout du framework Twisted dans Zope 3.2 permettra à terme de créer ses propres protocoles.
Voir aussi
Liens internes
Liens externes
- (en) Site officiel
- (fr) Introduction à Zope
- (fr) Zopera : Portail Zope francophone
- (en) Zope 3 wiki : Wiki officiel de Zope 3
- Portail des logiciels libres
Catégorie : Serveur internet libre
Wikimedia Foundation. 2010.