Αρκετοί χρήστες έχουν συνδέσει την τεχνολογία ActiveX με κάτι κακό, με κάτι που έχει σχέση με ιούς, με κάτι που έχει σχέση με τον Internet Explorer και γενικά με ότι μπορούν να φανταστούν εκτός από αυτό που είναι στην πραγματικότητα. Στο άρθρο αυτό θα προσπαθήσω να εξηγήσω με απλά λόγια για πιο πράγμα μιλάμε ακριβώς, ποιες οι δυνατότητές του και ποια τα προβλήματα που αυτό λύνει ή αναδικνύει.
Δυναμικές Βιβλιοθήκες
Το πρόβλημα ξεκινάει από τις εποχές των παλαιών λειτουργικών συστημάτων, δηλαδή του DOS και ίσως και πιο πίσω. Κάθε εφαρμογή κάνει κάτι από μόνη της (π.χ. ένα calculator κάνει πράξεις), ορισμένες όμως φορές μία εφαρμογή κάνει κάτι ίδιο με μία άλλη κοινή εφαρμογή. Για παράδειγμα αν γυρίσουμε πίσω στην εποχή του DOS βρίσκουμε προγράμματα τα οποία εκείνη την εποχή χρησιμοποιούσαν όλα την «εξτρα» μνήμη που είχε ο υπολογιστής. Αντί όμως κάθε εφαρμογή να υλοποιεί τον δικό της τρόπο να παίρνει την μνήμη, κάτι που θα μας πήγαινε σε ασυμβατότητες και κρασαρίσματα του υπολογιστή, χρησιμοποιούσαν όλοι μία κοινή βιβλιοθήκη, το HIMEM.SYS. Με αυτόν τον τρόπο η Ms και η κάθε Μs της εποχης ασχολείτο η ίδια με το πρόβλημα ενώ το κάθε πρόγραμμα είχε πλέον ένα σίγουρο κα ι ασφαλή τρόπο να βλέπει την έξτρα μνήμη που χρειάζεται.
Στα Windows καθώς και στο Linux ή στο OSX κάθε εφαρμογή κάνει το δικό της πράγμα για το οποίο είναι γραμμένη, πολλές εφαρμογές όμως κάνουν κάτι κοινό, π.χ. να κάνουν update από το Internet, να εκτυπώνουν στον ίδιο εκτυπωτή, να προβάλουν 3D δεδομένα στο ίδιο framework (DirectX/ OpenGL) κλπ. Για να μην κουβαλάει η κάθε εφαρμογή τον ίδιο κώδικα, στα Windows υπάρχει ένα set από διαθέσιμο κώδικα, γνωστο σαν Application Programming Interface στο οποίο έχουν πρόσβαση όλα τα προγράμματα. Αυτά είναι τα γνωστά μας αρχεία DLL.
To πρόβλημα των DLL
Το βασικό πρόβλημα των DLL ήταν ότι κάθε εφαρμογή εγκαθιστούσε τα δικά της που πιθανόν ήταν μή συμβατά με άλλα συστήματα ή προγράμματα. Επιπλέον η τοποθεσία στον σκληρό δίσκο που έμπαιναν αυτά τα αρχεία πολλές φορές έμπλεκε με άλλα αρχεία με ίδιο όνομα, το γνωστό name collision ή DLL Hell. Το αποτέλεσμα είναι, όταν τα Windows κυριάρχησαν στην αγορά, να υπάρχουν πολλές τέτοιες ασυμβατότητες μεταξύ των
προγραμμάτων.
Επιπλέον, όταν για κάποιο λόγο δεν υπήρχε ένα DLL εκεί που περίμενε να το βρεί ένα πρόγραμμα απλά το πρόγραμμα δεν έτρεχε, ακόμα και αν το DLL δεν του ήταν 100% απαραίτητο για να λειτουργήσει.
Η λύση του ActiveX
Η τεχνολογία ActiveX κάνει διαθέσιμη, όπως και με τα DLL, κώδικα στο σύστημα. Αντίθετα όμως με τα DLL τα αρχεία του ActiveX μπορούν να τοποθετηθούν οπουδήποτε στο σύστημα και στη συνέχεια καταγράφεται ο προορισμός τους μαζί με το τί κάνουν στο HKEY_CLASSES_ROOT. Με μία διαδικασία σχετικά απλή για τους προγραμματιστές, όταν κάποιος θέλει να χρησιμοποιήσει ένα διαθέσιμο τμήμα κώδικα, απλα καλει το ActiveX που θέλει (το οποίο ξεχωρίζει μοναδικά απόκάποιο άλλο με ένα 128-bit αριθμό που λέγεται CLSID). Στο άρθρο μου για το Win32 API εξηγώ ότι προγραμματιστικό χρειάζεται για να κατανοήσει κάποιος την προγραμματιστική διαδικασία αν ενδιαφέρεται. (http://www.adslgr.com/forum/showthread.php?t=220221).
Το αποτέλεσμα είναι για παράδειγμα ότι π.χ. ένας printer driver εγκαθίσταται στο λειτουργικό. Αντί κάθε πρόγραμμα να περιέχει τον κώδικα που χρειάζεται για να εκτυπώσεις (και άρα να ξαναγραφτεί για να υποστηρίζει τον συγκεκριμένο εκτυπωτή όπως γινόταν στο DOS) , καλεί απλά το ActiveX του εκτυπωτη (ορισμένο από τα Windows) το οποίο επιτρέπει να ρυθμίσει και να εκτυπώσει ο χρήστης με μια διαδικασία transparent και για το πρόγραμμα και για τον εκτυπωτή.
Άλλο παράδειγμα, όταν κάποιος έχει εγκατεστημένο στο σύστημά του το Excel, μπορεί από μια τρίτη εφαρμογή να το χρησιμοποιήσει για ένα λογισμικό φύλλο. Καλεί το ActiveX του Excel (το οποίο και επιστρέφεται μόνο όταν υπάρχει το Excel , αλλιώς φυσικά δεν γίνεται) και χρησιμοποιεί τις δυνατότητες του Excel.
Κάποιος θα πεί για παράδειγμα ότι για κάτι απλό όπως την εμφάνιση ενός μυνήματος δεν χρησιμοποιείται ActiveX. Αυτό δεν ισχύει, και για τα ποιο μικρά θέματα όπως την δημιουργία συντόμευσης, τη σύνδεση στο Internet από οποιονδήποτε browser χρησιμοποιείται ActiveX με τον ένα ή τον άλλο τρόπο.
Πού υπάρχει το ActiveX
Στο 100% των .NET/WPF εφαρμογώ και στο 99% των άλλων εφαρμογών. Οτι και να κάνει κάποιος θα χρησιμοποιηθεί το ActiveX σε κάποια περίσταση, ακόμα και για την δημιουργία ενός φακέλου χρησιμοποιείται το ΙStorage για παράδειγμα το οποίο το δίνει ο explorer με τον Internet explorer. To Flash Player είναι ActiveX control - αναρωτιέμαι πως θα βλέπατε video στον FireFox χωρίς αυτό.
Επομένως είναι κωμικό το να λέμε ότι θέλουμε Windows χωρίς ActiveX, μια τέτοια έκφραση ισοδυναμεί με το να λέμε ότι δεν θέλουμε Windows.
Τι σχέση έχει το ActiveX με την Java?
Καμία. Ένα πρόγραμμα που τρέχει μέσω του Internet Explorer ή του Firefox ή του Chrome σαν ActiveX control δεν διαφέρει σε τίποτα από οποιαδήποτε άλλη εφαρμογή. Εχει τα ίδια permissions με αυτά που έχει και ο browser (τώρα τελευταία χρησιμοποιείται η τεχνική του Sandboxing η οποία όμως δεν δουλεύει πλήρως). Στην Java τα πραγματα είναι τελείως διαφορετικά μια που είναι προγραμματα που τρέχουν στην Java Virtual Machine και δεν είναι κανονικός κώδικας με το ActiveX.
Tα προβλήματα του ActiveX
Επειδή το ActiveX είναι απλά ένα πρωτόκολλο και επειδή χρησιμοποιείται από προγράμματα, μπορεί να χρησιμοποιηθεί και από Ιους. Οταν πηγαίνετε σε ένα πορνο site και σου λέει για ActiveX για “Instant Access” , τί ειναι, ένας dialer που παλιότερα θα μας έκανε ζημιά. Δεν φταίει όμως για ένα κακόβουλο πρόγραμμα ούτε ο IE, ούτε τα Windows ούτε το ActiveX. Για την ασφάλεια σας μην τρέχετε άγνωστα ActiveX στοιχεία όπως δεν θα τρέχατε ένα άγνωστο downloaded πρόγραμμα. Το ActiveX δεν είναι περισσότερο ή λιγότερο επικίνδυνο. Να τονίσω επίσης ότι σε οποιοδήποτε άλλο browser υπάρχει επίσης το ActiveX για να μπορούν να συνεργάζονται με τα Windows.
Ο μύθος του IE
Ο Internet Explorer σαν εφαρμογή (IEXPLORE.EXE) είναι απλα ένα frontend που κάνει χρήση της ActiveX τεχνολογίας. Αν κάποιος βγάλεi τον IE από το σύστημα απλά θα διαγράψει το IEXPLORE.EXE. Ολα τα άλλα θα παραμείνουν και δεν διαγράφονται, διότι αν διαγραφούν την άλλη στιγμή τα Windows δεν θα λειτουργούν εκτός από ελάχιστες εφαρμογές. Επομένως αυτά περι αφαίρεσης του IE από τα Windows και περί αθέμιτου ανταγωνισμού δεν ευσταθούν, το μόνο που θα ξηλωθεί είναι η συντόμευση, πράγμα που έτσι και αλλιώς θα το έκανε κάποιος που θέλει να καταργεί τον IE.
Επειδή οι βιβλιοθήκες που περιέχουν την Trident (την μηχανή που χρησιμοποιεί ο IE) είναι διαθέσιμες σε όλα τα Windows, αυτό εξασφαλίζει ότι 100% θα τρέχει η οποιαδήποτε εφαρμογή που τις χρησιμοποιεί. Αν τις αφαιρούσαμε προς χάριν ορισμένων εταιριών, τότε εκατοντάδες καλές εφαρμογές Windows δεν θα μπορούσαν πλέον να τρέξουν.
Τέλος να σημειώσω ότι τo αν η Microsoft κατακρίνεται για τον τρόπο που έφτιαξε τοσύστημα, δεν μπορώ ούτε θέλω να το κρίνω. Αφού τα Windows έχουν το μερίδιο της αγοράς, είναι επιτυχημένο και κάτι επιτυχημένο δεν μπορείς να το κρίνεις αρνητικά αν η εναλλακτική σου πρόταση είναι αποτυχημένη και απορριπτέα από τον κόσμο. Αν δε σου αρέσει, δεν τα αγοράζεις και δεν τα χρησιμοποιείς - απλα.
Αυτά τα ολίγα.
Πηγές
http://en.wikipedia.org/wiki/ActiveX
http://msdn.microsoft.com/en-us/library/aa751972.aspx
-
Τι είναι το ActiveX, πώς χρησιμοποιείται, μύθοι και πραγματικότητα , γιατί δεν φεύγει ο ΙΕ
Δημοσιεύθηκε στις 13-02-09 18:30Αυτό το άρθρο δημοσιεύθηκε πρώτα στο forum με θέμα: Τι είναι το ActiveX, πώς χρησιμοποιείται, μύθοι και πραγματικότητα , γιατί δεν φεύγει ο ΙΕ Δημοσιεύθηκε από turboirc Δείτε την αρχική δημοσίευση
Μήνυμα