Επόμενο Προηγούμενο Περιεχόμενα
Η σχεδίαση της τεχνολογίας IO Slaves είναι η *σωστή*
αρθρωτή και ιεραρχική σχεδίαση που υποτίθεται ότι
διδάσκεται σε κάθε μάθημα προγραμματισμού. Ο τελευταίος
απόφοιτος μιας σχολής προγραμματισμού γνωρίζει πως δεν
πρέπει ποτέ λειτουργίες των χαμηλών επιπέδων (Ι/Ο) να
"εισβάλλουν" στα υψηλά επίπεδα (User Interface), όπως και
ότι κοινές λειτουργίες θα πρέπει κατά το δυνατόν να
ομαδοποιούνται και να προσφέρονται κατά ομοιόμορφο τρόπο
στους χρήστες και στους προγραμματιστές. Οι IO Slaves δεν
είναι παρά απλή εφαρμογή των παραπάνω ιδεών. Με αυτά
υπόψη, θα μπορούσαμε να συνοψίσουμε την τεχνολογία IO
Slaves στην παρακάτω παράγραφο:
Οι ΙΟ Slaves είναι ένα στρώμα αντικειμένων που
παρεμβάλλονται ανάμεσα σε ένα πρόγραμμα που ζητά
πληροφορίες (π.χ. Konqueror) και την πηγή αυτών των
πληροφοριών. Αναλαμβάνουν να απαλλάξουν το πρόγραμμα από
τις λεπτομέρειες της συνδιαλλαγής με την πηγή και της
ανάκτησης των πληροφοριών, πραγματοποιώντας οι ίδιοι
αυτές τις λειτουργίες. Η χρήση των IO slaves γίνεται μέσω
εντολών που είναι κοινές για όλους τους IO Slaves και άρα
ανεξάρτητες του είδους της πηγής.
Αν το δούμε πολύ αφαιρετικά το θέμα, σχεδόν τα πάντα σε
έναν υπολογιστή μπορούν να αντιμετωπισθούν είτε ως
περιεχόμενο, είτε ως αρχεία. Η διαφορά είναι μεγάλη. Ένα
"αρχείο" είναι ένα "πράγμα" με συγκεκριμένο όνομα. Τα
περιεχόμενά του δε φαίνονται κατ' ευθείαν όταν το κοιτάμε
απ' έξω. Πρέπει να το "ανοίξουμε" και τότε κάποιο
πρόγραμμα θα μας παρουσιάσει το "περιεχόμενο" του
αρχείου. Υπάρχουν πρωτόκολλα που είναι καλύτερο να
αντιμετωπιστούν σαν πρωτόκολλα αρχείων. Το FTP για
παράδειγμα, ή το NFS. Υπάρχουν όμως και πρωτόκολλα που
(μολονότι εν τέλει στηρίζονται και αυτά σε κάποια αρχεία)
καθορίζουν κυρίως περιεχόμενο. Για παράδειγμα το HTTP
κατά κανόνα χρησιμοποιείται για μεταφορά περιεχομένου.
Οι IO Slaves κάνουν αυτή τη διάκριση. Όταν πρόκειται για
περιεχόμενο αναλαμβάνουν να το εξαγάγουν σε κάποια μορφή
που να μπορεί να προβληθεί από τον Konqueror. Π.χ. ο gzip
IO Slave παίρνει στην είσοδο ένα συμπιεσμένο αρχείο και
το αποσυμπιέζει στην έξοδο. Ενεργεί δηλαδή σαν φίλτρο.
Από εκεί και πέρα είναι θέμα του Konqueror (ή
οποιασδήποτε άλλης επφαρμογής χρησιμοποιεί τις υπηρεσίες
του IO Slave) να προβάλλει σωστά αυτό το περιεχόμενο.
Όταν πρόκειται για αρχεία, ο IO Slave απλά δίνει
πληροφορίες για αυτά τα αρχεία στην εφαρμογή, η οποία
πρέπει να ζητήσει μια συγκεκριμένη υπηρεσία (την get) για
να πάρει τα περιεχόμενά τους. Ο FTP ΙΟ Slave π.χ., δίνει
στον Konqueror μια λίστα με τα αρχεία ενός καταλόγου FTP
και ο Konqueror εμφανίζει τα αντίστοιχα εικονίδια στην
οθόνη.
Ας δούμε τι αντιμετωπίζεται κυρίως σαν αρχείο (ή
κατάλογος):
-
τα ...αρχεία και οι κατάλογοι
-
οι τοποθεσίες FTP
-
οι κατάλογοι HTTP που δεν έχουν index.html
-
οι συμπιεσμένες αρχειοθήκες .tar.gz και
.tar.bz2 (που αντιμετωπίζονται σαν κανονικοί
κατάλογοι)
-
δικτυακοί κατάλογοι NFS
-
πόροι SMB
-
λογαριασμοί αλληλογραφίας POP3 και IMAP4
-
Ηχητικά CD
-
Δισκέτες
Και τι αντιμετωπίζεται κυρίως σαν περιεχόμενο:
-
Ιστοσελίδες HTML (τοπικές ή μέσω HTTP)
-
Σελίδες man και info
-
Βοήθεια του KDE (που μπορεί να είναι XML ή HTML)
-
Πληροφορίες finger
-
Συμπιεσμένα αρχεία .gz και .bz2
Οι λίστες δεν είναι εξαντλητικές, ενώ η διάκριση δεν
είναι πάντοτε τόσο απόλυτα. Σε γενικές γραμμές, ο IO
slave αντιμετωπίζει ένα πρωτόκολλο σαν βασισμένο σε
αρχεία όταν σας δίνει στον Konqueror μια λίστα με
εικονίδια, και σαν βασισμένο σε περιεχόμενο όταν σας
δίνει HTML ή άλλη έξοδο.
Επόμενο Προηγούμενο Περιεχόμενα