La technologie ActiveX

Sommaire :

Avant propos.

I - Origine d’ActiveX : OLE.

II - L’architecture d’ActiveX : COM, DCOM.

III - Les éléments d’ActiveX.

IV - Avantages et inconvénients de l’ActiveX.

V - Utilisation des contrôles ActiveX et exemple de sources.

VI - Création de contrôles ActiveX.

VII - Les logiciels de développement.

VIII - Bibliographie.

Avant propos.

Le but de cette page est de présenter l'architecture de Microsoft portant le nom d'ActiveX. Cette page se base sur différentes recherches menées à travers le WEB et extraites de livres. L'ensemble des sources est présenté en annexes. Devant la complexité de cette technologie et l'étendue de ses possibilités je n'ai pas traité tous les points techniques en détails dans cette page.

ActiveX est donc l'architecture de Microsoft offrant une solution au problème de la distribution et de la communication d'objets issus de langages différents (Visual C, C++) sur plates-formes clientes hétérogènes. Le serveur doit être de type Windows 9.x ou NT. ActiveX est la technologie Internet de Microsoft, qui tente bien évidemment d'imposer cette norme au monde Internet. ActiveX est basé sur la technologie OLE, également de Microsoft, basée sur son API Win32 ainsi que sur COM de Digital.

I - Origine d’ActiveX : OLE.

Tout a commencé au début des années 90 avec l'apparition de DDE (Dynamic Data Exchange) dans les premières versions de Windows. Il s'agissait à l'époque de permettre l'échange de données entre deux applications Windows.

Quelques temps plus tard, durant l'année 91, Microsoft propose la 1ère version d'un mécanisme plus évolué que DDE, appelé OLE (Object Linking and Embedding) qui étend les capacités de communication inter-applications en introduisant une approche objet. OLE permettait d'intégrer, dans une application, des objets issus d'autres applications Windows. OLE peut être vu comme un ensemble de librairies et d’application pour la composition, le stockage, l’échange et l’intégration de documents Microsoft.

C'est pourquoi Microsoft sortit deux ans plus tard la 2ème version d'OLE, OLE 2.0, corrigeant non seulement les défauts de la première mouture d'OLE mais introduisant également le modèle COM (Component Object Model) qui définissait le format binaire interne des objets OLE.

En 1994, avec le passage de Windows au 32 bits, COM devint la base même de toute l'architecture OLE. Microsoft introduit alors la notion de composant OLE ou OCX (OLE Control eXtension), basé, entre autres, sur les extensions VBX de VisualBasic. C'est sur ces composants qu'est bâtie la technologie ActiveX introduite début 96 par Microsoft et qui constitue le coeur de sa stratégie Internet.

Pour une présentation détaillée de l'évolution de OLE (shémas) je vous conceille de récupérer ce documment très bien fait :evolution.doc

retour au sommaire

II - L’architecture d’ActiveX : COM, DCOM.

ActiveX repose sur l'architecture de communication développée par Digital appelée COM et son extension qui est DCOM. Voici la présentation de ces deux technologies :
  • COM (Component Object Model) : modèle objet de Microsoft sur lequel OLE s’appuie. Utilisation uniquement en local.
  • DCOM (Distributed Component Object Model) : technologie qui définit les extensions du modèle COM pour faire un système d’objets distribués basé sur les RPC. Il permet à des composants Microsoft de communiquer à travers le réseau Intranet ou Internet. Les composants peuvent être localisés sur des machines distantes.
  • Une analogie peut etre faite avec CORBA. CORBA et OLE peuvent être vue comme deux systèmes de transport en concurence. CORBA a pour couche de transport l'ORB alors que OLE utilise COM(sur une machine) ou DCOM (a travers un réseau).

    Voici une representation de la comparaison :
    CORBA OLE
    Couche de transport ORB COM (sur une machine)
    DCOM(a travers un reseau)
    Fournisseurs IBM,SUN,HP,DIGITAL... Microsoft

    retour au sommaire

    III - Les éléments d’ActiveX.

    La technologie ActiveX comprends principalement :
  • Les contrôles ActiveX: un contrôle ActiveX est un OCX (OLE Custom Control, le successeur de VBX) que peut utiliser un browser Web au sien d'une page HTML, et est destiné à concurrencer Java. Les contrôles ActiveX sont également (plus ou moins) l'équivalent technologique des plugs-in de Netscape.
  • Un mécanisme de signature de contrôle ActiveX, permettant au browser Web de vérifier qu'un contrôle n'a pas été modifié.
  • ActiveX automation (anciennement OLE automation) : permet à une application d'accéder directement à des objets (au sens informatique du terme) d'une autre application. L'ActiveX automation permet par exemple à une application Word Basic ou Visual Basic d'accéder à des objets COM.
  • ActiveX scripting : interface permettant de créer un langage de script qui permette l'accès à des objets COM.
  • DocObject (ou ActiveX document ou Document Object) : Cette technologie, que l'on pourrait appeler OLE 3.0, permet à un client DocObject d'afficher un document d'un serveur DocObject comme s'il était un document natif. Ainsi, Internet Explorer 5.0 peut afficher un document Word de la même manière qu'il affiche une page HTML (pourvu qu'il y ait un serveur Word sur la machine)

    Par exemples : Word 97, Excel 97 et PowerPoint 97 (ainsi que leur viewers gratuits) sont des serveurs DocObject. De même, Internet Explorer 5.0 et le classeur d'Office 97 sont des clients DocObject.

  • Dans la terminologie ActiveX, on ne parle plus d'application mais de document. Un document est un réceptacle à contrôles ActiveX. Un contrôle ActiveX est un élément logiciel distinct qui respecte le modèle COM. Un contrôle peut communiquer avec le document qui le contient, et ce, de façon bidirectionnelle. ActiveX a été spécialement conçu pour fonctionner dans un environnement World Wide Web, grâce notamment à Microsoft Internet Explorer (MSIE) qui est un des rares navigateurs à pouvoir recevoir des contrôles ActiveX.

    Ces contrôles sont intégrés dans une page web grâce à une balise HTML dédiée. Un langage de type script, appelé VBScript, dérivé de Visual Basic, permet d'agir sur un contrôle ActiveX.

    VBScript est proche de JavaScript, dont nous n'avons pas parlé dans ce document. JavaScript est un langage interprété par un navigateur (Netscape ou MSIE), inspiré de Java au niveau de sa syntaxe mais qui est beaucoup plus simple (utilisation minimale des notions d'objets, typage des variables facultatif, pas de capacité de communication réseau ou d'accès aux fichiers) et qui apporte des facilités pour la manipulation et la création de documents HTML. VBScript est cependant plus pauvre dans ce domaine que son concurrent et n'est reconnu que par MSIE. VBScript permet d'agir sur des contrôles ActiveX intégrés à une page web.

    Il est important de noter que, même si un développeur peut créer ses propres contrôles ActiveX, il est tout à fait possible de réutiliser des contrôles existants afin de les intégrer et en modifier le comportement via un script VBScript.

    retour au sommaire

    IV - Avantages et inconvénients de l’ActiveX.

  • Avantages d'ActiveX

  • Une migration rapide: ActiveX a l'avantage d'être une extension d'OLE. Il n'est pas difficile de porter un OCX déjà existant en un contrôle ActiveX. De même, il est relativement facile de transformer un client ou serveur OLE 2.0 en un produit DocObject.
  • La rapidité: Contrairement à Java, un contrôle ActiveX est un programme compilé. Il en résulte un gain de rapidité appréciable.
  • L'intégration avec Windows 95/NT: Un contrôle ActiveX étant un programme Win32, il a accès à l'API complète de Windows 95 / Windows NT, donc peut facilement effectuer des tâches d'administration, ...
  • Inconvenients d'ActiveX

  • Une portabilité discutable: Un contrôle ActiveX étant compilé, un serveur Web doit pouvoir fournir une version de chaque contrôle pour chaque plate-forme supportée (une pour Windows 95/NT, une pour Windows NT MIPS, une pour Macintosh, ...). Si cela ne pose pas de grande difficulté sur un intranet (dans la mesure où on connait les plates-formes client), il n'en n'est pas de même sur Internet, où virtuellement n'importe quelle plate-forme client.
  • Une faible sécurité: Si Java a encore des failles dans sa sécurité, ActiveX n'offre qu'une faible sécurité, à savoir la signature de contrôle. Passé cette sécurité, un contrôle peut TOUT faire sur la machine client. La signature d'un contrôle n'est pas suffisante dans la mesure où un utilisateur peut exécuter un contrôle non signé malgré les avertissements d'Internet Explorer, et que la signature ne garantie rien quant aux intentions réelles d'un contrôle ActiveX.
  • exemple : Il existe un contrôle ActiveX démontrant ce problème, nommé Internet Exploder. il permet de rebooter un Windows 9x.

    retour au sommaire

    V - Utilisation des contrôles ActiveX et exemple de sources.

    L’insertion de contrôles ActiveX dans une page HTML se fait en utilisant un tag dédié <OBJECT>. Voici certains de ses attributs :
  • ALIGN : préciser la position horizontale du contrôle.
  • CODEBASE : spécifie l’URL du contrôle s’il n’est pas disponible sur le client.
  • CLASSID : identifiant du contrôle.
  • DATA : URL d’un fichier pouvant être utilisé par le contrôle.
  • HEIGHT/WIDTH : hauteur/largeur de la zone d’affichage.
  • ID : utilisé pour identifier de façon unique le contrôle dans la page, afin de pouvoir y accéder.
  • STANDBY : précise le texte à afficher pendant le chargement de l’objet.
  • Exemple de déclaration :
    Prenons un exemple d'utilisation de cette balise :
    <OBJECT CODEBASE="http://www.abcd.com/control.ocx#Version=4,70,0,1997" CLASSID="CLSID:1A4DA620-6217-11CF-BE62-0080C72EDD2D" ID=ctrl>

    retour au sommaire

    VI - Création de contrôles ActiveX.

    Il existe plusieurs façon de créer un contrôle, parmi lesquelles :
  • Les Microsoft Foundation Classes (MFC) : classes C++ permettant de programmer d’utiliser Win32 et ActiveX dans une application Windows.
  • L ’ActiveX Tamplate Library (ATL) : comprend un ensemble de templates de classes C++ permettant de programmer des objets COM.
  • Visual J++ : permet d’écrire des petits objets COM.
  • Les étapes de la création avec ActiveX SDK:

  • Création du squelette du contrôle : définition des traitements de base du contrôle OLE. Le contrôle obtenu à l’aide de AppWizard est exécutable mais ne fait rien.

  • Ajout des propriétés : définition des propriétés accessibles depuis l'extérieur de l ’objet à l ’aide Class Wizard.

  • Ajout des méthodes : définition de l’action du contrôle.

  • Ajouts des événements : gestion des événements de l’utilisateur.

  • Signature du code : génère un certificat d’authentification.
  • retour au sommaire

    VII - Les logiciels de développement.

  • L’activeX Control Pad : utilitaire gratuit de Microsoft qui permet d’incorporer des contôles activeX dans un document HTML et d’y inclure du code VBScript ou JavaScript.
  • Le Script Wizard : élément du Control Pad, pour associer des événements à des actions.
  • L’ActiveX SDK : utilitaire gartuit de Microsoft qui permet de concevoir des contrôles ActiveX.

    retour au sommaire

    VIII - Bibliographie.

    L'ensemble de ces recherches a été mené à travers différents cites WEB et des ouvrages dont voici les reférences :

  • "Midleware et Internet. Corba, COM/DCOM, ActiveX", auteur : Daniel Serain 2° édition. Dinod Interedition 1999.
  • "Corba, ActiveX et javabean", auteur : Jean-Marie Chauvet. Eyrolles.

  • Voici quelques adresses sur le Net :
    http://www.factory-syst.fr/ActiveX.htm
    http://www.larcher.com/eric/guides/javactivex/
    http://webhome.infonie.fr/maxidd/windev/page5/agent.htm
    http://www.univ-pau.fr/~hunel/Enseignement/mi10/dcom/
    http://www.ifrance.com/inthenuts/startspy/comdemo.htm
    http://perso.wanadoo.fr/bardou/michel/activex/acivexie4.htm

    Voici le powerpoint utilisé lors de la présentation : ActiveX.ppt et deux powerpoints récupérés sur le net présentant ActiveX (en anglais) : kindel1.ppt et kindel2.zip

    retour au sommaire

    Page réalisée par Nicolas Artufel en Novembre 2000.