Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE

38
Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE Νίκος Κορφιάτης ([email protected])

description

Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE. Νίκος Κορφιάτης ([email protected]). Σκοπός και Πλαίσιο Παρουσίασης. Να παρουσιάσει την πλατφόρμα Zope/CMF Να εξηγήσει την αντικειμενοστράφεια των web εφαρμογών και των Συστημάτων Διαχείρισης Περιεχομένου ( CMS) - PowerPoint PPT Presentation

Transcript of Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE

Page 1: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE

Νίκος Κορφιάτης ([email protected])

Page 2: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Σκοπός και Πλαίσιο Παρουσίασης

• Να παρουσιάσει την πλατφόρμα Zope/CMF

• Να εξηγήσει την αντικειμενοστράφεια των web εφαρμογών και των Συστημάτων Διαχείρισης Περιεχομένου (CMS)

• Να καταγράψει τα W3C πρότυπα σύμφωνα με την διαχείριση περιεχομένου

Page 3: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Υπηρεσίες Πληροφόρησης

• Μια υπηρεσία πληροφόρησης σε μεγάλο abstract level είναι ένα website

• Ένας δικτυακός «κόμβος» στον οποίο εισέρχεται και εξέρχεται πληροφορία

• Πολυπλοκότητα Υπηρεσιών– Εξατομίκευση (Personalization)– Διαχείριση Εκδόσεων (Versioning)– Διαχείριση Ροής Εργασίας (Workflow)

Page 4: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Τι είναι ο ZOPE• The “Z”, “Object Oriented Publishing Environment”• Ένας application server γραμμένος σε python με μερικά «κρίσιμα»

σημεία γραμμένα σε «C». Οι λειτουργίες που παρέχει μοιάζουν αρκετά με του JBOSS με την μόνη διαφορά ότι είναι επικεντρωμένες στην διαχείριση περιεχομένου.

• Ίσως η πιο αντικειμενοστραφής πλατφόρμα για ανάπτυξη web based εφαρμογών

• Παρέχει βασικές υπηρεσίες όπως: – Database integration

– Template-based page production

– User authentication,

– Selective permissions

– Object-oriented paradigm for the distribution of custom code (Python Packages known as Products)

– Management of persistent objects and sessions

Page 5: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Πως μοιάζει ο ZOPE (?)

Page 6: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Αρχιτεκτονική του ZOPE

• Zope Core– ZServer

• Multithreaded Web Server• Συνεργασία με όλα

σχεδόν τα πρωτόκολλα• Σημαντική η υποστήριξη

του WebDAV (!)

– ZODB• Object database • Λόγω Python η

αντικειμενοστραφής τάση της πλατφόρμας θεωρείται δεδομένη

Page 7: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Αρχιτεκτονική του ZOPE (2)

• Zserver: Ο Zope περιέχει έναν δικό του web server o οποίος μπορεί να δώσει το περιεχόμενο μέσα από διάφορα πρωτοκόλλα όπως FTP, WebDAV & XML-RPC

• Web Server: Δίνεται η δυνατότητα να χρησιμοποιηθεί ένας άλλος web server (Apache, IIS) o οποίος πρέπει να υποστηρίζει CGI

• Zope Core: Είναι το κύριο σημείο της πλατφόρμας που ενώνει την κονσόλα διαχείρισης με τη βάση αντικειμένων

• Βάση Αντικειμένων: Διαχειρίζεται τα αντικείμενα με τα οποία γίνεται εργασία στο ZOPE

• Σχεσιακή βάση δεδομένων: Χρησιμεύει για την αποθήκευση πληροφορίας. Η επικοινωνία γίνεται μέσα από ειδικό adapter. (Oracle, PostgreSQL, Sybase, MySQL etc).

• Σύστημα αρχείων: Ο Zope μπορεί να δουλέψει και με αρχεία (πχ python scripts) τα οποία και είναι αποθηκευμένα κάπου στο σύστημα αρχείων

• ZClasses: Τύποι αντικειμένων που μπορούν να προστεθούν μέσα από την κονσόλα διαχείρισης

• Products: Αφορά νέους τύπους αντικειμένων που επεκτείνουν την λειτουργικότητα της πλατφόρμας. Στην ουσία ένα προϊόν είναι ένα σύνολο από ZClasses

Page 8: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αντικειμενοστραφής Αρχιτεκτονική του WEB

• Το γενικό σκεπτικό γύρω από την αντικειμενοστραφή αρχιτεκτονική του Zope είναι ότι και ο ίδιος ο ιστός είναι ένα αντικειμενοστραφές σύνολο.

• Η URL σε μία πηγή του web είναι απλά ο δείκτης ενός αντικειμένου σε ένα σύνολο containers και το πρωτόκολλο HTTP μας παρέχει τη δυνατότητα να στείλουμε μηνύματα στο αντικείμενο και να λάβουμε τηνανταπόκριση του.

• Η ίδια η δομή του Zope είναι ιεραρχική, κάτι που σημαίνει ότι ένα τυπικό website που είναι χτισμένο με zope αποτελείται από αντικείμενα τα οποία με την σειρά τους εμπεριέχουν άλλα αντικείμενα. Πχ η URL www.dmst.aueb.gr/nkorf/research/index_html χρησιμοποιείται για να προσπελάσει το αντικείμενο index_html που εμπεριέχεται στο αντικείμενο research το οποίο με την σειρά του εμπεριέχεται στο αντικείμενο nkorf

Page 9: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αντικειμενοστραφής Αρχιτεκτονική του ZOPE

• «Καθήκον» του ZOPE είναι να δημοσιεύει τα αντικείμενα που δημιουργούμε και να παρέχει την υποδομή για ανταλλαγή των μηνυμάτων μέσω του URL

• Πχ Έστω το τυπικό σενάριο στον Apache– http://www.mobiforum.org/cgi-bin/mobi/mobi.cgi?action=load&session_id=1

• Μορφή: protocol://host:port/path?querystring – Protocol: http– Host: www.mobiforum.org– Port: 80(default) – Path: cgi-bin/mobi/mobi.cgi – Query String: action=load & session_id=1

• Στον ΖΟPE έχουμε τον ίδιο διαχωρισμό τις ακολουθίας στα στοιχεία Protocol, Host, Port με την διαφορά ότι δεν υπάρχει file based path (!)

Page 10: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αντικειμενοστραφής Αρχιτεκτονική του ZOPE(2)

• Η έννοια της διαδρομής (path) δεν υπάρχει στο ZOPE καθώς ο ΖOPE αποθηκεύει όλα τα αντικείμενα – (πχ nkorf, research, index_html) σε μία βάση αντικειμένων (ZopeDB, Object Database)

• Επιστροφή στο παράδειγμα: – Ο Zope εντοπίζει στην Object Database το αντικείμενο χρησιμοποιώντας ως

query string το /cgi-bin/mobi (παρόμοια σύνταξη με το XPath). Θυμίζει κάπως ORB

– Στην συνέχεια εκτελεί το αντικείμενο (mobi.cgi) μεταφέροντας του όλες τις παραμέτρους από το Query String που είχαμε πριν. Η συμπεριφορά του αντικειμένου μπορεί να αλλάξει δίνοντας διαφορετικές τιμές στις παραμέτρους του.

– Το αποτέλεσμα τις εκτέλεσης του αντικειμένου μεταφέρεται μέσω του ZOPE στον Web Browser του χρήστη. Το αποτέλεσμα αυτό μπορεί να είναι είτε:

• Content Type/ html • Application /Image • Application / File

– Application-zip file » Etc……

Page 11: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αρχιτεκτονική μιας Καλής web Εφαρμογής (1)

• Πλήρως Συμβατή με W3C Accessibility Guidelines– Σημαίνει:

• Διαχωρισμός Περιεχομένου από Δομή • Διαχωρισμός Περιεχομένου από Παρουσίαση• Προσβάσιμες και κατανοητές URL

– http://www.dmst.aueb.gr/news.php?date=20040206&event_type=conference&sesion_id=123123123123123asdf1

– http://www.dmst.aueb.gr/news/conferences/20004-02-06/

• Διαχωρισμός λογικών επιπέδων – Επίπεδο Δεδομένων

– Επίπεδο Επεξεργασίας

– Επίπεδο Παρουσίασης

Page 12: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αρχιτεκτονική μιας Καλής web Εφαρμογής (2)

• Παρουσίαση– Ανεξάρτητη από web browser

• Αποφυγή JavaScript (όπου μπορεί να γίνει) • Χρήση Stylesheets για έλεγχο της παρουσίασης

– Παροχή Πληροφορίας πλοήγησης• Αποφυγή «χαοτικών» δομών στα links

– Εύχρηστη Δομή Αναζήτησης• Ιεραρχική Δομή (Site Map) • Υποδομή Αναζήτησης (πχ μέσω Google)

Page 13: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η Αρχιτεκτονική μιας Καλής web Εφαρμογής (3)

• Ανάπτυξη– Διακριτοί ρόλοι

• Database Admin• Programmer • Designer

– Συνεργασία • Ο Programmer με τον Database Admin• O Designer με τον Programmer

– Πρέπει να διευκολύνεται η συνεργασία και ο καταμερισμός της εργασίας των παραπάνω ρόλων

Page 14: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Η πρόταση του ZOPE στον Διαχωρισμό Ρόλων

• Στον Zope τα πάντα είναι «αντικείμενα»– Μία μέθοδος του αντικειμένου είναι η SQL που θα εκτελεστεί στον

Data Adapter. O Data Adapter με τα permissions κτλ έχει οριστεί από πριν στο ZOPE. Ο Database admin το μόνο που έχει να κάνει είναι να γράψει το transaction ή το query και να το “σερβίρει” στον Programmer

– Σε δεύτερο βήμα o Programmer έχοντας ήδη τη μέθοδο που κάνει handle την SQL κάνει scripting για να παρουσιάσει τα δεδομένα ή να εκτελέσει μια αλγοριθμική διαδικασία

– Ο Designer έχει από πριν φτιάξει ένα template χρησιμοποιώντας html και CSS το οποίο χρησιμοποιεί ο προγραμματιστής για να παρουσιάσει τα αποτελέσματα του query

Page 15: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

H συμβατότητα του ZOPE με το W3CAA

• Όπως προαναφέραμε στον ZOPE δεν υπάρχει η έννοια του file-based path όπως για παράδειγμα υπάρχει στον Apache. Η διαδρομή http://www.dmst.aueb.gr:8080/news/conferences/ δεν σημαίνει ότι στο root directory του server υπάρχει η δομή καταλόγου news/conferences

• To path είναι στην ουσία το query string δίνοντας έτσι μία ευπαρουσίαστη και κατανοητή url

Page 16: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

H συμβατότητα του ZOPE με το W3CAA

• Ο Designer μπορεί να χρησιμοποιήσει CSS ώστε να ελέγχει καλύτερα την παρουσίαση του Site

• To Query String στην ZopeDB χρησιμοποιείται για παροχή πληροφορίας στη πλοήγηση του χρήστη

• Οι data adapters πού έρχονται μαζί με το zope υποστηρίζουν την εξαγωγή των δεδομένων σε XML RDF etc

Page 17: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Εγκατάσταση

• Για Windows υπάρχει Installer με κονσόλα διαχείρισης ως απλό process ή service για ΝΤ

• Port σε FreeBSD, rpm για linux καθώς και πακέτα για όλα τα κύρια λειτουργικά συστήματα

• Πανεύκολη εγκατάσταση – απαιτεί κάποιες ρυθμίσεις στα Permissions του UNIX

Page 18: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Συνεργασία με Apache και RDBMS

• Όπως προαναφέραμε ο ZOPE χρησιμοποιεί τον δικό του multithreaded web server για καλύτερο object persistence – Μπορεί άνετα να λειτουργήσει κάτω από τον Apache

χρησιμοποιώντας είτε το mod_proxy είτε ως pcgi/cgi

• O ZOPE μπορεί να αποθηκεύσει τα δεδομένα του είτε στην δικιά του database είτε να συνεργαστεί άνετα μέσω των data adapters που διαθέτει με ένα σύστημα RDBMS όπως η MySQL

Page 19: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

ΖOPE Templates

• Ένα XML namespace το οποίο χρησιμοποιείται για να διαχωρίσει την λογική από το περιεχόμενο

• Διευκολύνει την επαναχρησιμοποίηση ήδη υπαρχόντων αντικειμένων

• Επειδή ανήκουν στο ίδιο «namespace» δεν χρειάζεται η δήλωση τους κάθε φορά που δημιουργούμε ενα dtml page template

• Ενσωματωμένοι αλγόριθμοι cashing στο Zope διευκολύνουν το scalability της εφαρμογής μας

Page 20: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Πως μοιάζουν ?

<dtml-var standard_html_header><h1>Presentation : <dtml-var title></h1><p>Nikos Korfiatis</p><p>ELTRUN Group</p><dtml-var standard_html_footer>

<html><head><title>ZOPE Presentation</title><body bgcolor="#FFFFFF"> <h1>Presentation: Zope Presentation</h1> <p>Nikos Korfiatis</p> <p>ELTRUN Group</p> </body></html>

Page 21: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Στο παράδειγμα

• <dtml-var title>: Μας έδωσε το τίτλο του αντικειμένου (δημιουργήσαμε ένα Folder με τίτλο Zope Presentation)

• <dtml-var standard_html_header/footer>: Predefined tags για html handling.

Page 22: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Ένα δεύτερο παράδειγμα

• Έστω ότι ένας «πελάτης» μας έχει μια βάση δεδομένων με προϊόντα τα οποία θέλει να παρουσιάσει στο web μέσω μιας ιστοσελίδας

Page 23: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Με mod_perl#!/usr/bin/perl

use DBI;use CGI qw/:standard/;

$query = new CGI;$order_number = $query->param('order_number');

$dbh = DBI->connect ("DBI:Oracle:MyDatabase");$sth = DBI->prepare (<<"_QUERY_");SELECTparts.part_id, description, price, order_number, quantity, shipped, customers.name, customers.addressFROM parts, orders, customers WHERE parts.part_id = orders.part_id AND orders.customer_id = customers.customer_idAND orders.order_number = $order_numberORDER BY order_number_QUERY_

$sth->execute;

print "Content-Type: text/html\n\n";

print <<_HEADER_;<table><tr> <th>Order<br>Number</th> <th>Quantity</th> <th>Shipped</th></tr>_HEADER_

while ($row = $sth->fetchrow_hashref) { print <<"_ROW_"; <tr> <td>$$row{order_number}</td> <td>$$row{quantity}</td> <td>$$row{shipped}</td> </tr>_ROW_}

print <<_FOOTER_;</table>_FOOTER_

$sth->finish;$dbh->disconnect;

Page 24: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

To ίδιο στο Zope

• Μέσω του administration interface δημιουργούμε ένα νέο object (ZSQL query object)

• Στο query object καλούμε μία μέθοδο η οποία μας εξάγει τα δεδομένα από την βάση καλώντας τον data adapter που έχουμε ορίσει από πριν στο ZOPE

SELECT parts.part_id, description, price, order_number, quantity, shipped, customers.name, customers.address FROM parts, orders, customers WHERE parts.part_id = orders.part_id AND orders.customer_id = customers.customer_id AND orders.order_number = <!--#var order_number--> ORDER BY order_number

Page 25: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

To ίδιο στο Zope (2)

• H παρουσίαση του περιεχομένου θα γίνει με την χρήση ενός template το οποίο και θα καλέσουμε να εμφανίσει τα αποτελέσματα που έκανε bind η μέθοδος μας

<table><tr> <th>Order<br>Number</th> <th>Quantity</th> <th>Shipped</th></tr>

<!--#in qryListOrderInformation--> <tr> <td><!--#var order_number--></td> <td><!--#var quantity--></td> <td><!--#var shipped--></td> </tr><!--#/in--></table>

Page 26: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Βασικές Έννοιες Διαχείρισης Περιεχομένου

• Διαχείριση Δικαιωμάτων (State Management) – Ποιος έχει δικαίωμα να δημοσιεύσει τι και που ? – Review Process

• Διαχείριση ροής εργασίας (workflow)– Contributions and merging – Περιορισμοί και χρονικά περιθώρια

• Acquisition του περιεχομένου – Εύχρηστες φόρμες εισαγωγής και έλεγχος

σωστής καταχώρησης

Page 27: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Βασικές Έννοιες Διαχείρισης Περιεχομένου (2)

• Μεταδεδομένα και υποστήριξη σημασιολογίας– Όσο το δυνατόν καλύτερη περιγραφή του

περιεχομένου

• Παροχή δυνατότητας συγχρονισμού από άλλες πηγές– RSS/RDF feeds

Page 28: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

The ZOPE CMF

• Το κύριο πλαίσιο διαχείρισης περιεχομένου που χρησιμοποιεί ο ZOPE

• Μια βιβλιοθήκη έτοιμων αντικειμένων τα οποία μπορούμε να ενσωματώσουμε στην εφαρμογή μας. Τέτοια αντικείμενα είναι wikicontent, callendar,localizer (!) etc

• Μια Component Based προσέγγιση στο «χτίσιμο» portals και υπηρεσιών πληροφόρησης

Page 29: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

CMF Core Services

• MembershipServices (includes personalization) • CatalogingServices (using Zope's ZCatalog) • WorkflowServices (Permissions, State

Management)• BasicContentServices • SiteDesignServices (Templates, Cashing)• IntegrationServices • DiscussionServices • ArchivingServices • SyndicationServices (RSS, RDF)• RatingServices • TestingServices

Page 30: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

PLONE: A ZOPE Portal Application based on CMF

Page 31: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Εισαγωγή στο Plone/CMF

• To Plone έχει «κτιστεί» πάνω στο CMF δίνοντας ένα πλήρως λειτουργικό Content Management System

• Γενικά χαρακτηριστικά που κληρονομεί από το Zope– Διαχείριση Ροής Εργασίας– Αντικειμενοστραφής Εργασία με έγγραφα και

πληροφορία – Products του Zope μπορούν να χρησιμοποιηθούν

στο Plone

Page 32: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Διαχείριση Ροής Εργασίας

• Σε ένα πλήρες site πολλές φορές απαιτείται η συνεργασία πολλών ατόμων

• Στο “Plone” διευκολύνεται η συνεργασία μέσω ειδικά διαμορφωμένων δυνατοτήτων– Διαμόρφωση ρόλων– Είδη εγγράφων – Μεταδεδομένα

Page 33: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Διαχείριση Αντικειμένων

Πρόσβαση σε όλα τα αντικείμενα του ZOPE

Page 34: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Διαχείριση Ιδιοτήτων

Page 35: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Add-ins (CMFBibliography)

Page 36: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Μεταδεδομένα

Page 37: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Και τα Nukes ?

• Nukes: Συστήματα Διαχείρισης περιεχομένου που αναπτύσσονται με PHP

• Προσεγγίζουν (προσπαθούν) την αντικειμενοστράφεια

• Αδυναμία ενιαίας πλατφόρμας (Application Server)

• Πρόβλημα στα πλαίσια ανάπτυξης

• Total Cost of Ownership πολύ μεγάλο....

Page 38: Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση  ZOPE

Τέλος...

• ΕπικοινωνίαEmail: [email protected]

Οικονομικό Πανεπιστήμιο Αθηνών, Electronic Trading Research Unit (ELTRUN)

Sites

http://www.zope.org

http://www.plone.org

http://www.zopelabs.com