1 / 38

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

Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE. Νίκος Κορφιάτης (nkorf@eltrun.gr). Σκοπός και Πλαίσιο Παρουσίασης. Να παρουσιάσει την πλατφόρμα Zope/CMF Να εξηγήσει την αντικειμενοστράφεια των web εφαρμογών και των Συστημάτων Διαχείρισης Περιεχομένου ( CMS)

ely
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE Νίκος Κορφιάτης (nkorf@eltrun.gr)

  2. Σκοπός και Πλαίσιο Παρουσίασης • Να παρουσιάσει την πλατφόρμα Zope/CMF • Να εξηγήσει την αντικειμενοστράφεια των web εφαρμογών και των Συστημάτων Διαχείρισης Περιεχομένου (CMS) • Να καταγράψει τα W3C πρότυπα σύμφωνα με την διαχείριση περιεχομένου

  3. Υπηρεσίες Πληροφόρησης • Μια υπηρεσία πληροφόρησης σε μεγάλο abstract level είναι ένα website • Ένας δικτυακός «κόμβος» στον οποίο εισέρχεται και εξέρχεται πληροφορία • Πολυπλοκότητα Υπηρεσιών • Εξατομίκευση (Personalization) • Διαχείριση Εκδόσεων (Versioning) • Διαχείριση Ροής Εργασίας (Workflow)

  4. Τι είναι ο 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

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

  6. Zope Core ZServer Multithreaded Web Server Συνεργασία με όλα σχεδόν τα πρωτόκολλα Σημαντική η υποστήριξη του WebDAV (!) ZODB Object database Λόγω Python η αντικειμενοστραφής τάση της πλατφόρμας θεωρείται δεδομένη Αρχιτεκτονική του ZOPE

  7. Αρχιτεκτονική του 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

  8. Η Αντικειμενοστραφής Αρχιτεκτονική του WEB • Το γενικό σκεπτικό γύρω από την αντικειμενοστραφή αρχιτεκτονική του Zope είναι ότι και ο ίδιος ο ιστός είναι ένα αντικειμενοστραφές σύνολο. • Η URL σε μία πηγή του web είναι απλά ο δείκτης ενός αντικειμένου σε ένα σύνολο containers και το πρωτόκολλο HTTP μας παρέχει τη δυνατότητα να στείλουμε μηνύματα στο αντικείμενο και να λάβουμε τηνανταπόκριση του. • Η ίδια η δομή του Zope είναι ιεραρχική, κάτι που σημαίνει ότι ένα τυπικό website που είναι χτισμένο με zope αποτελείται από αντικείμενα τα οποία με την σειρά τους εμπεριέχουν άλλα αντικείμενα. Πχ η URL www.dmst.aueb.gr/nkorf/research/index_html χρησιμοποιείται για να προσπελάσει το αντικείμενο index_html που εμπεριέχεται στο αντικείμενο research το οποίο με την σειρά του εμπεριέχεται στο αντικείμενο nkorf

  9. Η Αντικειμενοστραφής Αρχιτεκτονική του 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 (!)

  10. Η Αντικειμενοστραφής Αρχιτεκτονική του 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……

  11. Η Αρχιτεκτονική μιας Καλής 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/ • Διαχωρισμός λογικών επιπέδων • Επίπεδο Δεδομένων • Επίπεδο Επεξεργασίας • Επίπεδο Παρουσίασης

  12. Η Αρχιτεκτονική μιας Καλής web Εφαρμογής (2) • Παρουσίαση • Ανεξάρτητη από web browser • Αποφυγή JavaScript (όπου μπορεί να γίνει) • Χρήση Stylesheets για έλεγχο της παρουσίασης • Παροχή Πληροφορίας πλοήγησης • Αποφυγή «χαοτικών» δομών στα links • Εύχρηστη Δομή Αναζήτησης • Ιεραρχική Δομή (Site Map) • Υποδομή Αναζήτησης (πχ μέσω Google)

  13. Η Αρχιτεκτονική μιας Καλής web Εφαρμογής (3) • Ανάπτυξη • Διακριτοί ρόλοι • Database Admin • Programmer • Designer • Συνεργασία • Ο Programmer με τον Database Admin • O Designer με τον Programmer • Πρέπει να διευκολύνεται η συνεργασία και ο καταμερισμός της εργασίας των παραπάνω ρόλων

  14. Η πρόταση του 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

  15. 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

  16. H συμβατότητα του ZOPE με το W3CAA • Ο Designer μπορεί να χρησιμοποιήσει CSS ώστε να ελέγχει καλύτερα την παρουσίαση του Site • To Query String στην ZopeDB χρησιμοποιείται για παροχή πληροφορίας στη πλοήγηση του χρήστη • Οι data adapters πού έρχονται μαζί με το zope υποστηρίζουν την εξαγωγή των δεδομένων σε XML RDF etc

  17. Εγκατάσταση • Για Windows υπάρχει Installer με κονσόλα διαχείρισης ωςαπλό process ή service για ΝΤ • Port σε FreeBSD, rpm για linux καθώς και πακέτα για όλα τα κύρια λειτουργικά συστήματα • Πανεύκολη εγκατάσταση – απαιτεί κάποιες ρυθμίσεις στα Permissions του UNIX

  18. Συνεργασία με Apache και RDBMS • Όπως προαναφέραμε ο ZOPE χρησιμοποιεί τον δικό του multithreaded web server για καλύτερο object persistence • Μπορεί άνετα να λειτουργήσει κάτω από τον Apache χρησιμοποιώντας είτε το mod_proxy είτε ως pcgi/cgi • O ZOPE μπορεί να αποθηκεύσει τα δεδομένα του είτε στην δικιά του database είτε να συνεργαστεί άνετα μέσω των dataadapters που διαθέτει με ένα σύστημα RDBMS όπως η MySQL

  19. ΖOPE Templates • Ένα XML namespace το οποίο χρησιμοποιείται για να διαχωρίσει την λογική από το περιεχόμενο • Διευκολύνει την επαναχρησιμοποίηση ήδη υπαρχόντων αντικειμένων • Επειδή ανήκουν στο ίδιο «namespace» δεν χρειάζεται η δήλωση τους κάθε φορά που δημιουργούμε ενα dtml page template • Ενσωματωμένοι αλγόριθμοι cashing στο Zope διευκολύνουν το scalability της εφαρμογής μας

  20. Πως μοιάζουν ? <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>

  21. Στο παράδειγμα • <dtml-var title>: Μας έδωσε το τίτλο του αντικειμένου (δημιουργήσαμε ένα Folder με τίτλο Zope Presentation) • <dtml-var standard_html_header/footer>: Predefined tags για html handling.

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

  23. #!/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_"); 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 = $order_number ORDER 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; Με mod_perl

  24. 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

  25. 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>

  26. Βασικές Έννοιες Διαχείρισης Περιεχομένου • Διαχείριση Δικαιωμάτων (State Management) • Ποιος έχει δικαίωμα να δημοσιεύσειτι και που ? • Review Process • Διαχείριση ροής εργασίας (workflow) • Contributions and merging • Περιορισμοί και χρονικά περιθώρια • Acquisition του περιεχομένου • Εύχρηστες φόρμες εισαγωγής και έλεγχος σωστής καταχώρησης

  27. Βασικές Έννοιες Διαχείρισης Περιεχομένου (2) • Μεταδεδομένα και υποστήριξη σημασιολογίας • Όσο το δυνατόν καλύτερη περιγραφή του περιεχομένου • Παροχή δυνατότητας συγχρονισμού από άλλες πηγές • RSS/RDF feeds

  28. The ZOPE CMF • Το κύριο πλαίσιο διαχείρισης περιεχομένου που χρησιμοποιεί ο ZOPE • Μια βιβλιοθήκη έτοιμων αντικειμένων τα οποία μπορούμε να ενσωματώσουμε στην εφαρμογή μας. Τέτοια αντικείμενα είναι wikicontent, callendar,localizer (!) etc • Μια Component Based προσέγγιση στο «χτίσιμο» portals και υπηρεσιών πληροφόρησης

  29. 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

  30. PLONE: A ZOPE PortalApplication based on CMF

  31. Εισαγωγή στο Plone/CMF • To Plone έχει «κτιστεί» πάνω στο CMF δίνοντας ένα πλήρως λειτουργικό Content Management System • Γενικά χαρακτηριστικά που κληρονομεί από το Zope • Διαχείριση Ροής Εργασίας • Αντικειμενοστραφής Εργασία με έγγραφα και πληροφορία • Products του Zope μπορούν να χρησιμοποιηθούν στο Plone

  32. Διαχείριση Ροής Εργασίας • Σε ένα πλήρες site πολλές φορές απαιτείται η συνεργασία πολλών ατόμων • Στο “Plone” διευκολύνεται η συνεργασία μέσω ειδικά διαμορφωμένων δυνατοτήτων • Διαμόρφωση ρόλων • Είδη εγγράφων • Μεταδεδομένα

  33. Διαχείριση Αντικειμένων Πρόσβαση σε όλα τα αντικείμενα του ZOPE

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

  35. Add-ins (CMFBibliography)

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

  37. Και τα Nukes ? • Nukes: Συστήματα Διαχείρισης περιεχομένου που αναπτύσσονται με PHP • Προσεγγίζουν (προσπαθούν) την αντικειμενοστράφεια • Αδυναμία ενιαίας πλατφόρμας (Application Server) • Πρόβλημα στα πλαίσια ανάπτυξης • Total Cost of Ownership πολύ μεγάλο....

  38. Τέλος... • Επικοινωνία Email: nkorf@eltrun.gr Οικονομικό Πανεπιστήμιο Αθηνών, Electronic Trading Research Unit (ELTRUN) Sites http://www.zope.org http://www.plone.org http://www.zopelabs.com

More Related