Sei sulla pagina 1di 7

DEV DEVeloping Software Solutions n.

153 settembre 2007

Zope 3, perche no
di Maurizio Delmonte
` Zope 3 e un framework di sviluppo applicazioni web maturo e stabile, facciamo la sua conoscenza

Maurizio Delmonte Ingegnere Elettronico, si occupa di tematiche Zope/Plone da Si interessa di programmazione in ambiente Windows ed in oltre cinque anni. Lavora in Redomino come responsabile tecnico particolare alla piattaforma .NET. Collabora attualmente con per limplementazione ed il delivery di soluzioni document oriented.

pubblicato su WWW.INFOMEDIA.IT stampa digitale da Lulu Enterprises Inc. stores.lulu.com/infomedia


Infomedia
` Infomedia e limpresa editoriale che da quasi venti anni ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, dei ricercatori e dei professori dinformatica italiani. Sono pi` di 800 gli autori che hanno realizzato per le teu state Computer Programming, Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, presentazioni di prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo e semplici trucchi e stratagemmi. Oltre 6 milioni di copie distribuite, trentamila pagine stampate, fanno di questa impresa la pi` grande ed u inuente realt` delleditoria specializzata nel campo della a programmazione e della sistemistica. In tutti questi anni le riviste Infomedia hanno vissuto della passione di quanti vedono nella programmazione non solo la propria professione ma unattivit` vitale e un vero a divertimento. ` Nel 2009, Infomedia e cambiata radicalmente adottando ` un nuovo modello aziendale ed editoriale e si e organizzata attorno ad una idea di Impresa Sociale di Comunit` , a partecipata da programmatori e sistemisti, separando le attivit` di gestione dellinformazione gestite da un board a comunitario professionale e quelle di produzione gesti` te da una impresa strumentale. Questo assetto e in linea con le migliori esperienze internazionali e rende Infomedia ancora di pi` parte della Comunit` nazionale degli u a sviluppatori di software. ` Infomedia e media-partner di manifestazioni ed eventi in ambito informatico, collabora con molti dei pi` imporu tanti editori informatici italiani come partner editoriale e fornitore di servizi di localizzazione in italiano di testi in lingua inglese.

Limpaginazione automatica di questa rivista e realizzata al ` 100% con strumenti Open Source usando OpenOffice, Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp, Python e BASH

For copyright information about the contents of DEV, please see the section Copyright at the end of each article if exists, otherwise ask authors. Infomedia contents is 2007 Infomedia and released as Creative Commons 2.5 BY-NC-ND. Turing Club content is 2007 Turing Club released as Creative Commons 2.5 BY-ND. Le informazioni di copyright sul contenuto di DEV sono riportate nella sezione Copyright alla ne di ciascun articolo o vanno richieste direttamente agli autori. Il contenuto Infomedia e 2007 Infomedia e rilasciato ` con Licenza Creative Commons 2.5 BY-NC-ND. Il contenuto Turing Club e 2007 Turing Club e rilasciato ` con Licenza Creative Commons 2.5 BY-ND. Si applicano tutte le norme di tutela dei marchi e dei segni distintivi. ` E in ogni caso ammessa la riproduzione parziale o totale dei testi e delle immagini per scopo didattico purch e vengano integralmente citati gli autori e la completa identicazione della testata. Manoscritti e foto originali, anche se non pubblicati, non si restituiscono. Contenuto pubblicitario inferiore al 45%. La biograa dellautore riportata nellarticolo e sul sito www.infomedia.it e di norma quella disponibi` le nella stampa dellarticolo o aggiornata a cura dellautore stesso. Per aggiornarla scrivere a info@infomedia.it o farlo in autonomia allindirizzo http://mags.programmers.net/moduli/biograa

look Provati per voi


di Maurizio Delmonte > mdelmonte@infomedia.it

Zope 3, perch no?


Zope 3 un framework di sviluppo applicazioni web maturo e stabile, facciamo la sua conoscenza

ope 3 una realt per moltissimi sviluppatori e aziende che basano il loro lavoro sulla sua tecnologia. Tuttavia ancora in parte percepito come unentit non finita e per questo come una sorta di prototipo su cui non vale la pena di perdere tempo. La realt ben diversa, ma prima vediamo come nasce Zope 3.

Zope 3 un framework di sviluppo orientato al web scritto in Python

Breve storia di Zope


Zope nasce da una collezione di librerie python utili a realizzare applicazioni web sviluppate da unazienda americana, che nel 1998 decise di rilasciarle con licenza open source, su invito di uno dei suoi investitori. Zope versione 1 era un framework - gi nel 1998! - capace di assistere nello sviluppo di applicazioni web fornendo degli avanzati strumenti di gestione interfacce, di gestione della base dati (che si appoggia su un DB a oggetti, quando tutto il mondo usava e usa DB relazionali), e dellapplicazione vera e propria, tramite un pubblicatore di oggetti python piuttosto sofisticato. Il concetto innovativo introdotto da Zope sintetizzato dal suo nome: Z Object Publishing Environment. Le applicazioni web non sono qualcosa di frammentato tra logiche, gestione dei dati e produzione dellHTML necessario, ma un tutto coerente reso semplice e facilmente estensibile mediante la programmazione a oggetti, i cui concetti vengono spinti fino alla loro versione web di ereditariet e incapsulamento applicata alle applicazioni Zope. >> 32

La versione 2 di Zope insiste sui concetti gi introdotti, superando le difficolt insite nelladozione di un framework: Zope 2 un application server vero e proprio, coerente, capace di gestire tutti gli aspetti dellapplicazione senza necessitare di altri servizi o di configurazioni extra rispetto a quelle di default. Di fatto Zope 2 anche unapplicazione web potente e flessibile, capace di offrire ai suoi utenti qualcosa di ancora unico agli inizi del 2000: la possibilit di sviluppare intere applicazioni utilizzando come strumento il semplice browser web e i "mattoncini" disponibili nella configurazione base dellapplication server, script, template, connettori verso DB esterni, etc. Il modello di sviluppo su web fu superato, poich ai vantaggi offerti (ancora sfruttati in caso di manutenzione e customizzazioni rapide di applicazioni) andavano aggiunti gli indubbi svantaggi: le singole applicazioni sviluppate su web erano difficilmente portabili in altri contesti, non era facile operare sul codice in modo collaborativo e, soprattutto, non era possibile applicare modalit di sviluppo irrinunciabili quali la produzione di test automatici o il versionamento del codice sorgente.
DEV > n.153 settembre 2007

look Provati per voi

usato per rendere semplice la vita degli sviluppatori lereditariet: ogni oggetto di alto livello, che si traduca in pagine web o in servizi applicazione, per poter vivere e utilizzare lambiente zope ha necessit di raccogliere in se una serie di funzionalit e meccanismi che vengono appunto ereditati - spesso senza rendersene conto - da classi che a loro volta incapsulano altre classi di pi basso livello. Questo consente di realizzare applicazioni molto potenti con pochissimo sforzo, tuttavia introduce delle rigidit, che a volte si traducono in limiti.

Larchitettura a componenti la principale innovazione introdotta da Zope 3

FIGURA 1

Lereditariet permette di sviluppare velocemente riusando funzionalit gi implementate

Gli adattamenti operati per tornare a sviluppare applicazioni sul file system avrebbero potuto garantire lunga vita a Zope 2, tuttavia i feedback in arrivo dalla comunit (che nel frattempo si andava formando intorno al prodotto data la sua licenza aperta) convinsero il guru inventore dei concetti vincenti di Zope, Jim Fulton, ad indagare nuove direzioni, che in seguito portarono allimplementazione di Zope versione 3.

Tanto per fare un esempio, considerando un caso pratico legato a Plone, una delle applicazioni pi note del mondo Zope, gli oggetti usati per gestire le pagine e le altre risorse manipolabili in Plone sono definiti a livello centrale: ad esempio le logiche che definiscono la scelta della pagina di default di una cartella sono definite a livello di classe. Pensiamo di voler fare in modo che tale comportamento per una determinata istanza (cio su una specifica cartella creata nel portale) sia diverso da quello previsto nella classe. Per fare questo la via classica seguita con la tecnologia Zope 2 consiste nel generare una propria classe, che eredit

Cosa Zope 3 e perch


Zope 3 nasce con lintento di mantenere e far evolvere le cose buone della versione precedente introducendo una maggiore flessibilit e potenza nel modo di sviluppare nuove applicazioni e di riusare quelle gi implementate. Di fatto la prima versione di Zope realizzata quasi completamente dalla comunit di consulenti e aziende che poi utilizzano Zope 3 come strumento di lavoro quotidiano. Zope 3 pu essere definito un framework di sviluppo orientato al web scritto in Python. L'idea prioritaria rispetto a Zope 2 consiste nel tornare a sviluppare con modalit pi vicine alle applicazioni Python classiche, per favorire lulteriore accrescimento della comunit, potendo attingere anche al serbatoio di altre applicazioni e sviluppatori Python. Linnovazione tecnica fondamentale invece sintetizzata dallArchitettura a Componenti, che affianca gli altri elementi cardine di Zope per assumere un ruolo centrale nel modo di sviluppare applicazioni. In Zope 2 le applicazioni vengono implementate a colpi di oggetti o per meglio dire di classi e lo strumento principe
DEV > n.153 settembre 2007

FIGURA 2

Modello di un componente: interfaccia + implementazione

33 <<

look Provati per voi

tutte le funzionalit necessarie dalla classe corrispondente alla cartella di base, e che implementa quanto necessario a dare il comportamento richiesto, sovrapponendosi allimplementazione originale. Tale classe sar poi usata per generare nel portale le cartelle con il comportamento richiesto (Figura 1). Questo modo di procedere, in molti casi fondamentalmente utile e irrinunciabile, in altri casi provoca un sovrappopolamento di classi, oltre che sovraccarico di lavoro e difficolt a mantenere nel tempo le varie classi di alto livello per seguire levoluzione delle classi di base. Inoltre rende molto complesso poter riusare sia il proprio codice che quello di altri in contesti diversi da quello per cui stato pensato, Zope appunto. Cercando di risolvere questo tipo di problematiche si giunti a formulare la risposta data scegliendo lo sviluppo a Componenti e limplementazione dellArchitettura a Componenti di Zope 3.

I componenti permettono di sviluppare applicazioni web potenti ed eleganti

Molti nella comunit di sviluppo di Zope 3 hanno raccolto la proposta di Jim, e in particolare la sfida di trasformare la comunit di utenti in una vera comunit di sviluppo. Il risultato stato inizialmente incerto e confuso, difficile da apprezzare, in seguito si trovato un modo per far convergere gli sforzi tra gli sviluppi nelle due diverse versioni di Zope; infine si assiste oggi alla nascita di un nuovo Zope, capace di servire applicazioni web perfettamente in autonomia, o di essere utilizzato da parte di applicazioni che hanno ancora la loro base e le loro radici in Zope 2, mediante uno strato software noto come Five (2 + 3), come viene fatto ad esempio da Plone.

FIGURA 3

Un adattatore permette di modificare limplementazione di uninterfaccia in uno specifico contesto

Sviluppare usando componenti


Prima di tutto cerchiamo di far capire a chi non lo sapesse gi cosa si intende per Componente, rischiando di essere banali. Nella programmazione a oggetti, un oggetto rappresenta unentit unica che lega dati e logiche applicate ai dati, superando il classico schema di programmazione, che isola i dati, normalmente collocati in un DB, dalle logiche che i dati gestiscono, racchiuse in software separato dai dati. Questo fa si che la classe che definisce il funzionamento di un oggetto (il codice che ne stabilisce il comportamento) presenta naturalmente una serie di attributi e metodi pubblici, cio che possono essere visti e utilizzati da chi si trova a manipolare loggetto, oltre ad altri attributi e metodi non visibili, ma tuttavia utili allimplementazione della classe. >> 34

Di fatto, per chi si trova a utilizzare i singoli oggetti la parte da conoscere, che permette di comprendere cosa loggetto pu fare per noi, proprio quella costituita dagli attributi e metodi pubblici. Tale descrizione viene definita Interfaccia, e di fatto pu essere considerata sufficiente a capire come utilizzare lo specifico oggetto, e quindi a collegare tra loro vari oggetti utili ad erogare lapplicazione, come in una sorta di puzzle. Cosa resta? Bisogna dare corpo allinterfaccia in modo che effettivamente venga fatto quel che promette: linsieme di uninterfaccia e della sua implementazione definito Componente. La cosa che rende questa separazione di interfaccia e implementazione vantaggiosa data dal fatto che modificare la specifica implementazione a parit di interfaccia risulta molto agevole e flessibile! Come pure permettere ad un oggetto di assumere nuove funzionalit: dichiarando su di esso linterfaccia che ci interessa, sar facile permettergli di erogare le nuove funzionalit di cui abbiamo bisogno, senza modificarne la classe originale (Figura 2). Da notare che uninterfaccia non si applica solo ad una classe, ma pu essere applicata anche ad una specifica istanza della classe, cio ad uno specifico oggetto. Il meccanismo responsabile di tale flessibilit viene definito adattamento, e si pu manifestare in vari modi: ad esempio un adattatore pu essere usato per modificare
DEV > n.153 settembre 2007

look Provati per voi

FIGURA 2

I menu contestuali di Plone

limplementazione di un determinata interfaccia per uno specifico contesto (Figura 3), ma anche per aggiungere funzionalit o comportamenti agli oggetti. In Zope 3 gli oggetti contenuto di base non implementano direttamente quanto necessario alla loro visualizzazione a livello applicazione, per fare ci vengono usati componenti, noti come browser view, che adattano contemporaneamente loggetto richiesto e la richiesta in arrivo dal browser dellutente. Di fatto il browser view contiene le logiche di presentazione, che in tal modo vengono naturalmente separate da quelle intrinseche delloggetto, e possono pi facilmente essere manipolate e riusate in contesti diversi. Tramite il file di configurazione il browser view pu agganciare anche un template ZPT, il quale utilizzer quanto prodotto dalla classe del browser view presentandolo allutente in seguito alla sua richiesta. Per fissare le idee immaginiamo di dover fornire allutente il contenuto di una cartella in un archivio compresso. In Zope 3 potremo disporre di un semplice componente browser view capace di ottenere dal contesto il suo contenuto e di restituirlo compresso allutente che ne faccia richiesta. Mediante il file di configurazione potremo quindi associare la vista allinterfaccia dei componenti su cui vogliamo attivare tale funzionalit, definendo tra laltro anche il permesso di cui bisogna disporre per poter invocare la vista. E piuttosto evidente la facilit con cui tale funzionalit potrebbe essere attivata in contesti diversi da quello di partenza: ladattatore dovrebbe limitarsi a modificare la chiamata utile a ottenere i contenuti dal contesto a cui la vista si applica. E ancora pi facile intuire tale possibilit di riuso se immaginiamo un contesto in cui sia necessario anche un template di presentazione. Immaginiamo di avere a disposizione una vista capace di fornire la lista dei documenti contenuti in una cartella, ed il relativo template. In Zope 2, il template ZPT, oltre a presentare la struttura della pagina HTML, sarebbe infarcito di definizioni e logiche utili a poter costruire il risultato finale. Pensare di riusarlo modificando tali logiche, ad esempio per soddisfare il caso di una cartella virtuale capace di presentare in un unico punto tutti i documenti di uno stesso autore, equivarrebbe a dover rinominare il template e modificarne le logiche cablate, o quanto meno a mettere delle condizioni che in base al contesto applichino la logica originale, o quella da noi desiderata. Chiaramente tale metodo risulta ben poco flessibile. Con il meccanismo delle viste, invece, la struttura HTML del template rester la medesima, mentre le logiche staranno nei browser view specifici che associeremo alle interfacce che ci interessano
DEV > n.153 settembre 2007

in modo appropriato: flessibilit e riuso sono garantiti! Altra situazione di esempio per comprendere i benefici e la potenza introdotta dal nuovo paradigma di sviluppo viene fornito da Plone indagando il modo di costruire i men contestuali che permettono di manipolare gli oggetti (Figura 4): ammettiamo di voler generare un nostro menu contestuale, da utilizzare in corrispondenza di un nostro specifico oggetto. Per poterlo fare nel vecchio Plone lunica strada possibile consiste nel manipolare il template responsabile della costruzione di tali men per aggiungervi quello da noi gestito. Tale approccio, oltre ad essere ben poco elegante, presenta anche il limite seguente: se due diversi prodotti Plone hanno bisogno di modificare tale template, uno dei due guaster le modifiche dellaltro, in quanto il template unico, e i due prodotti sono tra loro indipendenti. Unica soluzione in questo caso quella di operare manualmente per ottenere un template in cui le due modifiche indipendenti convivano. Con le tecnologie Zope 3 possiamo invece fare in modo di registrare un nostro componente, che fornisca le interfacce attese per poter essere usato come men contestuale, senza toccare il template e senza rischiare di rovinare il lavoro di altri sviluppatori. Oltre a tali vantaggi, larchitettura a componenti offre un meccanismo molto pi elegante rispetto a quello utilizzato da Zope 2, per stabilire quali e con quali voci i men vadano mostrati in uno specifico contesto.

Chi usa Zope 3


Illustrare limpatto dellarchitettura a componenti sul modo di sviluppare le applicazioni rispetto a Zope 2 ci porterebbe lontano rispetto allo spazio concesso a questo articolo. Per questo preferiamo dare unidea di come Zope 3 venga utilizzato in concreto oggi. Abbiamo gi parlato del fatto che Zope 2 permette di usare tecnologia Zope 3 mediante luso di Five, un prodotto che predispone quanto necessario a poter utilizzare larchitettura a componenti. Five un progetto nato grazie alla forte volont dei suoi sostenitori, quando ben pochi ritenevano tale strada praticabile. Oggi viene regolarmente rilasciato nel bundle ufficiale delle ultime versioni di Zope 2, insieme alle librerie Zope 3 corrispondenti. Tramite Five vari prodotti che basano i propri servizi su Zope 2 possono da tempo avvantaggiarsi dellarchitettura a componenti di Zope 3 e delle tecnologie sviluppate espressamente per essa. Tra questi chiaramente il posto donore va a Plone, che nella sua release 3.0 adotta completamente tale filosofia, traendo enorme vantaggio dalle nuove modalit di sviluppo, per offrire una qualit sempre crescente (per approfondire: http://www.redomino.com/it/labs/documentazione/ tutorial/plone-3-quali-novita). Abbandonando il mondo Zope 2, tra i progetti importanti completamente basati su Zope 3 non possiamo non ricordare quelli legati alla comunit di Ubuntu: Launchpad (https://launchpad.net/+about) e Schooltool (http: //www.schooltool.org). Il primo un portale offerto alla comunit come strumento per gestire progetti open source
35 <<

look Provati per voi

Silverlight
in un nuovo modo condiviso, ed usato da buona parte degli sviluppatori Ubuntu, e non solo. Il secondo un progetto La soluzione semplicemente utilizzare lattributo x:Name voluto dagli SolidColorBrush dellellisse, in modo costruire per loggetto stessi autori di Ubuntu mirato ad da poteruno strumentotramite gli attributi Storyboard.TargetName e lo referenziare open source utile alla gestione degli aspetti amministrativi delle scuole, che comprendestoryboard del Storyboard.TargetProperty direttamente dallo un servizio di calendaring, un sistema informativo rivolto agli studenti Canvas. Il risultato mostrato in AnimatedPage.htm. e uno strumento per il tracciamento delle competenze di professori e studenti. Entrambi tali progetti hanno un buon grado di maturit, e Conclusioni sono considerati un valido banco di prova a garanzia della qualit effettiva tecnologia molto promettente che permette Silverlight una di Zope 3. Infine citiamo Grok (http://grok.zope.org),pagine web in di includere contenuto XAML nelle proprie un progetto nato pochissimi mesi fa, ma gi realt di primo piano nel modo facile e veloce. La compatibilit con i vari browser mondo Zope. Grok stato forza rispetto alle applicazioni sicuramente il punto di partorito da alcuni dei pi noti e riconosciuti sviluppatori della comunit Zope,utilizzare XBAP standard, che se da una parte permettono di con lintento di potenza di WPF, una via dihanno la pi produttiva la piena offrire ai neofiti dallaltra accesso limitazione di al mondo Zope 3. poter essere visualizzate solamente in un browser IE e in Sviluppare proficuamente con Zope 3un approccio buona un sistema Windows. Il vantaggio di richiede una basato comprensione dellarchitettura a componenti, e del fattocon su XAML che gli sviluppatori hanno gi familiarit che lapplicazione unquindi codice e configurazione. Questo WPF e non sono mix di costretti ad imparare un nuovo si traduce in una fase lunga fase di apprendimento e in un linguaggio per includere contenuti dinamici in un applicativo processoversione 1.1, inoltre, permetterpoco produttivo, web. La di sviluppo apparentemente di utilizzare C#, soprattutto quindi il programmatore dal problema di creare sollevando se raffrontato in modo frettoloso con il modo di sviluppare applicazioni proprio di Zope 2 oLa prossima script Javascript compatibili multi-browser. di ambienti alternativi di degli strumenti Microsoft Expression costigenerazione ultima generazione. Per questo Grok astrae la metodologia di sviluppo di Zope tuir poi il collante tra le varie tecnologie, permettendo a 3 per ottenere qualcosa di pi semplice e lineare da comsviluppatori, artisti e web designer di parlare un linguaggio prenderecon cui sviluppatori alle prime armi. comune per gli realizzare siti web.

Riferimentidei file di configurazione e concentrandosi preoccuparsi

Di fatto Grok permette di sviluppare in Zope 3 senza troppo

sulla struttura e sulla logica della nostra applicazione. Date unocchiata agli ottimi ufficiale Microsoft Silver[1] http://silverlight.net/ Sito tutorial disponibili su http: //grok.zope.org per capire quanto facile utilizzare Zope 3 light per le vostre applicazioni! [2] http://silverlight.net/samples/1.0/Silverlight-Pad/ default.html Silverlight Pad [3] Windows Presentation Foundation Unleashed Adam Conclusioni Nathan SAMS Publishing [4] Application Code+Markup, Charles Petzold, MicroPer soft Press voglia cimentarsi con Zope 3, il sito di rifechiunque rimento http://zope.org. Chi avr bisogno di approfondire i concetti inerenti larchitettura a componenti e il paradigma di sviluppo di Zope 3, Download del progetto potr consultare uno dei diversi libri disponibili, tra cui segnaliamo Web Component Development with Zope 3 di Scarica il Weitershausen, da di questo articolo all'indirizzo: Philipp vonprogetto completo molti ritenuto il miglior modo ftp://ftp.infomedia.it/pub/DEV./Listati/Dev152/Silverlight.zip per acquisire quanto necessario per utilizzare Zope 3.

Gian Maria Ricci


laureato in ingegneria elettronica presso la facolt di Ancona. Ingegnere Elettronico, si occupa di tematiche Zope/Plone in Si interessa di programmazione in ambiente Windows ed da oltre cinque anni. Lavora in .NET. Collabora attualmente con particolare alla piattaforma Redomino come responsabile tecnico per limplementazione (www.actvalue.com) con la ActValue consulting ed il delivery di soluzioniil document ruolo di oriented. project manager ed uno dei fondatori dello usergroup INETA DotNetMarche (www.dotnetmarche.org).

Maurizio Del Monte

>> 36
DEV > n.152 giugno-agosto 2007

DEV > n.153 settembre 2007 15 <<

Potrebbero piacerti anche