Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE Νίκος Κορφιάτης"— Μεταγράφημα παρουσίασης:

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 Zope Core –ZServer Multithreaded Web Server Συνεργασία με όλα σχεδόν τα πρωτόκολλα Σημαντική η υποστήριξη του WebDAV (!) –ZODB Object database Λόγω Python η αντικειμενοστραφής τάση της πλατφόρμας θεωρείται δεδομένη

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 www.dmst.aueb.gr/nkorf/research/index_html

9 Η Αντικειμενοστραφής Αρχιτεκτονική του ZOPE «Καθήκον» του ZOPE είναι να δημοσιεύει τα αντικείμενα που δημιουργούμε και να παρέχει την υποδομή για ανταλλαγή των μηνυμάτων μέσω του URL Πχ Έστω το τυπικό σενάριο στον Apache –http://www.mobiforum.org/cgi-bin/mobi/mobi.cgi?action=load&session_id=1http://www.mobiforum.org/cgi-bin/mobi/mobi.cgi?action=load&session_id=1 Μορφή: protocol://host:port/path?querystring –Protocol: http –Host: www.mobiforum.orgwww.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=co nference&sesion_id=123123123123123asdf1 –http://www.dmst.aueb.gr/news/conferences/20004-02-06/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 http://www.dmst.aueb.gr:8080/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 είτε να συνεργαστεί άνετα μέσω των data adapters που διαθέτει με ένα σύστημα RDBMS όπως η MySQL

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

20 Πως μοιάζουν ? Presentation : Nikos Korfiatis ELTRUN Group ZOPE Presentation Presentation: Zope Presentation Nikos Korfiatis ELTRUN Group

21 Στο παράδειγμα : Μας έδωσε το τίτλο του αντικειμένου (δημιουργήσαμε ένα Folder με τίτλο Zope Presentation) : Predefined tags για html handling.

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

23 Με 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_"); 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_; Order Number Quantity Shipped _HEADER_ while ($row = $sth->fetchrow_hashref) { print <<"_ROW_"; $$row{order_number} $$row{quantity} $$row{shipped} _ROW_ } print <<_FOOTER_; _FOOTER_ $sth->finish; $dbh->disconnect;

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 = ORDER BY order_number

25 To ίδιο στο Zope (2) H παρουσίαση του περιεχομένου θα γίνει με την χρήση ενός template το οποίο και θα καλέσουμε να εμφανίσει τα αποτελέσματα που έκανε bind η μέθοδος μας Order Number Quantity Shipped

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 Portal Application 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.grnkorf@eltrun.gr Οικονομικό Πανεπιστήμιο Αθηνών, Electronic Trading Research Unit (ELTRUN) Sites http://www.zope.org http://www.plone.org http://www.zopelabs.com


Κατέβασμα ppt "Ανάπτυξη Υπηρεσιών Πληροφόρησης με την Χρήση ZOPE Νίκος Κορφιάτης"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google