Linux Inside
51
Web Frameworks
M
έχρι πρότινος το Web development ήταν μία... εύκο-
λη ασχολία και ο καθένας που διάβαζε λίγο HTML,
PHP και JavaScript μπορούσε να αρχίσει να προ-
γραμματίζει μία ιστοσελίδα. Η κλασική ροή ανάπτυξης μίας
ιστοσελίδας ήταν να σχεδιάσουμε στο Photoshop ή στο Gimp
το Web site και μετά να το δώσουμε σε έναν σχεδιαστή, που
θα το «έκοβε» σε μέρη, θα δημιουργούσε πίνακες στην HTML
και με CSS θα δημιουργούσε το gui του site.
Στη συνέχεια το project θα περνούσε στον Web developer
που είναι κατεξοχήν προγραμματιστής και θα άρχιζε να προ-
γραμματίζει την ιστοσελίδα, τις φόρμες, τα clicks του χρήστη,
τα εφέ στα μενού και ό,τι απαιτούσε προγραμματισμό.
Σε αυτήν τη διαδικασία κάθε έργο προγραμματιζόταν από
την αρχή. Το διαφορετικό user interface της ιστοσελίδας ανά-
γκαζε να μην υπάρχει σταθερή υποδομή αντικειμένων και ευ-
κολία προγραμματισμού όπως στις γραφικές εφαρμογές της
C++. Έτσι το Web development δεν μπορούσε να ακολουθή-
σει τον αντικειμενοστραφή προγραμματισμό (OOP).
Αυτό για την εταιρεία ανάπτυξης σήμαινε ότι σε κάθε έργο
έπρεπε να δαπανά συγκεκριμένο χρόνο για να ξαναδημιουρ-
γήσει παρόμοιο κώδικα με προηγούμενα έργα, ο οποίος θα
επαναλαμβανόταν και θα γραφόταν από την αρχή, προσθέτο-
ντας τις νέες απαιτήσεις από το νέο έργο. Όμως αυτή η χρο-
νοβόρα διαδικασία επανάληψης κώδικα ξανά και ξανά δεν εί-
ναι εύκολα διαχειρίσιμη, κοστίζει σε εργατοώρες ανάπτυξης
και ο κώδικας κάθε έργου δεν είναι εύκολα συντηρήσιμος.
Ευτυχώς, ο παλιός παραδοσιακός τρόπος προγραμματισμού
της δεκαετίας του 2000, που προγραμματίζαμε σε μορφή
batch file ένα σκριπτάκι της PHP, πέρασε.
Πολλοί θα αναρωτιούνται: δεν θα ήταν καλό να υπάρχει ένα
framework με έτοιμα API, classes, objects, properties και
methods, όπως στον OOP προγραμματισμό, για να μας διευ-
κολύνει τη ζωή; Ακριβώς αυτή την ανάγκη, που εμφανίστηκε
στο Διαδίκτυο περίπου το 2000, έρχονται να καλύψουν τα λε-
γόμενα Web frameworks.
Τι είναι όμως ένα framework;
Σίγουρα θα έχετε ακούσει για το .NΕΤ ή την QT, ή τα
wxWidgets, τα οποία είναι OOP frameworks. Όπως θα έχετε
δει σε αυτά, υπάρχουν ομάδες κλάσεων που προσφέρουν
ένα προγραμματιστικό interface για την ανάπτυξη εφαρμο-
γών. Για παράδειγμα, υπάρχουν τα σύνολα κλάσεων για να
δημιουργήσουμε μία φόρμα, ένα κουμπί, ένα πλαίσιο κειμέ-
νου ή το σύνολο για να δημιουργήσουμε ένα e–mail ή μία
σύνδεση TCP, ή το σύνολο κλάσεων για να συνδεθούμε με
μία βάση δεδομένων ή για να διαχειριστούμε multimedia κ.λπ.
Κάθε τέτοιο σύνολο είναι καλά δομημένο, με τη δυνατότητα
δημιουργίας πλήθους αντικειμένων, καθένα από τα οποία
έχει ιδιότητες και μεθόδους.
Ο προγραμματιστής, προκειμένου να φτιάξει το γραφικό
περιβάλλον, καλεί τα αντικείμενα αυτά από τις αντίστοιχες
κλάσεις και τους ορίζει τις ιδιότητες. Για παράδειγμα, τι μή-
κος και ύψος θα έχουν, τι χρώμα παρασκηνίου, τι χρώμα
γραμματοσειράς, σε ποιο σημείο X, Y θα εμφανιστούν στην
οθόνη κ.λπ.
Αυτήν ακριβώς την ευκολία προγραμματισμού έρχονται να
προσφέρουν τα Web frameworks, που διαχειρίζονται εσωτερι-
κά την Javascript και βιβλιοθήκες όπως την JQuerry, και σε
συνδυασμό με το DOM κάθε φυλλομετρητή, προσφέρουν ένα
ενιαίο περιβάλλον κλάσεων για το Web. Πλέον ο προγραμμα-
τισμός της σελίδας δεν θα γίνεται με batch scripting, αλλά θα
δημιουργείτε, π.χ., ένα αντικείμενο Web page και πάνω του
θα προσθέτετε άλλα αντικείμενα, όπως φόρμες, κουμπιά,
widgets κ.λπ.
Η διαφορά των Web frameworks από το απλό DOM είναι
ότι τα frameworks είναι προσανατολισμένα στα widgets και
δεν θα έχετε να κάνετε απευθείας με ένα <table>, με την
κλασική μορφή ενός tag, αλλά με ένα widget πίνακα, που θα
το προγραμματίσετε εύκολα με ιδιότητες και μεθόδους. Tο
ίδιο συμβαίνει με μία σύνδεση στη βάση δεδομένων ή σε ένα
widget που θα εμφανίζει τα αποτελέσματα ενός SQL query
κ.λπ.
Τα frameworks χωρίζονται σε δύο μεγάλες κατηγορίες: αυ-
τά που λέγονται «διαχείρισης περιεχομένου» (content
management frameworks), όπως ο προγραμματισμός Joomla
plug–ins και modules, και αυτά που δημιουργούν γενικές
εφαρμογές Web (Web application frameworks).
Η γλώσσα προγραμματισμού είναι object oriented, όπως οι
PHP, C++, ASP.NET, Java, PERL, Python και Ruby. Άλλα
frameworks είναι OOP [1] και άλλα ακολουθούν το μοντέλο
Model View Controller (MVC) [2]. Όσα είναι OOP μας κατευ-
θύνουν να χρησιμοποιούμε πλέον αντικείμενα και όχι τα κλα-
σικά tags της HTML, προσεγγίζοντας έτσι τον προγραμματι-
σμό ενός Web gui όπως ένα gui στις εφαρμογές του Gnome
και του KDE.
Από την άλλη, όσα frameworks είναι MVC, χωρίζουν τα δε-
δομένα από την εμφάνιση και επιτρέπουν στον Web designer
να σχεδιάζει τη σελίδα με τις κλασικές μεθόδους, και στον
Web developer να κάνει ταχύτατη ανάπτυξη με API που του
διευκολύνουν τη ζωή.
Agavi
Εάν αγαπάς κάτι, ελευθέρωσέ το!
URL: www.agavi.org
Το Agavi είναι ένα γενικού σκοπού PHP application
framework, κτισμένο γύρω από την αρχιτεκτονική Model-View-
Controller, και βασίζεται στο Mojavi 3 Web application
framework που έχει γραφτεί από τον Sean Kerr. Παρέχει ένα
πλούσιο toolset, το οποίο λύνει τα περισσότερα προβλήματα
στην ανάπτυξη μίας εφαρμογής για το Web.
Το Agavi είναι σχεδιασμένο για σοβαρή ανάπτυξη. Δεν είναι
τόσο ένα kit κατασκευής ιστοσελίδων, όσο ένας σκελετός που
πάνω του θα κτίσετε την εφαρμογή σας.
Η αρχιτεκτονική του επιτρέπει στους developers να παρα-
μένουν στον εξαιρετικό έλεγχο του κώδικά τους. Είναι γραμ-
Τα frameworks χωρίζονται σε δύο μεγάλες
κατηγορίες: αυτά που λέγονται «διαχείρισης
περιεχομένου», όπως ο προγραμματισμός
Joomla plug–ins και modules, και αυτά που
δημιουργούν γενικές εφαρμογές Web.