Offline Web Applications



Σχετικά έγγραφα
Bringing the web offline

Ενημέρωση σε Windows 8.1 από τα Windows 8

Κεφάλαιο 3. Διδακτικοί Στόχοι

Η HTML 5 θα αλλάξει το Web?

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

uploaded on Foititikanea.gr

Πολιτική για τα cookie

Απαντήστε στις παρακάτω ερωτήσεις πολλαπλής επιλογής (μόνο μία ερώτηση είναι σωστή):

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

Linux Terminal Server Project

Cookies Γραμμή βοηθείας Ενημέρωση-Επαγρύπνηση Γραμμή παράνομου περιεχομένου

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

Σελίδες Βοήθειας - Υπηρεσία Ψηφιακών Πιστοποιητικών - Υπηρεσία Εγκατάσταση Πιστοποιητικών Αρχής Πιστοποίησης (ROOT CA)

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

6.2 Υπηρεσίες Διαδικτύου

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Υπηρεσία φωνητικής υποστήριξης των ιστοτόπων της ΕΡΤ Α.Ε.

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version

ΕΡΩΤΗΜΑΤΟΛOΓΙΟ ΣΧΟΛΕIΟΥ: ΕΓΧΕΙΡIΔΙΟ ΔΙΕΥΘΥΝΤΉ/ΝΤΡΙΑΣ. Doc.: CY7_CBA_ScQPrincipalManual.docx. Δημιουργήθηκε από: ETS, Core Α Contractor

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

F.A.Q. (ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ)

Εκκαθάριση cache του browser για τα Windows

Πολιτική για τα cookies

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Κατανεμημένα Συστήματα

ΠΟΛΙΤΙΚΗ ΑΣΦΑΛΕΙΑΣ. Ο χρόνος και ο τρόπος τήρησης των αρχείων περιγράφεται στη διδικασία Δ.550, Έλεγχος και τήρηση αρχείων και μητρώων.

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Ημερομηνία Παράδοσης: 4/4/2013

Κωδικός: ΠΠ Έκδοση: 1 Ημερομηνία: 28/05/2019 Σελίδα 1 από 7 ΠΟΛΙΤIΚΗ ΑΠΟΡΡΗΤΟΥ ΜΙΣΣΙΡΙΑΝ Α.Ε.

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

Οδηγίες Χρήσης EAP Controller Software

Θεσσαλονίκη Alert - Αναλυτική παρουσίαση εφαρμογής

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ

Προγραμματισμός Διαδικτύου

HTML HTML5...CSS

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

Εφαρμογές Πληροφορικής

Epsilon Net PYLON Platform

Συγκεντρωτικό Παράρτημα

ΟΛΟΚΛΗΡΩΜΕΝΟ ΣΥΣΤΗΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ E-AGIOGRAFIA

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

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

Αρχιτεκτονική Υπολογιστών

Εγχειρίδιο Χρήσης Απογραφικών Διδάσκοντος και Μαθήματος Ο.Π.Σ

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

XAMPP Apache MySQL PHP javascript xampp

Τηλεδιάσκεψη μέσω της υπηρεσίας e:presence. Σύνδεση στην Υπηρεσία e:presence

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Λιβανός Γιώργος Εξάμηνο 2017Β

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

Ethniki Cyprus Rate User Manual

Όταν αποθηκεύετε μία παρουσίαση, την ονομάζετε και καθορίζετε πού θα την αποθηκεύσετε

Μεταβίβαση Δικαιωμάτων Ενιαίας Ενίσχυσης Εγχειρίδιο Εφαρμογής (SUD)

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

, α/α: 1. Εξόδου» Παιδείας

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΓΙΑ ΣΥΣΤΗΜΑ ΚΡΑΤΗΣΕΩΝ ΕΡΓΑΣΤΗΡΙΩΝ ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΠΣ-ΕΔ/69

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

Ποια cookies χρησιμοποιούμε στον ιστότοπό μας;

AVS. Workshop. Εγχειρίδιο Χρήσης. Standard/Premium Edition AUTOMOTIVE

SingularLogic Σεπτέμβριος 2014

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής Πρόλογος... 11

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΑΝΑΠΑΡΑΓΩΓΗ ΜΑΘΗΣΙΑΚΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΟ ΦΩΤΟΔΕΝΤΡΟ ΜΑΘΗΣΙΑΚΑ ΑΝΤΙΚΕΙΜΕΝΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Οδηγίες χρήσης πλατφόρμας τηλεκατάρτισης

Οδηγός εκκαθάρισης ιστορικού cookies περιηγητή

A J A X AJAX Γιάννης Αρβανιτάκης

Μια καλή επιλογή θα ήταν (χωρίζοντας τις λέξεις με παύλα -) ή

Οδηγός χρήσης για Σύστημα κρατήσεων εργαστηριών

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΗ ΠΛΑΤΦΟΡΜΑ ΔΙΑΠΟΛΙΤΙΣΜΙΚΩΝ ΜΕΣΟΛΑΒΗΤΩΝ ΕΚΔΟΣΗ 1η

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

ΟΙ ΨΗΦΙΑΚΕΣ ΕΙΚΟΝΙΚΕΣ ΚΟΙΝΟΤΗΤΕΣ ΩΣ ΔΟΜΕΣ ΣΤΗΡΙΞΗΣ ΤΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΈΡΓΟΥ

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

ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

BlackBerry Desktop Software. Έκδοση: 7.1. Οδηγός χρήσης

Εισαγωγή στην Πληροφορική

ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ

Transcript:

Παν.Πελοποννήσου,ΤμήμαΕ&ΤΤηλεπικοινωνιών Πτυχιακήεργασία: OfflineWeb Applications Δημιουργώντας εφαρμογές ιστού για λειτουργίαχωρίςσύνδεση ΝίκοςΔημητρακόπουλος Επιβλέποντεςκαθηγητές: ΚώσταςΒασιλάκης,ΑλέξανδροςΚαλόξυλος

Πτυχιακήεργασίαμεθέμα: OFFLINEWEBAPPLICATIONS Δημιουργώνταςεφαρμογέςιστούγιαλειτουργίαχωρίςσύνδεση. ΔημητρακόπουλοςΝίκος Α.Μ.:2024200200010 email:nikosd@uop.gr CreativeCommons:Attribution Noncommercial ShareAlike3.0Greece http://creativecommons.org/licenses/by nc sa/3.0/gr/legalcode 1

1 Εισαγωγή... 5 2 Προσδιορισμόςτουπροβλήματος...6 3 Ξεπερνώνταςτουςπεριορισμούςτωνφυλλομετρητώνκαιτων παρόντωνπροτύπωνιστού...8 3.1 Οιπρώτεςπροσπάθειες... 8 3.2 Οιπρώτεςλειτουργικέςλύσεις...9 3.2.1 DojoOfflineToolkit... 9 3.2.1.1 Γενικά...9 3.2.1.2 Αποθηκευτικόςχώρος(μόνιμημνήμη)...10 3.2.1.2.1 Αποθήκευσηδεδομένωντηςεφαρμογής...10 3.2.1.2.2 Αποθήκευσηαρχείωντηςεφαρμογής...12 3.2.1.3 Άλλεςβοηθητικέςλειτουργίες...12 3.2.1.3.1 DojoxOfflineUI...12 3.2.1.3.2 DojoxOfflineSync...12 3.2.1.3.3 DojoxOffline(Networkstatusandchanges)...15 3.2.1.3.4 DojoxCryptographyκαιDojoxSQLEncrypt/Decrypt... 15 3.2.1.4 ΣυνοψίζονταςτακύριαχαρακτηριστικάτουDojoOfflineToolkit...16 3.2.2 GoogleGears... 17 3.2.2.1 Γενικά...17 3.2.2.2 Database...18 3.2.2.3 LocalServer...18 3.2.2.4 Άλλαβοηθητικάεργαλεία...18 3.2.2.4.1 WorkerPool...18 3.2.2.4.2 Desktop...19 3.3 Τομέλλον(HTML5)...19 3.3.1 ΓενικέςπληροφορίεςγιατηνεπερχόμενηέκδοσητηςHTML... 19 3.3.2 Ανάλυσητωνεπιμέρουςκομματιών... 19 3.3.2.1 ApplicationCache...19 3.3.2.2 Structuredclient sidestorage... 20 3.3.2.2.1 Name/valuepair... 20 3.3.2.2.2 Database... 20 3.3.2.3 Browserstate...21 3.3.3 Πρόοδοςτηςπροδιαγραφήςκαιυπάρχουσαυποστήριξη... 21 4 Προσθέτονταςσεμίαεφαρμογήπελάτη εξυπηρετητήτηδυνατότητα λειτουργίαςχωρίςσύνδεση... 23 4.1 Γνώσησυνδεσιμότηταςκαιδιαφοροποίησηήμητηςεφαρμογής αναλόγωςμετηνκατάστασηλειτουργίας...23 4.1.1 Γνώσησυνδεσιμότητας...23 4.1.2 Διαφοροποίησηήμητηςεφαρμογήςαναλόγωςμετηνκατάσταση λειτουργίας(modality)...25 4.1.2.1 Διακριτέςκαταστάσειςλειτουργίας... 25 4.1.2.2 Μηδιακριτέςκαταστάσειςλειτουργίας... 26 4.1.2.3 Υβριδικά... 27 2

4.2 Χαρακτηριστικάκαιλειτουργικότητατηςεφαρμογήςκατάτηνεργασία χωρίςσύνδεση... 28 4.2.1 Επιλέγονταςκαιαποκλείονταςχαρακτηριστικάκαιλειτουργίες... 28 4.2.2 Επιλέγονταςτααπαραίτηταδεδομένα... 29 4.3 Συγχρονισμόςδεδομένων... 30 4.3.1 Γενικά...30 4.3.2 Χειροκίνητοςσυγχρονισμός... 31 4.3.3 Αυτόματοςσυγχρονισμός...32 4.4 Ασφάλεια,ιδιωτικότητακαιπροστασίατωντοπικώνδεδομένων...33 4.4.1 Πολιτικήκοινήςπροέλευσης...34 4.4.2 Κρυπτογράφηση...35 4.4.3 Προνόμιαχρήσηςκαιιδιοκτησίααρχείων...36 4.4.4 Διάλογοςεξουσιοδότησηςαπότονχρήστη...36 4.4.5 Άλλεςχρήσιμεςπρακτικέςγιατηνδιασφάλισητωνδεδομένωντουχρήστη 37 5 Iris:Υλοποιώνταςμίαεφαρμογήιστούμεδυνατότηταλειτουργίας χωρίςσύνδεση... 39 5.1 Στόχοιτηςυλοποίησης... 39 5.2 Περιγραφήτωνβασικώνλειτουργιώντηςεφαρμογής... 39 5.3 Επιμέρουςσυνιστώσες... 39 5.4 Λεπτομέρειεςεξυπηρετητή... 40 5.5 Λεπτομέρειεςπελάτη...41 5.6 Σενάριολειτουργίας... 43 5.7 Συμπεράσματα... 50 6 Τεχνικάοφέληκαιπροεκτάσεις...51 6.1 Τεχνικάοφέλη/άλλεςπιθανέςχρήσεις... 51 6.2 Προεκτάσεις...52 6.2.1 Προτυποποίηση...52 6.2.2 Ανάπτυξηβιβλιοθηκώνκαιβοηθητικώνεργαλείων...52 6.2.3 Ενσωμάτωσησεserver sideframeworks...53 7 Χρησιμότητα&Συμπεράσματα... 55 7.1 Χρησιμότητα...55 7.2 Συμπεράσματα... 56 8 ΠαράρτημαΑ:Επιπλέονπληροφορίες... 57 8.1 ΛεπτομέρειεςτουDojoOfflineSync...57 8.1.1 DojoSyncActionLog/DojoSynconReplay...57 8.1.1.1 Γενικά... 57 8.1.1.2 OfflineUserActions(εκτελούμενεςενέργειεςκατάτηνλειτουργίαχωρίς σύνδεση)57 8.1.1.3 Επανεκτέλεσητωναποθηκευμένωνενεργειών... 59 8.1.2 DojoonSyncevents... 61 8.1.2.1 Οσυγχρονισμόςπέρααπότοαρχείοαποθηκευμένωνενεργειών...61 8.1.2.2 ΒασικάonSyncσυμβάντακαιχρησιμότητααυτών... 62 3

8.1.2.2.1 SyncDownloading... 62 8.1.2.2.2 SyncFinished... 63 8.1.2.3 ΌλαταδιαθέσιμαonSyncσυμβάντα... 63 8.2 SQLInjection... 64 8.2.1 Μηδιαφυγήχαρακτήρωνσεσυμβολοσειρές... 64 8.2.2 Μησωστόςχειρισμόςτύπωνδεδομένων... 65 8.2.3 ΑποτρέπονταςτιςεπιθέσειςSQLInjection... 66 9 ΠαράρτημαΒ:ΕπιπλέοντεκμηρίωσητηςεφαρμογήςIris... 67 9.1 Τααρχείατηςεφαρμογής... 67 9.2 Προαπαιτούμεναγιατηνλειτουργίατηςεφαρμογής... 70 9.3 Οδηγίεςεγκατάστασηςκαιχρήσηςτηςεφαρμογής... 70 10 ΠαράρτημαΓ:Συντομογραφίες... 73 11 ΠαράρτημαΔ:Αναφορές... 74 12 ΠαράρτημαΕ:Επιπλέονβιβλιογραφία... 79 12.1 ΗγλώσσαπρογραμματισμούJavaScript... 79 12.2 ΗγλώσσαπρογραμματισμούRubyκαιτοπεριβάλλονRubyOnRails 79 12.3 REST RepresentationalStateTransfer... 79 12.4 Τεχνικέςσυγχρονισμού... 79 12.5 Μηχανέςπεπερασμένωνκαταστάσεων... 80 4

1 Εισαγωγή Οπαγκόσμιοςιστός(worldwideweb)απότηνγέννησήτουτο1990μέχρισήμεραέχει εξελιχθεί σε τεράστιο βαθμό. Θα μπορούσαμε να πούμε για την ακρίβεια ότι έχει μεταλλαχθείκαιμικρήσχέσηέχειμεαυτόπουήταν.σεαυτόβοήθησαντόσοηπρόοδος στηνεπεξεργαστικήισχύτωνπροσωπικώνυπολογιστώνόσοκαιηεξέλιξητωνδικτύων. Έτσι,τοinternetκαιάρα,μαζίμεαυτό,αυτόπουαποκαλούμε παγκόσμιοςιστός,από ένα μέσο ανταλλαγής επιστημονικών κυρίως πληροφοριών, εξελίχθηκε σε ένα χώρο επικοινωνίας και πληροφόρησης και ακόμα πιο πρόσφατα, σε αυτά προστέθηκε η έννοιατων«εφαρμογώνιστού»(webapplications). Όμως, τα παλαιά πλέον πρότυπα, που αποτελούν την βάση του web, καθώς και οι φυλομετρητές(browsers)θέτουνσοβαρούςπεριορισμούςστοτίμπορούννακάνουνοι εφαρμογές αυτές. Ένα από τα πιο δύσκολα ίσως προβλήματα, τουλάχιστον μέχρι σήμερα, είναι η δυνατότητα λειτουργίας των εφαρμογών, έστω και με περιορισμούς, ακόμα και όταν δεν υπάρχει σύνδεση. Για παράδειγμα, να μπορεί κάποιος να δει τα μηνύματαηλεκτρονικούταχυδρομείουμέσααπόκάποιαεφαρμογήwebmailακόμακαι όταν δεν έχει σύνδεση στο internet δηλαδή ακριβώς όπως συμβαίνει και με τα συμβατικά προγράμματα ηλεκτρονικού ταχυδρομείου που εγκαθίστανται τοπικά. Η υπέρβαση αυτού του προβλήματος είναι απαραίτητη αν θέλουμε να μπορούμε να μιλάμε για εφαρμογές ιστού που θα μπορούν εν δυνάμει να αντικαταστήσουν τις παραδοσιακές,«τοπικές»εφαρμογές. Τοθέμααυτόείναιεπίκαιροκαιπολλοίοργανισμοίκαιεταιρίεςέχουνπροσπαθήσεινα το λύσουν με διαφορετικά αποτελέσματα ο καθένας. Στην μελέτη που ακολουθεί παρουσιάζονται κάποιες από αυτές τις λύσεις, αναλύονται τα προβλήματα που ανακύπτουν κατά τον σχεδιασμό και την υλοποίηση μίας τέτοιας εφαρμογής ανεξάρτητως τεχνολογίας και στο τέλος γίνεται μία σύντομη παρουσίαση της demo εφαρμογής που υλοποιήθηκε στα πλαίσια της μελέτης ως απόδειξη ότι κάτι τέτοιο τελικά,είναιπρακτικάυλοποιήσιμο. 5

2 Προσδιορισμόςτουπροβλήματος Για να προσδιορίσουμε το πρόβλημα θα πρέπει πρώτα να καταλάβουμε τι θέλουμε να επιτύχουμε. Αυτό μπορεί να επιτευχθεί μέσα από παρατήρηση αντίστοιχων περιπτώσεων σε τομείς εκτός του web. Ας πάρουμε για παράδειγμα το κινητό τηλέφωνο. Η βασική λειτουργία του είναι η δυνατότητα πραγματοποίησης και λήψης κλήσεωνκαιαςδεχτούμεκαιηαποστολή/λήψημηνυμάτων.είναιπροφανές,ότιγιανα είναιδυνατόνναλειτουργήσουναυτάχρειάζεταιεπικοινωνίαμετοδίκτυοτουπαρόχου, δηλαδή συνδεσιμότητα. Έτσι, στην περιορισμένη αυτή περίπτωση που το κινητό δεν παρέχει κάποια επιπλέον λειτουργικότητα πέρα από τις κλήσεις και τα μηνύματα, βλέπουμε ότι η συσκευή είναι απλά μία«προέκταση» του τηλεπικοινωνιακού δικτύου. Όμως,ξέρουμεαπότηνκαθημερινήεπαφήμαςμαζίτου,ότιπρακτικά(καιόσοπερνάει ακόμα ο καιρός ακόμα περισσότερο) δεν είναι έτσι. Το κινητό, από ένας απλός συνδετικός κρίκος ανάμεσα στον χρήστη και στο δίκτυο, έχει εξελιχθεί σε μία σχεδόν αυτόνομησυσκευήπουέχεικαιτηνδυνατότηταγιακλήσειςκαιαποστολήμηνυμάτων. Πέραναυτών,ακόμακαιοιπιοαπλέςσυσκευέςέχουν«εφαρμογές»όπωςτηλεφωνικός κατάλογος, ιστορικό κλήσεων και διαχείριση μηνυμάτων που λειτουργούν τόσο με σύνδεση όσο και χωρίς και όσο περνάει ο καιρός βλέπουμε όλο και περισσότερες δυνατότητες να προστίθενται και πρακτικά το κινητό να «αποδεσμεύεται» όλο και περισσότερο από το τηλεπικοινωνιακό δίκτυο, διατηρώντας φυσικά τον βασικό του στόχο που δεν είναι άλλος από την επικοινωνία μέσω της χρήσης του τηλεπικοινωνιακούδικτύου. Τώρα, μπορούμε να κάνουμε έναν παραλληλισμό με τις εφαρμογές ιστού. Ας υποθέσουμε ότι ο τηλεπικοινωνιακός πάροχος αντιστοιχεί με τον εξυπηρετητή (web server)τηςδικτυακήςεφαρμογής(ουσιαστικάτονπάροχοτηςδικτυακήςεφαρμογής), ησυσκευήμετονφυλλομετρητήκαιτοδίκτυοείναιπαρόμοιοκαιστιςδύοπεριπτώσεις. Αυτόπουκάνειτηδιαφοράανάμεσασταδύοαυτάπαραδείγματαείναιοιδυνατότητες της συσκευής που δεν υπάρχουν στον φυλλομετρητή. Πιο συγκεκριμένα είναι: α) η δυνατότητα αποθήκευσης δεδομένων τοπικά και β) το απαραίτητο λογισμικό που απαιτείται ώστε να λειτουργήσει η συσκευή αυτόνομα. Φυσικά υπάρχουν πολλές απλουστεύσειςμέσαστονπαραλληλισμόαυτό,όπωςγιαπαράδειγματογεγονόςότιτο κινητό επικοινωνεί με έναν και μόνο τηλεπικοινωνιακό πάροχο (που είναι ο ίδιος που ελέγχει και το δίκτυο) ενώ ο φυλλομετρητής έχει άπειρες εν δυνάμει συνδέσεις με διαφορετικές σελίδες/εφαρμογές. Παρ όλες όμως τις διαφορές αυτές μπορούμε να κρατήσουμε τα συμπεράσματα που εξάγαμε και να τα τροποποιήσουμε κατάλληλα ώστεναταιριάζουνστιςδικέςμαςανάγκες. Θα μπορούσαμε λοιπόν να πούμε ότι αν θέλουμε μία εφαρμογή ιστού να μπορεί να λειτουργήσει έστω και εν μέρει αυτόνομα, δηλαδή χωρίς επικοινωνία με τον εξυπηρετητή,χρειαζόμαστεδύοκυρίωςπράγματαστονφυλλομετρητή: 1. Αποθήκευση του κώδικα και των διαφόρων απαιτούμενων αρχείων της εφαρμογής τοπικά ώστε να μπορεί να γίνει εκκίνηση της εφαρμογής χωρίς σύνδεση. 6

2. Τοπικήαποθήκευσητωνδεδομένωντηςεφαρμογής. Αυτές οι δύο προϋποθέσεις, είναι οι ελάχιστες προδιαγραφές που χρειαζόμαστε και φυσικά από μόνες τους δεν αρκούν για την υλοποίηση της λειτουργικότητας που επιθυμούμεναεπιτύχουμε.αφούαυτάταδύοεπιτευχθούνχρειάζεταιναμελετηθείένα μεγάλοπλήθοςυποπροβλημάτων,τοοποίοαποτελείταιμεταξύάλλωναπό: Τονκαθορισμότωνδυνατώνκαταστάσεωντηςεφαρμογής. Τονπροσδιορισμότωνμεταβάσεωνμεταξύαυτώντωνκαταστάσεων. Τον σχεδιασμό και υλοποίηση των μεθόδων συγχρονισμού των δεδομένων μεταξύτηςεφαρμογήςπουεκτελείταιστονφυλλομετρητήκαιτουεξυπηρετητή (χρονολόγηση συγχρονισμός). Τηνπροστασίατωνευαίσθητωνκαιπροσωπικώνδεδομένωντουχρήστη. Πρακτικά,βλέπουμεότιτομετωπικό(front end)κομμάτιτηςεφαρμογής,δηλαδήαυτό πουεμφανίζεταιστονφυλλομετρητήκαιχρησιμοποιείκάποιαγλώσσασήμανσηςόπως ηhtmlκαι προαιρετικά φύλλαστυλ(css)καιjavascript,απόαπλήπροέκτασητου λογισμικού που εκτελείται αποκλειστικά στον εξυπηρετητή, αρχίζει να διαχωρίζεται εμφανώς και να αποκτά λειτουργικότητα και δική του υπόσταση. Από μία απλοποιημένη μορφή εφαρμογής πελάτη εξυπηρετητή, γίνεται μία σχεδόν κατανεμημένηεφαρμογήμεόλεςτιςαπαιτήσειςκαιδυσκολίεςπουαυτόφέρνει. 7

3 Ξεπερνώντας τους περιορισμούς των φυλλομετρητών και τωνπαρόντωνπροτύπωνιστού 3.1 Οιπρώτεςπροσπάθειες Όπως αναφέρθηκε και προηγουμένως, το πρώτο πρόβλημα που πρέπει να επιλυθεί είναιημόνιμηαποθήκευσητωνδεδομένωντηςεφαρμογήςαπότονφυλλομετρητή.οι πρώτες προσπάθειες που έγιναν για την αντιμετώπιση αυτού του προβλήματος ήταν αρκετά περιοριστικές και ελάχιστα λειτουργικές. Ανάμεσά τους ήταν η χρήση του χώρου που επιτρέπει ο φυλλομετρητής για τα cookies και η μνήμη cache. Είναι προφανές γιατί καμία από τις δύο αυτές προτάσεις δεν μπορούσε να έχει πρακτική εφαρμογή: και οι δύο αυτοί χώροι αποθήκευσης δεδομένων είναι προσωρινοί και πολλές φορές μη ελεγχόμενοι από τον χρήστη. Επιπλέον, το μέγεθος που επιτρέπεται για τα cookies είναι τουλάχιστον ανεπαρκές για οποιαδήποτε εφαρμογή (4 KB ανά cookie). Οι προτάσεις που ακολούθησαν ήταν αρκετά πιο λειτουργικές αλλά και πάλι μη πλήρεις. Η πρώτη ήταν η χρήση της τεχνολογίας Flash της εταιρίας Adobe, μέσω της οποίαςοιεφαρμογέςείχαντηνδυνατότηταμόνιμηςαποθήκευσηςδεδομένων[adobe 1]. Στα θετικά της εν λόγω λύσης ήταν η μεγάλη βάση χρηστών που είχαν εγκατεστημένο το απαραίτητο λογισμικό [ADOBE 2]. Όμως είχε και αυτή μερικά σημαντικάπροβλήματα.τοκυριότεροείναιότιδενείναι«ανοιχτή»ήπροτυποποιημένη τεχνολογία όπως η HTML και η JavaScript με αποτέλεσμα να μην έχει την πλήρη αποδοχήτωνπρογραμματιστών.στηνπραγματικότητα,ηδυνατότηταπουεισήγαγετο Adobe Flash υπήρχε για κάθε τεχνολογία η οποία για τη λειτουργία της έπρεπε να εγκαταστήσει κάποιο λογισμικό επέκτασης του φυλλομετρητή, όπως κάποιο plugin, ActiveX control κ.τ.λ., αλλά ακριβώς η έλλειψη προτυποποίησης και ο «κλειστός» χαρακτήρας των λύσεων δεν επέτρεψαν την καθολική υιοθέτησή τους. Σαν συνέχεια του Adobe Flash και της λύσης αυτής είναι το Adobe Air[ADOBE 3],[WIKIPEDIA 1] το οποίο παρέχει επιπλέον μηχανισμούς αποθήκευσης δεδομένων τοπικά, όπως χρησιμοποιώντας βάση δεδομένων και XML αρχεία. Το Adobe Air, σε αντίθεση με το Flash που είναι πρόσθετο λογισμικό για τους φυλλομετρητές, είναι ένα περιβάλλον εκτέλεσης εφαρμογών που χρησιμοποιούν ανοιχτές τεχνολογίες ιστού (HTML, JavaScript, CSS) και Flash, εκτός όμως των πλαισίων του φυλλομετρητή, και γι αυτό δενλαμβάνεταιυπ'όψινσταπλαίσιατηςπαρούσαςμελέτης.αντίστοιχητεχνολογίατου AdobeAirμπορείναθεωρηθείκαιτοMozillaPrism[MOZ 1],[MOZ 2],[WIKIPEDIA 1],. Ηδεύτερη«μεταβατική»προσέγγισηπαρουσιάστηκεστηνέκδοση5τουφυλλομετρητή Microsoft Internet Explorer. Πιο συγκεκριμένα ο Internet Explorer παρέχει την δυνατότητα χρησιμοποίησης ενός μόνιμου αποθηκευτικού χώρου μέσω του«userdata Behavior» [MCSFT 1]. Το userdata Behavior είναι ένα αντικείμενο το οποίο παρέχει μεθόδουςγιααποθήκευσηκαιανάγνωσηδεδομένωνμετηνμορφήκλειδιού/τιμής.ενώ σαν τεχνική μπορεί να θεωρηθεί ικανοποιητική μέχρι ένα βαθμό, το προφανές 8

μειονέκτημα είναι ότι η προσέγγιση αυτή λειτουργεί μόνο στον συγκεκριμένο φυλλομετρητή,αφούωςτεχνολογίαδενείναιανοιχτήκαιέτσιδενυλοποιήθηκεποτέσε άλλους φυλλομετρητές. Σε πρακτικό επίπεδο, αυτό σημαίνει ότι είναι αδύνατη η δημιουργίαμίαςεφαρμογήςευρείαςχρήσηςσεπραγματικέςσυνθήκες. Κάτι αντίστοιχο του userdata Behavior του Internet Explorer είναι το DOM Storage στον Mozilla Firefox [MOZ 3] και παρουσιάστηκε στην δεύτερη έκδοση του φυλλομετρητή αυτού. Η κυριότερη διαφορά με την υλοποίηση του Internet Explorer είναιότιτοdomstorageείναιβασισμένοστηνwhatwgπροδιαγραφήγιατηνhtml 5[WHATWG 3]τηνοποίακαιθαδούμεσεεπόμενηενότητα.Παρ ότικαιαυτήηλύση, όπως και το userdata Behavior, δεν μπορεί ως και σήμερα να θεωρηθεί λειτουργική, αφού υποστηρίζεται από έναν μόνο φυλλομετρητή, είναι σίγουρα θετικό το ότι βασίζεταισεέναανοιχτόπρότυπο,πουείναιηhtml5.αυτόσημαίνειότιπιθανότατα πολύ σύντομα θα υποστηριχτεί και από άλλους φυλλομετρητές και τότε θα είναι μία πλήρωςλειτουργικήλύση. 3.2 Οιπρώτεςλειτουργικέςλύσεις Κάπου εκεί άρχισαν να εμφανίζονται οι πρώτες πραγματικά λειτουργικές λύσεις. Την αρχή την έκανε το Dojo Toolkit [DOJO 1] παρουσιάζοντας την πρώτη δοκιμαστική έκδοση του Dojo Offline [DOJO 2] και στην συνέχεια ακολούθησε η παρουσίαση του Gears από την Google [GOOG 1] (που βρίσκεται ακόμα σε δοκιμαστική έκδοση) το οποίοκαιτελικάενσωματώθηκεστηνπρώτησταθερήέκδοσητουdojooffline. 3.2.1 DojoOfflineToolkit 3.2.1.1 Γενικά Το Dojo Toolkit είναι μία ανοιχτού κώδικα προγραμματιστική βιβλιοθήκη που επεκτείνει τη γλώσσα JavaScript με λειτουργικότητα που επιτρέπει την ανάπτυξη εφαρμογώνιστού.τοdojotoolkitδίνεικύριαέμφασησεεργαλείασχετικάμετεχνικές AJAX, με την αλληλεπίδραση και την επεξεργασία του μοντέλου αντικειμένων(dom) του φυλλομετρητή καθώς και με θέματα πολυγλωσσικότητας και προσβασιμότητας. Πέραν των βασικών αυτών συνιστωσών, ένα τμήμα του Dojo Toolkit, το Dojox, αποτελείται από πειραματικές βιβλιοθήκες που μπορεί να έχουν να κάνουν από τρισδιάσταταγραφικάμέχρικαικρυπτογραφίαδεδομένων.σεαυτότοτμήμαξεκίνησε να υλοποιείται αρχικά η πρώτη έκδοση του Dojo Offline που ως σκοπό είχε να αποτελέσει μία ολοκληρωμένη λύση που θα επέτρεπε στους προγραμματιστές να σχεδιάσουνκαιναυλοποιήσουνεφαρμογέςιστούοιοποίεςθαμπορούνναλειτουργούν και χωρίς σύνδεση. Παρ ότι οι λεπτομέρειες υλοποίησης έχουν περάσει από διάφορα στάδιαεξέλιξηςαπότιςπρώτεςεκδόσειςμέχρικαισήμερα,ηβασικήαρχιτεκτονικήτου εξακολουθεί να παραμένει η ίδια. Σημαντικό ρόλο στην εξέλιξή του και τελικά στην σημερινήτουμορφήέπαιξεηέλευσητουgooglegears,τοοποίοκαιθααναλυθείστην συνέχεια. Μία σημαντική διαφορά σε σχέση με τις προηγούμενες ημιτελείς λύσεις είναι ότι το Dojo Offline προσπάθησε να δώσει μία ολοκληρωμένη λύση που θα επέλυε όλα τα θεμελιώδηπροβλήματαταοποίασχετίζονταιμετηνανάπτυξηεφαρμογώνιστούικανών 9

να λειτουργήσουν χωρίς σύνδεση, και όχι μόνο με ένα ή μερικά εξ αυτών. Σε αυτό συνέβαλεκαθοριστικάηυπάρχουσαβάσηκώδικαπουπροϋπήρχεστοdojoκαθώςκαι η εμπειρία της ομάδας ανάπτυξής του σε JavaScript που είναι συμβατή με όλους τους φυλλομετρητές. Έτσι, στο Dojo Offline περιέχεται ένα πλήθος βοηθητικών βιβλιοθηκών σχετικά με τη γνώση συνδεσιμότητας από μέρους της εφαρμογής, γραφικά βοηθήματα (widgets), κρυπτογραφία καθώς και άλλων που βοηθάνε σημαντικάκατάτηνανάπτυξημιαςεφαρμογής.μίαακόμαμεγάληςσημασίαςδιαφορά, σε σχέση με τις προηγούμενες λύσεις, είναι ότι το Dojo Offline ήταν το πρώτο που πέραντηςαποθήκευσηςδεδομένωνπουπαρείχε,επέτρεπεκαιτηνμόνιμηαποθήκευση τωνπόρων,δηλαδήτωναπαραίτητωναρχείων,τηςεφαρμογής. Όπωςθαδούμεκαιστησυνέχεια,τοDojoOfflineλειτουργείκατάκύριολόγωωςμέταβιβλιοθήκη. Αυτό σημαίνει ότι στο παρασκήνιο χρησιμοποιεί οποιαδήποτε τεχνολογία υποστηρίζεται από τον φυλλομετρητή που εκτελείται για την επίτευξη της επιθυμητής λειτουργικότητας. Αυτό το χαρακτηριστικό μπορεί να συμπεριληφθεί στα κύρια πλεονεκτήματάτου,αφού,θεωρητικάτουλάχιστον,τοκάνεισυμβατόμεόλουςσχεδόν τους φυλλομετρητές. Τέλος, το γεγονός ότι είναι γραμμένο σε ένα ανοιχτό πρότυπο όπωςηjavascriptκαιότιόλοτοapiτουείναιεπίσηςσεαυτήτηγλώσσα(ακόμακαιαν εσωτερικά μπορεί να χρησιμοποιεί άλλες, κλειστές τεχνολογίες) του δίνουν ένα επιπλέον πλεονέκτημα σε σχέση με λύσεις όπως το Adobe Flash ή άλλες τεχνολογίες πουανήκουναποκλειστικάσειδιωτικούςοργανισμούςκαιεξελίσσονταιαπόαυτούς. Τα κύρια κομμάτια του Dojo Offline και των υπόλοιπων εργαλείων του Dojo Toolkit, που είναι σχετικά με την δυνατότητα ανάπτυξης εφαρμογών χωρίς σύνδεση, είναι τα εξής: DojoOffline o o o Files Sync UI DojoStorageκαιDojoSQL DojoCryptography 3.2.1.2 Αποθηκευτικόςχώρος(μόνιμημνήμη) 3.2.1.2.1 Αποθήκευσηδεδομένωντηςεφαρμογής Το Dojo Storage και το Dojo SQL είναι οι ενότητες που χρησιμοποιούνται για την αποθήκευσητωνδεδομένωντηςεφαρμογής.οικύριεςδιαφορέςμεταξύτωνδύοαυτών πακέτων είναι ο τρόπος που παρέχεται στους προγραμματιστές για εγγραφή και προσπέλαση των δεδομένων αλλά και ο τρόπος που το Dojo αποθηκεύει τα δεδομένα αυτά. Χρησιμοποιώντας το Dojo Storage ο προγραμματιστής έχει τη δυνατότητα να αποθηκεύσειδεδομέναωςσυνδυασμόκλειδιού τιμήςχρησιμοποιώνταςσυσχετιστικούς πίνακες (associative arrays) [WIKIPEDIA 3], [WIKIPEDIA 4] που υποστηρίζει η 10

JavaScriptκαιείναιόμοιαμεπίνακεςκατακερματισμού(hashtables).ΤοDojoSQLαπό την άλλη δίνει την δυνατότητα προσπέλασης και εγγραφής δεδομένων χρησιμοποιώντας εντολές SQL. Και οι δύο αυτές ενότητες δεν είναι τίποτα άλλο από βοηθητικές βιβλιοθήκες που βασίζονται σε υπάρχουσες λύσεις και προσφέρουν στον προγραμματιστή έναν ενιαίο και πολύ πιο αφαιρετικό και αποδοτικό τρόπο χρησιμοποίησης των λύσεων αυτών. Πιο συγκεκριμένα, το Storage [DOJO 3], που η υλοποίησή του προηγήθηκε του SQL, υποστηρίζει στην έκδοση 1.1 τους εξής μηχανισμούςαποθήκευσης: AdobeAirDB AdobeAirEncryptedLocalStorage AdobeAirFileStorage AdobeFlashStorage GoogleGearsStorage Firefox2DOMStorage Είναισημαντικόναεπισημανθείότιοπρογραμματιστήςχρησιμοποιείένακαιμοναδικό APIγιατηνμόνιμηαποθήκευσηδεδομένωνμέσωτουDojoStorage.Ότανηεφαρμογή θαχρειαστείνααποκτήσειπρόσβασηστονχώροαποθήκευσηςτουdojostorageκατά τονχρόνοεκτέλεσήςτης,τοstorageείναιυπεύθυνοναδιαλέξειτονκατάλληλοτρόπο αποθήκευσης, εφόσον βεβαίως πληρούνται οι κατάλληλες προϋποθέσεις. Για παράδειγμα,εάνοφυλλομετρητήςστονοποίονεκτελείταιηεφαρμογήείναιοfirefox, χρησιμοποιεί την εγγενή λύση που είδαμε προηγουμένως ότι παρέχεται από αυτόν, αλλιώςεάνοχρήστηςέχειεγκατεστημένοτοflashχρησιμοποιείαυτόκ.ο.κ.αυτόείναι κάτι αρκετά σημαντικό πουμπορούμε να το καταλάβουμεκαλύτερα αν σκεφτούμε το εξής:ανηδιείσδυσητουadobeflashείναιγιαπαράδειγμα60%τωνχρηστώνκαιτου Google Gears 10%, τότε χρησιμοποιώντας το Dojo Storage σαν «ομπρέλα» για την μόνιμη αποθήκευση δεδομένων στον φυλλομετρητή ενός χρήστη, μπορούμε να καλύψουμετο70%τωνχρηστών(υποθέτονταςότιοκάθεχρήστηςέχειεγκατεστημένη μόνο μία τεχνολογία) και μάλιστα χωρίς να χρειάζεται να γίνουν διαφορετικές υλοποιήσειςγιατηνκάθεπερίπτωση. ΠέραντουDojoStorageυπάρχειπλέον(απότηνέκδοση0.9καιύστερα)ηδυνατότητα χρησιμοποίησης μίας σχεσιακής βάσης δεδομένων για την τοπική αποθήκευση δεδομένων μέσω του Dojox SQL. Το Dojox SQL χρησιμοποιεί στο παρασκήνιο το Google Gears ενώ μπορεί μελλοντικά να υποστηρίζει διαφορετικούς μηχανισμούς αποθήκευσης,όπωςγιαπαράδειγμαηhtml5,σεαντιστοιχίαμετοdojostorageκαι τους πολλαπλούς μηχανισμούς αποθήκευσης που υποστηρίζει. Αξίζει να επισημανθεί εδώ ότι αν η εφαρμογή καλέσει το Dojo Storage και αυτό αναγνωρίσει ότι υπάρχει εγκατεστημένο το Google Gears θα χρησιμοποιήσει τελικά αυτό μέσω του Dojo SQL χωρίςναείναιεμφανέςαυτόγιατονπρογραμματιστή. 11

3.2.1.2.2 Αποθήκευσηαρχείωντηςεφαρμογής Όπως αναφέρθηκε και προηγουμένως το Dojo Offline δίνει την δυνατότητα να αποθηκευτούνκαιτααρχείατηςεφαρμογήςπέρααπόταδεδομένατης.αυτόσημαίνει ότι εφόσον έχουν αποθηκευτεί αυτά, η εφαρμογή μπορεί να φορτωθεί στον φυλλομετρητή όταν δεν υπάρχει σύνδεση, ακόμα και αν τα απαραίτητα αρχεία δεν υπάρχουν στη μνήμη cache. Το κομμάτι που είναι υπεύθυνο για αυτή την λειτουργία είναι το Dojo Offline Files [DOJO 4] και το οποίο έχει βοηθητικές συναρτήσεις για αυτοματοποίηση της διαδικασίας αυτής (δηλαδή να προσδιορίζονται αυτόματα τα αρχεία που πρέπει να αποθηκευτούν τοπικά) αλλά υποστηρίζει παράλληλα και χειροκίνητη αποθήκευση. Στις πρώτες εκδόσεις του Dojo Offline, αυτή η λειτουργία υποστηριζόταν από ένα plugin που έπρεπε να εγκατασταθεί στον φυλλομετρητή του χρήστη. Από την έκδοση 0.9 του Dojo Toolkit η λειτουργία αυτή παρέχεται στο παρασκήνιομέσωτουgooglegears. 3.2.1.3 Άλλεςβοηθητικέςλειτουργίες 3.2.1.3.1 DojoxOfflineUI Τοκύριομέροςαυτούτουκομματιούείναιτοofflinewidget.Τοofflinewidgetείναιένα γραφικόκυρίωςβοήθημαπουωςσκοπόέχειναπροσφέρει,μεένανεύκολοτρόπο(για τον προγραμματιστή), ένα φιλικό γραφικό περιβάλλον στον τελικό χρήστη όσο αναφορά την λειτουργικότητα χωρίς σύνδεση της εφαρμογής. Ενημερώνει τον χρήστη για την κατάσταση της εφαρμογής (λειτουργία με ή χωρίς σύνδεση), εμφανίζει μηνύματασχετικάμετονσυγχρονισμότηςεφαρμογήςκαιεπιπλέονπροσφέρειοδηγίες σχετικά με το πως μπορεί να χρησιμοποιηθεί η εφαρμογή χωρίς σύνδεση. Φυσικά, οποιαδήποτεαπόαυτέςτιςλειτουργίες(ήκαιόλες)μπορείνααλλαχθείκατάβούληση ή και να καταργηθεί εξ ολοκλήρου. Σκοπός όμως αυτού του βοηθήματος είναι να παρέχει μία «βάση» με έτοιμες λύσεις ώστε να μην χρειάζεται κάθε φορά ο προγραμματιστήςναταυλοποιήσειαπότηναρχή[dojo 5]. 3.2.1.3.2 DojoxOfflineSync Ο συγχρονισμός δεδομένων μίας εφαρμογής είναι από τα πιο δύσκολα κομμάτια μίας εφαρμογήςκαιπολλέςφορέςηεπιλογήτηςμεθοδολογίαςπουτελικάθαακολουθηθεί σχεδιάζεταιαποκλειστικάμεβάσητησυγκεκριμένηεφαρμογή.όμως,υπάρχουνφορές όπουμίααπλή,γενικήμεθοδολογίαείναιπρακτικάχρήσιμηκαιαρκετήγιανακαλύψει τις ανάγκες. Με αυτό το σκεπτικό οι δημιουργοί του Dojo Offline σχεδιάσανε και υλοποιήσανε έναν απλό, εύχρηστο και τυποποιημένο τρόπο για τον συγχρονισμό των τοπικών δεδομένων με τον απομακρυσμένο εξυπηρετητή όταν οι ανάγκες της εφαρμογήςπουυλοποιείταικαλύπτονταιαπόαυτόν. ΤοπρώτοπράγμαπουπρέπεινααναφερθείείναιότιτοDojoxOfflineSync[DOJO 6] δουλεύει σε συνεργασία με το Dojox Offline UI, που αναφέρθηκε προηγουμένως, εκτελώνταςέναμεγάλομέροςτηςδιαδικασίαςενημέρωσηςτουχρήστησχετικάμετην πρόοδο του συγχρονισμού. Έτσι, εάν γίνει χρήση του Dojox Offline UI (ακόμα και με τροποποιήσεις) και παράλληλα του Dojox Offline Sync, υπάρχει αυτομάτως και ένα γραφικόπεριβάλλονγιααυτήτηλειτουργία. 12

Με τη χρήση του Dojo Sync, έχουμε αυτόματο συγχρονισμό, κάτι που σημαίνει ότι ο χρήστηςδενχρειάζεταινακάνεικάτιγιααυτό.τοdojosyncενεργοποιείταιαυτομάτως και ξεκινάει τον συγχρονισμό όταν η εφαρμογή εκκινήσει για πρώτη φορά και έχει επικοινωνία με τον εξυπηρετητή, καθώς επίσης και όταν είναι σε κατάσταση λειτουργίαςχωρίςσύνδεσηκαιτοdojoκαταλάβειότιησύνδεσηεπανήλθε. Ότανξεκινάειοσυγχρονισμός,τρίαπράγματασυμβαίνουνμετηνακόλουθησειρά: 1. Γίνεται λήψη των αρχείων της εφαρμογής (όπως αυτά ορίζονται στο Dojox OfflineFiles). 2. Γίνεται αποστολή των δεδομένων που έχουν αλλάξει τοπικά στην εφαρμογή, όσο αυτή λειτουργούσε χωρίς σύνδεση, στον κεντρικό, απομακρυσμένο εξυπηρετητή. 3. Γίνεται λήψη των καινούριων δεδομένων της εφαρμογής ώστε να είναι προσβάσιματοπικά. Ας δούμε πως παρουσιάζεται στον χρήστη αυτή η διαδικασία εάν χρησιμοποιηθεί το DojoOfflineUIπουαναφέρθηκεπροηγουμένως: Βήμα1:ΤοDojoSync κατεβάζειτααρχείατης εφαρμογής. Βήμα2:Γίνεται αποστολήτωννέων δεδομένωνστον εξυπηρετητή. Βήμα3:Γίνεταιλήψη τωννέωνδεδομένωναπό τονεξυπηρετητή. Βήμα4α:Επιτυχής ολοκλήρωσητου συγχρονισμού. Βήμα4β:Ανεπιτυχής προσπάθεια συγχρονισμού. 13

Ενημέρωσητουχρήστηγιατοπρόβλημαπουδημιουργήθηκεκατάτηνπροσπάθεια συγχρονισμού(οσύνδεσμος«details»τουβήματος4β). Και σε προγραμματιστικό επίπεδο, πέραν του γραφικού περιβάλλοντος για την ενημέρωση του χρήστη, το Dojo Sync αυτοματοποιεί το μεγαλύτερο μέρος της διαδικασίας συγχρονισμού και παρέχει συγκεκριμένα σημεία που μπορεί ο προγραμματιστής να επέμβει ώστε να προσθέσει λειτουργικότητα ή να προσαρμόσει τηνυπάρχουσα. Πιο συγκεκριμένα το Dojo Sync υλοποιεί μία «ουρά» ενεργειών που πρέπει να εκτελεστούν κατά τη μετάβαση από κατάσταση λειτουργίας χωρίς σύνδεση σε κατάσταση λειτουργίας με σύνδεση. Έτσι αυτό που πρέπει να προσδιοριστεί κατά την ανάπτυξη της εφαρμογής είναι το πότε μία ενέργεια πρέπει να αποθηκευτεί στην «ουρά» με τις ενέργειες εν αναμονή καθώς και τις απαραίτητες συνοδευτικές λεπτομέρειες και δεδομένα αυτής. Φυσικά, πρέπει να προσδιοριστεί και το τι θα συμβαίνει όταν η ενέργεια αυτή πρέπει να εκτελεστεί (δηλαδή κατά τη διάρκεια του βήματος 2, που είναι η αποστολή των νέων δεδομένων στον κεντρικό εξυπηρετητή). Αυτές είναι οι ελάχιστες ενέργειες που απαιτούνται από την πλευρά του προγραμματιστή εάν επιθυμεί να υλοποιήσει κάποιας μορφή συγχρονισμό δεδομένων γιαμίαεφαρμογή.παράλληλα,υπάρχειδυνατότηταναχρησιμοποιηθούνκαιάλλεςπιο εξειδικευμένεςλειτουργίεςτουdojosyncήκαιακόμαναμηνχρησιμοποιηθείκαθόλου ηπαρεχόμενηυλοποίησηκαιναγίνειμίαδιαφορετικήπουθαείναιεξειδικευμένηγιατη συγκεκριμένη εφαρμογή (όπως για παράδειγμα στην εφαρμογή που υλοποιήθηκε στα πλαίσιατηςεργασίαςαυτήςγιαλόγουςεπίδειξης).περισσότερεςλεπτομέρειεςσχετικά μετοdojosyncμπορούνναβρεθούνστοπαράρτημα. 14

3.2.1.3.3 DojoxOffline(Networkstatusandchanges) ΣτοπαρασκήνιοτοDojoOfflineελέγχειδιαρκώςκατάπόσουπάρχεισύνδεσηήόχιμε τον απομακρυσμένο εξυπηρετητή. Έτσι, εάν για κάποιο λόγο η επικοινωνία με τον εξυπηρετητήτηςεφαρμογήςχαθείήαποκατασταθεί,τοdojoofflineθατοαναγνωρίσει αυτό και θα ενημερώσει αυτόματα την τοπική εφαρμογή έτσι ώστε να εκτελεστούν οι κατάλληλεςενέργειεςπουαπαιτούνταιστηνεκάστοτεπερίπτωση.μεαυτόντοντρόπο μπορούν για παράδειγμα να ενεργοποιηθούν / απενεργοποιηθούν κάποια στοιχεία ελέγχου, να αλλάξει ο τρόπος αποθήκευσης νέων δεδομένων που παράγονται από τον χρήστη(τοπικήήαπομακρυσμένηαποθήκευση)κ.ο.κ.αυτήηενημέρωσηαπότοdojo Offline γίνεται με την πυροδότηση ενός συμβάντος(event firing), το οποίο μπορεί να οδηγεί στην εκτέλεση μίας συνάρτησης που θα υλοποιήσουμε εμείς και θα είναι υπεύθυνηγιατηνεκτέλεσητουκατάλληλουχειρισμού.κατάσύμβαση,τοdojoxoffline UI επίσης παρακολουθεί αυτά τα συμβάντα και διαχειρίζεται έτσι αυτόματα την ενημέρωση του χρήστη για τις αλλαγές στην κατάσταση της σύνδεσης. Φυσικά, αυτό μπορεί να παρακαμφθεί τελείως ή απλά να παραμετροποιηθεί η συμπεριφορά του DojoxOfflineUI. Πέραντωνσυμβάντωναυτώνπουενεργοποιούνταιαυτόματαυπάρχεικαιηδυνατότητα ναελέγξουμεοποιαδήποτεστιγμήτηνκατάστασητηςεφαρμογήςμέσωμίαςιδιότητας πουπαρέχειτοdojoxoffline.μεαυτόντοντρόπο,μπορούμεοποιαδήποτεστιγμήστον κώδικα της εφαρμογής μας να ελέγξουμε εάν υπάρχει σύνδεση ή όχι και να αποφασιστείβάσειαυτούτουτιπρέπειναγίνει.έτσιγιαπαράδειγμα,εάνηεφαρμογή έχεισύνδεσημπορείναγίνειαποστολήμίαςαίτησηςhttp[w3c 2]στονεξυπηρετητή αλλιώς να αποθηκευτεί τοπικά η ενέργεια αυτή στην ουρά με τις ενέργειες προς εκτέλεσηγιαότανηκατάστασητηςεφαρμογήςαλλάξει. 3.2.1.3.4 DojoxCryptographyκαιDojoxSQLEncrypt/Decrypt Ένα σημαντικό θέμα που προκύπτει κατά τη δημιουργία εφαρμογών που μπορούν να λειτουργήσουν χωρίς σύνδεση είναι ότι οι εφαρμογές αυτές αποθηκεύουν δεδομένα τοπικά στον υπολογιστή που εκτελούνται. Αυτό μπορεί να δημιουργήσει πολλά προβλήματαανδενληφθούνυπ όψινθέματαόπωςηπροστασίατωνπροσωπικώνκαι ευαίσθητων δεδομένων. Τα προβλήματα αυτά μπορούν να λυθούν μέχρι ένα βαθμό κρυπτογραφώντας τα δεδομένα έτσι ώστε να μην είναι προσβάσιμα από μη εξουσιοδοτημένους χρήστες ή άλλες εφαρμογές. Μηχανισμοί ελέγχου πρόσβασης του λειτουργικού συστήματος ή/και του συστήματος διαχείρισης βάσεων δεδομένων μπορούνεπίσηςνααξιοποιηθούν. Το Dojo παρέχει δύο διαφορετικές προσεγγίσεις για την επίτευξη αυτού, αναλόγως με τοανχρησιμοποιείταιτοdojoxstorageήτοdojoxsql.καιοιδύοείναιαρκετάαπλοί ώστε να μην προσθέτουν επιπλέον φόρτο στον προγραμματιστή. Στην πρώτη περίπτωση,δηλαδήόταναποθηκεύουμεδεδομένασετύπουςδεδομένωντηςjavascript χρησιμοποιώντας το Dojox Storage, υπάρχει το Dojox Encoding Crypto [DOJO 7], το οποίο στην έκδοση 1.1 του Dojo υποστηρίζει τον αλγόριθμο Blowfish [SCHNEIER 1], [WIKIPEDIA 5], και παρέχει δύο απλές συναρτήσεις, μία για την κρυπτογράφηση και μία για την αποκρυπτογράφηση. Στην περίπτωση όπου χρησιμοποιείται το Dojox SQL 15

παρέχεταιηδυνατότηταχρησιμοποίησηςδύοεπιπλέονεντολώνsql,τωνencrypt() καιdecrypt()[dojo 8],οιοποίεςαναλαμβάνουννακρυπτογραφήσουνταδεδομένα πριν αυτά αποθηκευτούν στην βάση (στην περίπτωση του ENCRYPT()) ή να αποκρυπτογραφήσουν τα δεδομένα αφού ανακτηθούν από αυτή(στην περίπτωση του DECRYPT()).ΗκρυπτογράφησηστοDojoxSQLγίνεταιχρησιμοποιώνταςμίαελεύθερη υλοποίησησεjavascript[mvtp]τουαλγορίθμουaes[iaik],[wikipedia 6]καικάνει χρήσηκλειδιούμήκους256bits. 3.2.1.4 ΣυνοψίζονταςτακύριαχαρακτηριστικάτουDojoOfflineToolkit Μόνιμηαποθήκευσηδεδομένωνστοντοπικόυπολογιστήμετηνχρησιμοποίηση είτεσυσχετιστικώνπινάκωνσεjavascriptείτεμίαςσχεσιακήςβάσηςδεδομένων. Μόνιμη αποθήκευση των απαιτούμενων αρχείων της εφαρμογής και παροχή βοηθητικώνεργαλείωνγιατηναυτοματοποίησητηςδιαδικασίαςαυτής. Δυνατότητακρυπτογράφησηςτωνδεδομένωντηςεφαρμογήςμεαπλότρόπο. Γραφικά βοηθήματα μεταξύ των οποίων και το Dojox Offline UI το οποίο συγκεντρώνει πολλές λειτουργίες που είναι χρήσιμες για την ενημέρωση των χρηστών σχετικά με την κατάσταση της εφαρμογής, την πρόοδο του συγχρονισμού μεταξύ της τοπικής εφαρμογής και του απομακρυσμένου εξυπηρετητή καθώς και με οδηγίες για την λειτουργία της εφαρμογής χωρίς σύνδεση. Έναπεριβάλλονσυγχρονισμού,τοDojoxOfflineSync,τοοποίοαυτοματοποιεί σε μεγάλο βαθμό τη διαδικασία, εάν αυτή η μεθοδολογία είναι επαρκής και χρηστικήγιατηνσυγκεκριμένηεφαρμογή. Αυτόματο έλεγχο σχετικά με την κατάσταση λειτουργίας της εφαρμογής, δηλαδή εάν υπάρχει σύνδεση με τον εξυπηρετητή ή όχι καθώς και παροχή εργαλείωνγιατονχειρισμότωναλλαγώνκατάστασης. Ενσωμάτωση με το υπόλοιπο Dojo Toolkit, το οποίο συμπεριλαμβάνει ένα μεγάλοαριθμόεργαλείωνκαιχρήσιμωνβοηθημάτωνγιαανάπτυξηεφαρμογών ιστού. 16

3.2.2 GoogleGears 3.2.2.1 Γενικά Η επόμενη προσπάθεια που έγινε είναι και η μοναδική που μέχρι στιγμής έχει χρησιμοποιηθεί έστω και δοκιμαστικά σε εμπορικές εφαρμογές, είτε αυτούσια είτε μέσωτουdojoofflinetoolkitπουείδαμεπροηγουμένως.αυτήείναιτοgooglegears το οποίο όπως χαρακτηριστικά περιγράφεται από τον Aaron Boodman, μηχανικό του Google Gears, είναι στην πραγματικότητα ένας φυλλομετρητής χωρίς γραφικό περιβάλλον [BOODMAN] και θα δούμε τι ακριβώς σημαίνει αυτό. Πριν δούμε πιο αναλυτικάτιείναιτοgears,πρέπειναεπισημάνουμεκαιπάλιότιπαρ όλοπουτοdojo OfflineToolkitδημιουργήθηκεπρινGoogleGears,πλέονβασίζεταισεμεγάλοβαθμόσε αυτό. Το Gears, είναι πρακτικά ένα plugin ανοιχτού κώδικα, που εγκαθίσταται τοπικά στον υπολογιστή και προσφέρει επιπλέον δυνατότητες στους φυλλομετρητές. Οι δυνατότητες αυτές είναι προσβάσιμες από τους προγραμματιστές μέσω ενός ενιαίου APIανεξαρτήτωςφυλλομετρητήκαιτοAPIαυτόείναισεγλώσσαJavaScript.Παρ ότι οιπρώτεςεκδόσειςτουgooglegearsήταναποκλειστικάστοχευμένεςστηνπαροχήτων απαραίτητων εργαλείων που απαιτούνται για τη δημιουργία εφαρμογών ικανών να λειτουργούν χωρίς σύνδεση, όσο περνάει ο καιρός και το ίδιο το Gears ωριμάζει, καλύπτει ένα όλο και πιο ευρύ φάσμα εφαρμογών ενώ παράλληλα, μελλοντικά θα συμβαδίζει απόλυτα με τα υπάρχοντα πρότυπα που υποστηρίζονται από τους φυλλομετρητές. Αυτός είναι και ο λόγος που το Gears δεν θεωρείται απλά ένα plugin αλλάσανέναςφυλλομετρητήςπουεκτελείταιμέσασεένανάλλοφυλλομετρητή. ΤακύριαυπομέρητουGoogleGearsείναιταεξής 1 : Database[GOOG 2] LocalServer[GOOG 3] WorkerPool[GOOG 4] Desktop[GOOG 5] Geolocation[GOOG 6] Timer[GOOG 7] Blob[GOOG 8] ενώμελλοντικάαναμένονταιακόμαπερισσότεραapi,όπως: Canvas[GOOG 9] Notification[GOOG 10] 1 Ως έχουν στην έκδοση 0.4 (22 Αυγούστου 2008). 17

Αυτάπουμαςενδιαφέρουνπερισσότερογιατηνυλοποίησηεφαρμογώνπουμπορούννα λειτουργήσουν χωρίς σύνδεση είναι τα Database και LocalServer και σε μικρότερο βαθμό τα WorkerPool και Desktop, τα οποία και θα αναλυθούν εν συντομία στη συνέχεια. Αξίζει επίσης να αναφερθεί ότι στο νέο φυλλομετρητή της Google, τον Chrome, ο οποίος είναι βασισμένος στην μηχανή που χρησιμοποιεί και ο Safari, στο Webkit, το Gearsείναιενσωματωμένοεξ αρχής. 3.2.2.2 Database Τοκομμάτιαυτόπαρέχειχώροαποθήκευσηςδεδομένωνχρησιμοποιώνταςτησχεσιακή βάση δεδομένων ανοιχτού κώδικα SQLite. Έτσι μπορεί να χρησιμοποιηθεί για μόνιμη αποθήκευση των δεδομένων ενός χρήστη για μία εφαρμογή. Τα δεδομένα αποθηκεύονται χρησιμοποιώντας την πολιτική ασφαλείας «κοινής προέλευσης» που σημαίνει ότι η εφαρμογή δεν έχει πρόσβαση σε δεδομένα εκτός του domain της. Τα δεδομένα αποθηκεύονται και ανακτώνται χρησιμοποιώντας εντολές SQL. Το κομμάτι αυτό είναι αυτό στο οποίο βασίζεται και το Dojox SQL μέχρι στιγμής. Αν και στην τρέχουσα έκδοση το Gears Database δεν είναι συμβατό με την HTML 5, αυτό είναι στουςάμεσουςστόχουςτηςομάδαςπουαναπτύσσειτοgears[goog 11],[ALMAER 1], [BOODMAN]. 3.2.2.3 LocalServer ΤοLocalServerκομμάτιεπιτρέπεισεμίαεφαρμογήναμπορείναέχειπρόσβασηστους πόρουςhttpπουχρειάζεται(δηλαδήστααρχείατηςεφαρμογής),τοπικάκαιχωρίςνα απαιτείται σύνδεση στο δίκτυο. Το LocalServer θα μπορούσε να θεωρηθεί ως μία εξειδικευμένη cache η οποία ελέγχεται αποκλειστικά από την ίδια την εφαρμογή ή ακόμα καλύτερα ως ένας «τοπικός» εξυπηρετητής που λειτουργεί ως αντίγραφο του απομακρυσμένου. Έτσι, αιτήσεις για URLs τα οποία βρίσκονται στην μνήμη του LocalServer (και για τις οποίες πληρούνται κάποιες συγκεκριμένες προϋποθέσεις που αναλύονται στο Παράρτημα) εξυπηρετούνται από την ενότητα LocalServer και τα δεδομένα παραδίδονται στην εφαρμογή από αυτή, δηλαδή από τα τοπικά αντίγραφα που βρίσκονται στον δίσκο του χρήστη ανεξαρτήτως του αν υπάρχει σύνδεση στο δίκτυοήόχι. 3.2.2.4 Άλλαβοηθητικάεργαλεία 3.2.2.4.1 WorkerPool Τοκομμάτιαυτόανκαιδενσυνδέεταιάμεσαμετηδυνατότηταυλοποίησηςεφαρμογών πουμπορούνναλειτουργήσουνχωρίςσύνδεσηκαιμπορείναχρησιμοποιηθείαυτόνομα σεοποιαδήποτεεφαρμογήιστούείναιιδιαίτεραχρήσιμοστιςπρώτες.ορόλοςτουείναι να επιτρέπει στις εφαρμογές να εκτελέσουν κώδικα JavaScript στο παρασκήνιο, χωρίς να μπλοκάρουν την κανονική λειτουργία της εφαρμογής που εκτελείται στον φυλλομετρητή. Αυτό είναι ιδιαίτερα χρήσιμο αφού στους φυλλομετρητές, μία και μοναδικήλειτουργίαμεμεγάλεςαπαιτήσειςσεχρόνο,όπωςανάγνωσηδεδομένων(i/o) ήαπαιτητικοίυπολογισμοί(π.χ.κωδικοποίησηήκρυπτογράφηση),μπορείνααφήσειτο γραφικό περιβάλλον «παγωμένο» και μη λειτουργικό μέχρι αυτή να ολοκληρωθεί. Το 18

WorkerPoolέρχεταιναλύσειακριβώςαυτότοπρόβλημαπαρέχονταςέναναπεριόριστο θεωρητικά αριθμό «εργατών» για δευτερεύουσες διαδικασίες που πρέπει να εκτελεστούνσταπλαίσιατηςεφαρμογής. 3.2.2.4.2 Desktop Το Desktop module έχει σκοπό να ενοποιήσει κατά ένα ποσοστό τις εφαρμογές που εκτελούνται στον φυλλομετρητή με την επιφάνεια εργασίας του λειτουργικού συστήματος. Ένα παράδειγμα της παρεχόμενης λειτουργικότητας είναι η δυνατότητα δημιουργίαςσυντομεύσεωνστηνεπιφάνειαεργασίαςτουχρήστηκαθώςκαιηανάγνωση αρχείωνπουείναιαποθηκευμένατοπικάστονυπολογιστή,ακριβώςόπωςσυμβαίνεικαι μετιςεφαρμογέςπουείναιεγκατεστημένεςτοπικά. 3.3 Τομέλλον(HTML5) 3.3.1 ΓενικέςπληροφορίεςγιατηνεπερχόμενηέκδοσητηςHTML Ηπιοπολλάυποσχόμενηπρότασημέχρικαισήμερααλλάόχιακόμαλειτουργικήείναι η δημιουργία εφαρμογών ιστού χρησιμοποιώντας την επερχόμενη έκδοση της HTML, τηνhtml5[whatwg 2],πουαυτήτηστιγμήαναπτύσσεταικαιπροτυποποιείταιαπό την ομάδα εργασίας WHAT (Web Hypertext Application Technology)[WHATWG 1] και η οποία έχει γίνει ήδη αποδεκτή [VKESTEREN] από το W3C (World Wide Web Consortium)[W3C 1].Στηνομάδααυτή,μεταξύάλλων,συμμετέχουνμέλητηςομάδας ανάπτυξης του Google Gears αλλά και του Dojo Offline και γι αυτό, όπως θα δούμε, έχει πολλές ομοιότητες σε συγκεκριμένα σημεία με αυτά. Το προφανές πλεονέκτημα της λύσης αυτής δεν είναι άλλο από το ότι, όταν αυτή οριστικοποιηθεί και αρχίζει να υλοποιείται και να υποστηρίζεται από τους υπάρχοντες φυλλομετρητές, θα είναι ένα ευρέωςαποδεκτόκαιανοιχτόπρότυποόπωςείναιηhtml4,ταcssκαιηjavascript. Στην υπάρχουσα μορφή της πρότασης για την HTML 5 τα κύρια κομμάτια που συσχετίζονται με τις εφαρμογές ιστού που μπορούν να λειτουργήσουν χωρίς σύνδεση είναιταεξής: Application caches(κρυφή μνήμη εφαρμογών): Αποθήκευση των αρχείων της εφαρμογήςκαιγενικότερατωνπόρωνhttp[whatwg 4]. Structured client side storage (δομημένη αποθήκευση στον εξυπηρετούμενο): Αποθήκευση δεδομένων είτε σε μορφή κλειδιού/τιμής είτε σε σχεσιακή βάση δεδομένων[whatwg 3]. Browser state (κατάσταση φυλλομετρητή): Μηχανισμός ελέγχου της κατάστασηςλειτουργίας(online/offline)[whatwg 5]. 3.3.2 Ανάλυσητωνεπιμέρουςκομματιών 3.3.2.1 ApplicationCache Η Application Cache έχει σχεδόν πανομοιότυπη λειτουργία με το LocalServer που είδαμεπροηγουμένωςστοgooglegears.κάθεapplicationcacheείναιμίασυλλογήαπό πόρους που είναι απαραίτητοι στην εφαρμογή, δηλαδή τα απαραίτητα αρχεία της 19