Zope

Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, rechercher

Zope est un serveur d'application web orienté objet, libre, écrit en langage de programmation Python et gérable à partir d'une interface Web. Zope publie sur le réseau des objets Python enregistrés dans une base de données objet, ZODB. Des types d'objet élémentaires, 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 (nommé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 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

[modifier] 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 société de services, et donna à Zope bien plus de publicité et d'influence que Principia n'avait jamais eu.

[modifier] Caractéristiques techniques

Un site Zope est composé d'objets dans une base de données objet, et non dans des fichiers comme d'autres systèmes de serveurs web. Cette approche exploite les technologies objet comme l'encapsulation. Zope relie les URL aux objets par la hiérarchie de contenu de tels objets. Ces objets possèdent comme il se doit des méthodes.

Zope est fourni avec une 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.

Zope emploie fréquemment l'acquisition. Cette technique ressemble à l'héritage de classe : les objets "héritent" du comportement de leur contexte dans une hiérarchie de composition et non de leur classe supérieure dans une hiérarchie de classes. Cela permet de structurer le code source de façon plus simple, et peut encourager la décomposition d'application. On peut par exemple structurer la manière dont des éléments sont placés sur une page web. L'acquisition implantée dans Zope 2 est aussi parfois source de bugs, car elle peut entraîner des comportements inattendus. Son utilisation 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 à de l'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).

[modifier] 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 versions 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).

[modifier] 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é.

[modifier] 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.

[modifier] Voir aussi

[modifier] Liens internes

[modifier] Liens externes

Ce document provient de « http://fr.wikipedia.org/wiki/Zope ».
Outils personnels
Espaces de noms
Variantes
Actions
Navigation
Contribuer
Imprimer / exporter
Boîte à outils
Autres langues