Dernière
mise à jour |
19 mars 1997 |
Auteur |
Gilles Maire |
Serveur |
http://www.imaginet.fr/ime/activex.htm |
Adresse |
Gilles.Maire@UNGI.com |
Alors que Netscape, SUN et bon nombre d'éditeurs
supportent Java ou JavaScript, Microsoft s'est démarqué
en proposant un modèle Active X, qui n'est rien de plus que le modèle
OLE 2 rebaptisé pour la circonstance.
Tout utilisateur d'un PC sous Windows connaît
la facilité d'utilisation des liens OLE permettant, par exemple,
d'affichier un tableau Excel dans un document Word. Avec la même
facilité, Microsoft permet d'afficher dans un document HTML un objet
qui peut être un texte Word, ou un document Excel.
Ceci est très séduisant lors de
démonstrations mais il n'est pas inutile de rappeler que :
-
les liens OLE depuis un serveur HTTP vers un
client demandent des ressources réseaux non négligeables,
- les liens OLE ne sont utilisables que sur des PC dotés
de Windows même si les architectures DCOM permettant le partage d'objets
OLE font leur apparition sur des machines UNIX
- les liens OLE nécessitent que le logiciel
natif du lien OLE soit présent sur la station cliente. En d'autres
termes le document Excel ne s'ouvira dans Internet Explorer que si Excel est
présent sur le disque de l'utilisateur.
Cette dernière caractéristique rend la
technologie Active X aussi contraignante que la technologie Plug-In de Netscape.
Puisque nous comparons la technologie Plug-In de
Nestcape et les liens OLE (que nous appellons contrôle Active X),
regardons les principales différences d'architecture entre les deux
modèles.
Le schéma suivant montre l'achitecture Netscape
One proposée par Netscape.
Netscape ONE est un ensemble de protocoles et d’environnements
que Netscape s’engage à supporter et que nous pouvons énumérer
comme suit :
- support des plates-formes PC Window 3, Windows 95,
Windows NT, UNIX (toutes plates-formes de Solaris à Linux) et Mac OS.
(PowerPC, Motorola) ;
- fourniture d’un navigateur : Netscape version 3 aujourd’hui,
version 4 en bêta test sur Windows 95 ;
- protocoles réseaux : HTTP, SMTP (protocole
courrier), OIIP, NNTP (protocole des News) ;
- des classes ou des logiciels certifiés partenaires
fonctionnant sur des serveurs : Nestcape Internet Foundation Class ;
- HTML ;
- JavaScript ;
- Java ;
- la technologie partenaire Plug-In que nous étudierons
dans le chapitre sur les plug-ins. Un Plug-In est
un ajout logiciel fonctionnant à l’intérieur de Netscape.
IIOP/CORBA
Nous avons introduit la notion de IIOP (Internet
Inter ORB Protocol), qui est un protocole plus moderne que HTTP permettant
la communication entre serveurs d’objets. Ainsi, Nestcape a annoncé
sa compatibilité avec CORBA (Common Object Request Broker Architecture)
de l’OMG (Object Managment Group).
L’intérêt de cette architecture tient essentiellement
au fait que les clients émettent des requêtes sans connaître
a priori la localisation du service qui y répondra. En outre,
CORBA permet de normaliser les échanges de données indépendamment
des matériels et des produits utilisés. Il repose en également
sur un modèle objet.
La compatibilité
de Netscape version 3 avec IIOP se situe à deux niveaux aujourd’hui :
- au niveau du navigateur qui est en principe
capable de communiquer non plus sur un serveur HTTP mais par échange
de message avec des ORB (Object Request Broker) dans une architecture distribuée.
Cette fonctionnalité est disponible depuis la sortie de la version
3 du navigateur Netscape, mais n’est pas « vérifiable ».
En pratique, aucun résultat de test à notre connaissance n’a
été publié.
- au niveau de la technologie Live Connect, qui
permet de faire communiquer les Applets Java, les Plug-Ins compatibles Live
Connect et les scripts JavaScript. Cette fonction n’est pas encore supportée
par Netscape, même dans la version bêta actuelle de son navigateur,
mais a été annoncée dès la sortie de son Navigateur
3.0. Elle permettra à terme de faire communiquer une applet Java ou
un Plug-In compatible Live Connect avec une base de données, non plus
par des requêtes SQL comme c’est le cas pour des SGBDR, mais via un
ORB comme c’est l’usage pour les bases de données orientées
objets.
Actuellement l’architecture CORBA, bien que séduisante
par la richesse du langage d’interface qu’elle propose (IDL) et la bonne spécification
des services et des messages qu’elle englobe, reste une architecture complexe
par rapport à la simplicité du protocole HTTP et de sa mise en
uvre. Elle se révèle encore peu performante, comparée
à la vitesse d’exécution des couplages HTTP / base de données.
Le schéma suivant montre l'achitecture ActiveX
proposée par Microsoft :
Active X est un ensemble de protocoles que Microsoft s’engage
à supporter et que nous pouvons énumérer comme suit :
- support des plates-formes PC Windows 3, Windows 95
Windows NT et Mac OS (PowerPC et 68xxx) ;
- fourniture d’un navigateur : Internet Explorer ;
- protocoles réseaux : HTTP, SMTP (protocole
courrier), NNTP (protocole des News) ;
- Active X (ActiveX Controls, ActiveX Documents, ActiveX
Scripting, ActriveX Server Framework) ;
- HTML ;
- Java.
La technologie Active X propre à Microsoft
se décompose en quatre éléments que nous allons détailler
:
-
ActiveX Controls : permet de manipuler des objets
dans le navigateur. Ces objets peuvent être développés
par des tierces parties.
- ActiveX Documents : c’est l’un des points forts actuels
de l’architecture Active X. Active X Documents réalise le partage de
documents Windows (Word, Excel, lien OLE etc..) dans les pages HTML. Cette
fonctionnalité permet ainsi d’afficher des documents existants dans
Internet Explorer 3, mais elle est très coûteuse en temps d’exécution
et en bande passante. Nous reviendrons sur ce point.
-
ActiveX Scripting : c’est l’appellation de VBScript
et de JavaScript supportée par Internet Explorer 3
-
ActriveX Server Framework : c’est la communication
avec les applications externes.
Les contrôles ActiveX peuvent être utilisés
de plusieurs façons dans une page HTML.
La balise OBJECT permet de positionner
un contrôle Active X dans une page HTML.
<HTML>
<HEAD>
<TITLE>Controle ActiveX</TITLE>
</HEAD>
<BODY>
<H1>Controle ActiveX et le tag OBJECT</H1>
<HR>
<OBJECT ID="ActiveXobjet"
CLASSID="CLSID:519FD363-C071-11CF-B42E-0000C062E6A0">
<PARAM NAME="Fichier"
VALUE="exemple.avi">
</OBJECT>
</BODY>
</HTML>
On remarque que le nom d’une classe OLE ou d'un contrôle
Active X est répertorié par un UUID (Universally Uniq Identifier)
qui est unique dans l’architecture Microsoft, à savoir qu’il est soit lié
au numéro de la carte réseau de l’équipement producteur (par
un programme GUIDGEN), soit attribué sur demande par Microsoft qui en assure
l’unicité.
Ainsi le document Excel est répertorié
par un nom UUID unique (celui d’Excel) et une instenciation correspondant
aux cellules du document sélectionné.
Lorsqu’un lien OLE est copié dans Word, le système
explore la base des registres de Windows qui lui donne les informations nécessaires
sur l’emplacement des données Excel par un mécanisme de class factory
de l’architecture COM (Component Objet Model), qui indique la ressource nécessaire
sur le PC.
Microsoft a étendu ce mécanisme à
l’accès réseau en élargissant ce modèle COM
à un modèle distribué (DCOM) qui permet d’aller rechercher
les informations sur un serveur distant. Ainsi dans une page HTML, les
syntaxes suivantes permettent d’aller chercher une ressource sur le réseau.
Si la balise <OBJECT> était très proche du modèle
OLE2 puisque le HTML reprenait les codes UUID de Microsoft, elle est mal
commode à utiliser et pas compatible avec Netscape.
Aussi Microsoft supporte la balise <EMBED> qui produit un résultat
similaire à celui de la balise OBJECT, si ce n'est qu'elle offre
généralement moins de contrôle.
Tout comme dans l'achitecture Netscape One qui garantissait que les Plug-Ins
pouvait être appelés en JavaScript, les contrôles ActiveX
peuvent être manipulés par Active Script comme le montre le
code suivant :
<HTML>
<HEAD>
<TITLE>Controle ActiveX</TITLE>
<SCRIPT LANGUAGE="VBS">
sub DemarreActiveX
Call ActiveXobjet.Run
end sub
sub StopActiveX
Call ActiveXobjet.Stop
end sub
</SCRIPT>
</HEAD>
<BODY>
<FORM Name="Controle">
<INPUT TYPE="Button" VALUE="Start"
onClick="DemarreActiveX">
<INPUT TYPE="Button" VALUE="Stop"
onClick="StopActiveX">
</FORM>
<H1>Controle ActiveX et le tag OBJECT</H1>
<HR>
<OBJECT ID="ActiveXobjet"
CLASSID="CLSID:519FD363-C071-11CF-B42E-0000C062E6A0">
<PARAM NAME="Fichier"
VALUE="exemple.avi">
</OBJECT>
</BODY>
</HTML>
Internet Explorer permet d'agir sur les contrôles ActiveX par simple
clic sur le bouton droit de votre souris.
Le popup menu contextuel apparaîtra alors avec les différentes
lignes de contrôle (démarrer, arrêter, pause, etc..) ainsi
qu'une ligne « propriétés » permettant de
paramétrer le contrôle ActiveX.
Tout comme JavaScript, Active X permet de manipuler les objets suivants :
- window : la fenêtre
- history : la pile historique
- navigator : propriété du navigateur
- frames[i], framePrincipal : les fenêtres
- location : les objets URL
- scripts[i] : le programme de script
-
document : le document
- links[i] : les liens
-
anchors : les ancres
- forms[i] : les formulaires
- elements [i] : les elements d'un formulaire
Les boîtes de dialogue sont au nombre de trois :
On retrouve les propriétés, les événements
et les méthodes analogues à celles vues dans les chapitres
JavaScript.
Les langages JavaScript et VBScripts sont supportés par Internet
Explorer et permettent tout comme le langage JAVA de contrôler des
objets ActiveX.