programme z 049
TRANSCRIPT
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 1/53
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 2/53
“
I nterview
Programmez N°49 • JANVIER 2003
L’ouvrage "Construire des services Web XML
pour la plate-forme Microsoft .NET", de Microsoft
Press®, montre comment bâtir des applications à
objets distribués prêtes pour le Web, sans accident
ni défaillance, particulièrement aux moments cri-
tiques. Tout au long de ce livre de 504 pages, l’au-
teur, Scott Short, un partisan des services Web XML,
plonge avec enthousiasme dans des applications du
monde réel de services Web XML Web, traitant des
mécanismes fondamentaux, de Microsoft ASP.NET,de la sécurité, du débogage, de l’architecture GXA
(Global XML Web Services Architecture), de la nou-
velle génération de services Web XML et de bien
d’autres choses encore. Dans l’interview qui suit,
Short décrit l’engagement de Microsoft à faire évo-
luer ses services Web XML, le fonctionnement inter-
ne des services Web ASP.NET, l’emploi de C#™ pour
illustrer le codage de services Web et sa foi dans
l’avenir des services Web XML, en tant que technolo-
gie dominante pour les applications de lignes de
travail intégrantes ou LOB (Line Of Business).
MS : Les ser vices Web XML ont été conçus p our élimi-
ner cer tains des pr incipaux inconvénients des modè les
de composants distribués comme COM+, J2EE et
CORBSS : la dépendance vis-à-vis d’environne ments
propriétair es et la dif f iculté à réaliser la t raduction
entre plates-f or mes, la complexité de la transmission
de code à tr aver s des pare-f e u x et sur l’Internet, ainsi
que la dé pendance vis-à-vis d’un modèle de communi-
cat ion orientée co nnexion. Comment les ser vices We b
XML ont-ils r e mpli cette mission, et, selon vous, quel
est celui de ces points qui a le plus contribué au suc-
cès potentiel des services Web ?
SS : Fondamentalement, un service Web XML Webest composé d’un ensemble de protocoles orientés
messages, parfaitement adaptés à l’Internet.
Comme les spécifications de ces protocoles s’arrê-
tent avant la définition des plates-formes et des
API, les vendeurs sont libres d’innover à leur guise.
Ce modèle définit un bon équilibre, parce qu’il per-
met aux vendeurs de se différencier grâce à l’inno-
vation, tout en incitant à une opérabilité maximale.
MS : Quels sont les inconvénients des serv ices Web
en compar aison avec les aut r es modèles de compo-
sant s distr ibués ? SS : Dans l’ensemble, les modèles de composants
distribués sont capables de prendre en charge une
meilleure encapsulation de l’état et du comporte-
ment. Par exemple, imaginez qu’un service distant
renvoie l’enregistrement d’un employé à une appli-
cation cliente devant mettre à jour cet enregistre-
ment d’après certaines règles de travail.
Avec les modèles de composants distribués, le ser-
vice distant peut renvoyer un composant employé
au client. Le composant employé peut encapsuler
aussi bien de la logique de travail que des don-
nées. Si les données sont privées pour le compo-sant, et donc accessibles uniquement, via des
méthodes et propriétés publiques, la logique de
travail spécifique à l’enregistrement de l’employé
peut être activée à l’aide des méthodes et proprié-
tés publiques. Par comparaison, un enregistrement
de salarié renvoyé par un service Web XML ne peut
contenir que des données. Vous devez avoir recours
à un mécanisme externe pour implémenter la
logique de travail.
MS : Microsof t, IBM, Sun et d’autres vendeurs
dominants ont tous annoncé des initiatives en
matièr e de ser vices Web. Quels sont les avantages
de l’implémentation Microsof t d’un service Web
.NET sur ses concurrents ?
SS : La plate-forme Microsoft ASP.NET offre l’une
des plus -sinon la plus- solides plates-formes du
marché, pour le développement et la consomma-
tion de services Web XML. Les services Web
ASP.NET offrent au développeur un modèle de pro-
grammation simple et proposent une solide prise
en charge de l’encodage littéral de documents, en
comparaison avec les plates-formes concurrentes.
Le combat ne fait cependant que commencer.
Aujourd’hui, chaque plate-forme de développementde services Web XML possède ses faiblesses. Micro-
soft reste cependant extrêmement impliqué dans
l’évolution de sa stratégie de services Web XML et
des outils de développement associés. Microsoft a
largement prouvé par le passé sa capacité à fournir
des outils leaders à l’industrie lorsqu’elle manifes-
tait une telle volonté.
MS : Visual Studio .NET rend pratiquement enfantin,
dans la plupar t des cas, la conver sion d’applic ations
en ser v ices Web. Pense z-vous que ce ty pe de conver-
sion est ut ile, ou qu’il est pr éf ér able de concevoir dès le départ une application comm e ser v ice Web ?
SS : La plate-forme ASP.NET de services Web s’ap-
Demandez à n’importe quel
développeur quel est
le principal sujet de discussion
aujourd’hui : il répondra
probablement qu’il s’agit de la
programm ation orientée
composants et des app lications
fondées sur des comp osants.
Cela signifie que la nécessité
de rendre accessibles
des composants distribués
sur des machines distantes
s’est considérableme nt a ccrue.
Heureusement, les services We b
XM L, fonctionnant sur la p late-
forme M icrosoft® .N ET, font de
cela un processus particulière-
ment simple pour toutes les par-
ties impliquées.
S C O TT S H O R T
À propos du présent et du futurdes services Web XML
4
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 3/53
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 4/53
M éthodologie
Programmez N°49 • JANVIER 2003
MDA ? C’est quoi ? En quelques mots,
c’est une approche des spécifications
du système d’information, qui sépare
les spécifications des fonctionnalités systè-
me, des spécifications du déploiement de ces
fonctionnalités sur une plate-forme technolo-gique particulière. Cette approche met l’em-
phase sur les modèles et procure un niveau
d'abstraction supérieur pendant le dévelop-
pement. Il permet de découpler les modèles
dits "Business" ou modélisant des processus
métiers, des modèles techniques relatifs au
déploiement des applications sur une plate-
forme technique précise.
Un objectif business
omniprésentMDA permet surtout de contourner les
défauts ou carences de l’UML, par de
meilleures pratiques. Olivier De Vecchi le
constate : " la modélisa-
tion, c’est beau les six
premiers mois d’un pro-
jet. Ensuite, la plupart
du temps, les modèles
ne sont plus documen-tés et plus rien n’est à
jour. Alors pour éviter le
casse-tête, on refait
un modèle et on
jette l’ancien à la
poubelle. C’est contraire à ce que
veulent les entreprises, qui investissent pour
un retour sur leurs affaires. Avec le MDA, on
reste au niveau de l’architecture. On conçoit
d’abord les modèles métiers, puis seulement
ensuite les modèles techniques, enfin on
génère le code. Cela permet de gérer le plus
tard possible le code et encore plus tard les
choix techniques. Dans ce cas de figure, les
entreprises voient d’abord comment leurs
affaires évoluent, puis seulement ensuite,
elles s’occupent des choix
techniques. "
Pour reprendre une autre
formule d’Olivier de Vec-
chi, " MDA devient le véri-
table mode d’emploid’UML ". " Ne rêvons
pas non plus, le
phénomène démar-
re seulement, princi-
palement dans
l’industrie, qui est souvent pionnière
sur ce type de solutions, pour des raisons de
qualité. Comme pour la modélisation, un tiers
des gens en font et dans ce tiers, un autre
tiers se pose encore la question : pourquoi ?
Cependant, les premiers projets pilotes que
nous avons réalisés, permettent clairement
de dire que c’est vraiment très prometteur ".
Le plus prometteur est la possibilité de créer
des composants MDA, qui comprennent un
ou plusieurs profils UML, prêts à l’emploi
pour les utilisateurs. L’approche permet d’au-
tomatiser ainsi ce qui a été conçu par les
outils de modélisation.
Défini et supporté par l’OMG (Object Management Group), le MDA (Model Driven Architecture) prend
peu à peu sa place dans les environnements de développement. Il apporte une dimension supérieure
d’abstraction aux méthodes UML (Unified Modeling Language). Pour Olivier De Vecchi, responsable
marketing du secteur migration et technologies Web chez Sodifrance, " MDA représente au moins une
bonne façon d’utiliser UML ".
MDA : la maturité de l’UML
6
SoftwareDevelopment
LifecyclePSM to PSMMappings
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 5/53Programmez N°49 • JANVIER 2003
17
Les bénéfices del’approche MDAPour tirer complètement profit de cette
approche, il faut avoir formalisé le savoir
contenu dans les différents développements
logiciels de l’entreprise. Cela permet d’avoir
une compréhension exacte et complète des
techniques, des architectures et des métho-
dologies utilisées et permet de conserver le
contrôle du savoir-faire de l’organisation.
Cela garantit ainsi qu’il n’y a pas de
perte de savoir et que même une
organisation large peut appliquer
des procédures éprouvées de
manière régulière et systéma-
tique. Un point essentiel pour la qualité et la productivité du
développement de logiciels.
Une organisation bien établie
de MDA peut ainsi fournir un
modèle du savoir-faire de déve-
loppement, tout en maintenant et
en automatisant un référentiel de
ces meilleures pratiques pour les
développements futurs. Evidemment, le
retour sur investissement est à la hauteur de
l’effort consenti dès cette phase. De ce savoir
découlent les principaux modèles définis, les
relations entre les modèles puis enfin les sys-
tèmes cibles de ces modèles.
Cette méthode implique une véritable ingé-
nierie de transformation des modèles. En
haut de la pyramide se place un méta modè-
le, qui permet de définir les modèles des
modèles. Juste
en dessous se
trouve le modélisateur
des modèles UML, puis enfin le modèle qui
est une forme abstraite du réel, soit l’objet
lui-même. Les outils MDA permettent ainsi de
traduire un modèle vers un autre contenu, par
le biais d’XML (XMI). Ces échanges doivent
être bijectifs. Ainsi à une classe Java, par
exemple, correspond une classe UML.Les
méta modèles permettent de différencier la
forme abstraite d’un modèle métier, de sa
modélisation purement technique. Les
modèles métiers sont PIM (Platform Indepen-
dant Model) alors que les modèles tech-
niques sont des PSM (Platform Specific
Model). A un moment donné, doit s’effectuer
la fusion entre ces différents modèles, pour
réaliser pratiquement le développement et le
déploiement. C’est là que divergent les diffé-
rentes approches des différents produits pré-
sents sur le marché.
Les " puristes " modélisent même cette
fusion au niveau des modèles business. En
jargon, on l’appelle le Fat Modelling ou
modélisation sémantique. Elle représente
une piste intéressante que devrait, par
exemple, suivre le prochain outil de dévelop-
pement de SUN Microsystems, affublé du
doux nom de Jackpot.D’autres réalisent cetteopération au niveau des modèles techniques.
" C’est une version moderne du L4G " com-
O bjecteering
Softw are,
un pionnierdu M D A
Objecteering/Softeam Software est un
des pionniers de l’approche MDA. Cet
éditeur a sorti son premier produit
supportant cette approche en … 1991.
Depuis cette date, l’éditeur met en
avant cette approche pour ses pro-
duits, comme son logiciel
Objecteering/ UML qui permet de
construire les profils UML destinés à
implémenter les outils de transforma-
tion automatique de modèles, de
génération de code et d’automatisa-
tion du processus de développement.
Cette suite suit strictement les
recommandations de l’OMG et permet
de mettre en place toute l’ingénierie
de transformation de modèles. Une
version pour les développeurs JAVA a
été présentée lors du dernier JAVA-
SCOPE. Cette version permet de
marier l’environnement Eclipse au
support des modèles et à la généra-
tion du code. Accompagné du support
d’un ensemble de design patterns, du
support de génération EJB, de la
génération de tests pour JAVA et EJB,
ce package automatise et maintien la
cohérence des travaux de développe-
ment pour la technologie JAVA, tant
au niveau des modèles, que du code
et de la documentation générée.
mente Olivier De Vecchi. Sodifrance a choisi
une autre approche avec une fusion à l’aide
de template au niveau du générateur de
code, soit à un niveau plus bas que lesmodèles techniques. ■
Bertrand Garé
Finance
Manufacturing E-Commerce
Telecom
HeailhCare
More…
Transportation
Space
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 6/53
G U I D E D ES LO G I CI ELS
Programmez N°49 • JANVIER 2003
2
P A N O R A
M AADD-ONS
Aivosto Oy VB Friend 2 non par langage DYNADATA Visua l DlgS tretch 1.1 oui par langage Novalys VIS UAL G UARD 7.50 non par IDE
BASES DE DONNEES
4D.SA. 4ème Dimension 6.8 oui SGBDR DataMirror Transformat ion Server V4R2 ou V4R6 non SGBDR
DB /XML Transform V2R7M0 non SGBDR IC lus ter V3R5 ou V3R0 non SGBDR Constella r Hub V3.6.1 non SGBDR
DOCUMENTUM Documentum 5 oui par langage Embarcadero Europe DB Artisa n 7.0.0 non SGBDR
Emba rca dero P erforma nce Center 1.7.2 non SGBDR e-XMLMedia Repository 2 oui SGBD FileMaker France FileMa ker P ro 6 oui SGBDR
FileMa ker Server 5.5/6.0 oui SGBD FileMa ker P ro Unlimited 6 oui S G B DR
FileMa ker Developer 6 oui SGBD iAnywhere Solutions SQL Anywhere S tudio 8.0.2 oui SGBDR IBM DB 2 Universa l Da ta base 8.1 oui SGBDR Information Builders WebFOCUS 4.3.6 oui
par langage iWa y Softwa re 5.1 oui SGBD My SQL My SQL SGBDR- Libre/Open source PostgreSQL Inc PGSQL SGBDR- Libre/Open source QUEST SOFTWARE TOAD 7.3 non SGBDR Raining Data France D3 7.2.1 non SGBD Software & Process DB Artisa n 7.0 non SGBD SOFTWARE AG Ada bas 7.4 non par langage
Ta mino 4.1 non SGBD SYBASE Ada ptive S erver Enterprise 12.5 non SGBDR
COMPILATEURS
4D.SA. 4D Compiler 6.8 oui Comp ilateurs multi-p lateforme INTEL Intel C+ + Compiler 7.0 non Comp ilateurs multi-p lateforme INTEL Intel Fortra n Compiler 7.0 non Comp ilateurs multi-p lateforme National Instruments La bWindows/CVI 6.0 non Comp ilateurs par langage
LES IDE
Apple Computer Mac OS X Developer Tools 2.0.1 non IDE BEA sytems Weblogic Workshop 7 non IDE dédiéau web BORLAND Borla nd J B uilder 8 oui Librairies Multiplateform e
Borla nd Delphi S tudio 7 oui
Borla nd Kylix 3 oui Langages objet Crystal decisions Crysta l reports 9.0 IDE IBM WebS phere S tudio 5 oui IDE ILOG ILOG J Configura tor 2.0 oui IDE
ILOG CP LEX 8.0 IDE ILOG J Rules 4.0 IDE
IONA Technologies Orbix E2A Applica tion Server P la tform 6.0 non Langages Objet Kelua Ka wa na 4 oui IDE
Ka wa na 4 oui La ng a ges Objet
Lyria Leonardi 2
Merant P VCS P rofessiona l 7.5 oui Suites logicielles P VCS Dimensions 7.2 oui suites log ic ielles
METROWERKS Europe Cod eWarrior Development S tudio for Symb ian OS 2 IDE CodeWarrior Wireless S tudio 7 IDE CodeWarrior for P alm OS Pla tform 9 IDE CodeWarrior for Mac OS, Professional Edition 8 IDE
Microsoft Visua l S tudio .NET 2002 oui IDE NETMANAGE Rumba 7.1 oui IDE Novell Novell exteNd Workbench 4.1 non IDE dédiéau web OmniMark Technologies OmniMark S tudio 6.3 non Langages script Oracle Ora cle J Developer 9.0.3 non IDE
Ora cle9i J Developer 9.0.3 non IDE Ora cle9iAS P orta l 9.0.3 oui IDE
PC SOFT WINDEV 7.5 oui IDE PROLIFICS P rolifics P a nther 4.6 non IDE
P rolifics J AM 7.35 non IDE
QNX SOFTWARE SYSTEMS MOMENTICS PROFESS IONAL EDITION 6.2 non IDE Raining Data France Omnis S tudio 3.2.1 non IDE multi- p late- forme
mvDesigner 2.0 non S G B D
Société Nom Logiciel Version v.française Categorie logiciels
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 7/53Programmez N°49 • JANVIER 2003
23
Société Nom Logiciel Version v.française Categorie logiciels
SUN MICROSYSTEMS S un ONE S tudio 4.0 oui Langage multi-p lateforme S un ONE S tud io co mmuna uty ed itio n 4.0 Langage multi-p lateforme S un ONE S tudio Mobile edition 4.0 Langage multi-p lateforme
Sunopsis S unopsis v3 3.1 oui IDE SYBASE P ower B uilder 8.0 non IDE TogetherSoft Together ControlCenter 6.02 non IDE
VERSATA VLS developp.a utomatiq ue 5.5 oui Suites logic ielles P LEWorkflow 5.5 oui suites logicielles
LANGAGES
MAGIC SOFTWARE ENTERPRISES Magic eDeveloper 9.3 oui Librairies Multiplateform e National Instruments LabVIEW 6.1 oui Langage multi-p lateforme
LIBRAIRIES/API
ALADDIN FRANCE HAS P 4 11.1 non Librairies Multiplateform e P RIVILEGE LM 2.01 non Librairies Multiplateform e
Attachmate myEXTRA! S ma rt Co nnecto rs vers 7.1 (vers n°2) non Lib rairies développ ement ComponentOne ComponentOne s tudio Entreprise non Librairies Multiplateform e DYNADATA DlgS tretch for MFC 2.0 non Librairies developp ement Engenuity Technologies J LOOX Visua liza tion S uite 3.0 oui Librairies Graphiques
J LOOXG is 2.0 non Librairies Graphiques J LOOXLa yout 3.0 oui
Librairies Graphiques J LOOXTelecom 2.0 oui Librairies Multiplateform e EXPWAY B inXML-TV 1.2 non Librairies Multiplateform e
B inXML-Wave 1.0 non Librairies Multiplateform e B inXML-Net 1.0 non Librairies Multiplateform e
ILOG ILOG J Views 5.0 Librairies Graphiques Infragistics Infra g is tics NetAdvantage 2.0 non Librairies Multiplateform e IONA Technologies Orbix E2A Web Services Integra tion P la tform 5.1 non Librairies developp ement Macrovision FLEXlm 8.2 non Librairies Multiplateform e National Instruments Mea surement S tudio 6.0 non Librairies Multiplateform e Novalys P B-LINK 7.0 oui Librairies developp ement Oracle Ora cle9iAS TopLink 9.0.3 non Librairies Multiplateform e
Ora cle9iAS TopLink 9.0.3 non Librairies developp ement OXYMEL OFC Charts 1.1 oui Librairies Graphiques
OFC Reporting 1.2 oui API multimedia OFC Connection 2.1 oui Lib rairies développ ement OFC P ublishing 2.1 oui API multimedia
Red Hat France Red Ha t Linux Advanced S erver 2.1 non Lib rairies développ ement Rogue Wave Software S ource P ro Edition 4 non Librairies Multiplateform e Software FX Cha rt FX for .NET 6.0 oui Librairies Graphiques
Cha rt FX Internet 5.5 oui Librairies Graphiques Cha rt FX for Visua l Ba s ic 5.1 oui Librairies Graphiques Cha rt FX for Delphi 5.0 oui Librairies Graphiques
OUTILS DE DEBUGS ET D'OPTIMISATION
Aivosto Oy P roject Ana lyzer 6 non Outils d' opt imisation VB Wa tch 1 non Outils d' opt imisation
Compuware DevP artner 7.0 non Debugs IBM Tivoli NetView 7 oui Outils d' opt imisation Ideo Technologies QAWiza rd 1.6 non Outils d e test et montée en c harge KAPITEC SOFTWARE Web P erforma nce Tra iner 2.5 non Outils d e test et de montée en charge LIUtilities Inc WinTasks 4 P rofess iona l 4.21 non Outils d' opt imisation Parasoft J test 4.5 non
CodeWizard 4.2 nonC+ + Test 2.1 non Outils d e test et montée en c harge Insure+ + 6.1 non Debugs
QUEST SOFTWARE B enchma rk Fa ctory 3.3 non Outils d e test et montée en c harge S itra ka J P robe Suite 4.0 non Outils d' opt imisation
Rational Software Rationa l Robot V2002 non Outils d e test et montée en c harge Rationa l P urifyP lus V2002 non Outils de memo ire et de thread
Rogue Wave Software ATS 2.3 non Outils d' opt imisation Software & Process McCa be 7.1 non Debugs
OUTILS DE DEPLOIEMENT
Athena Global Services Record Now Ma x 4.0 oui Out ils déplo iement s locaux DYNADATA CD Ma gic La uncher 1.2 oui Installateurs classiques eNGENUITY Technologies Inc. J LOOX Visua liza tion S uite 3 Out ils déplo iement s locaux
J LOOXTelecom 2 Out ils déplo iement s locaux Installshield Ins ta llshield Developer 8.0 8.0 oui Installateurs classiques
KAPITEC SOFTWARE Ins ta llAnywhere 5.0 non Outi ls réseaux e t Web MAGIC SOFTWARE ENTERPRISES Magic Applica tion Server 9.3 oui IDE OmniMark Technologies OmniMark S ever Engine 6.3 non Outi ls réseaux e t Web
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 8/53
G U I D E D ES LO G I CI ELS
Programmez N°49 • JANVIER 2003
4
P A N O R A
M AProgress Software SonicMQ 4.02 non Outi ls réseaux e t Web
SonicXQ 1.5 non Outi ls réseaux e t Web PROLIFICS XMLink 2.5 non Outi ls réseaux e t Web QNX SOFTWARE SYSTEMS MOMENTICS S TANDARD EDITION 6.2 non Outi ls réseaux e t Web TogetherSoft Together ControlCenter 6.02 non Outi ls réseaux e t Web
OUTILS DE DOCUMENTATIONS ET DE MAINTENANCEAivosto Oy ActiveXplorer 4 non -CAST CAS TApplica tion Mining S uite 4.2 -
DYNADATA Visua l Resource Trans la tor 2.0 oui -
National Instruments DIAdem 8.0 non -
novalys VIS UAL EXP ERT 5.0 non -
QUEST SOFTWARE Knowledge Xpert for P L/S QL 6.2 non IDE Soamaï Wincap 4.9.1 oui -
SUN MICROSYSTEMS S ta r Office 6.0 oui -
TogetherSoft Together ControlCenter 6.02 non -
OUTILS DE PROJETS ET DE MODÉLISATION
Computer Associates All Fus ion Component Modeler 4.1 non -All Fus ion Da ta Model Va lida tor 4.1 non -
All Fus ion Erwin Da ta Modeler 4.1 non -All Fus ion P rocess Modeler 4.1 non -
Compuware Optima lJ 2.02 non IDE Unifa ce 8.3 non IDE
Embarcadero Europe ER/Studio 5.5.0 non -Ra pid S QL 7.0.0 non -
e-XMLMedia XMLizer 2 oui -Media tor 2 oui -
Ideo Technologies TestTrack P ro 5.0 oui -
Surround S CM 1.1 non -
IONA Technologies Orbix E2A Web Services Integra tion P la tform 5.1 non IDE KAPITEC SOFTWARE MagicDraw 5.5 non -MAGIC SOFTWARE ENTERPRISES Magic eB usiness P la tform 9.3 oui -
Novalys P OWERLIB 8.0 oui IDE Objecteering Software Objecteering/UML 5.22 non -
Objecteering/UML for C# 5.22 non -Objecteering/UML for J a va 5.22 non -Objecteering/UML Req uirements 5.22 non -
Rational Software RAtiona l XDE P rofess iona l V2002 non -Ra tiona l Unified P rocess V2002 non -Ra tiona l Rose V2002 non -
Soamaï Becubic 2 oui -
Soft Concept Ethnos 3.6 oui -Software & Process Describe 5.8 non -
ER/Studio 5.5 non -
SYBASE P ower AMC 9.5 oui -
TELELOGIC DOORS -
TogetherSoft Together ControlCenter 6.02 non -
OUTILS POUR LE WEB
4D.SA. 4D WebSTAR 5.2 oui IDE dédiéau web ADOBE SYSTEMS FRANCE Adobe G oLive 6.0 oui IDE dédiéau web
Adobe Web Collec tion 6.0 oui IDE dédiéau web Arisem Group Arisem Watch Edition V3.2 oui IDE dédiéau web
Arisem Media Edition V3.2 oui IDE dédiéau web Athena Global Services eS ca n /Ma ilSca n 3.5a non IDE dédiéau web BERNARD D&G TurboDemo Version 2 oui IDE dédiéau web Digifactory DigiContent 2.0.73 oui IDE dédiéau web e-XMLMedia XForms Engine 2 oui IDE dédiés au web KAPITEC SOFTWARE CodeCha rge S tudio 1.0 non IDE dédiéau web Macromedia Dreamwea ver MX oui IDE dédiéau web
Fla sh MX oui IDE dédiéau web S tudio MX oui IDE dédiéau web
MEDIAPPS Net.P orta l 5.0 oui IDE dédiéau web Net.S yndica te 4.0 oui IDE dédiéau web Net.EAI 4.0 oui IDE dédiéau web
Merant Mera nt Colla ge 3.1 oui IDE dédiéau web NETMANAGE Rumba Web-to-Host 4.2 oui IDE dédiéau web Novell Novell exteNd Composer 4.0 non IDE dédiéau web
Novell exteNd Director 4.1 non IDE dédiéau web ORACLE Ora cle9iAS P orta l 9.0.3 oui IDE dédiéau web
PA Productions mes-sta tistiq ues.com 1 oui IDE dédiéau web PC SOFT WEB DEV 1.5 oui IDE dédiéau web Rogue Wave Software Web S ervices 1.03 non IDE dédiéau web
Société Nom Logiciel Version v.française Categorie logiciels
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 9/53Programmez N°49 • JANVIER 2003
25
Société Nom Logiciel Version v.française Categorie logiciels
OUTILS POUR LES SYSTÈMES EMBARQUÉS ET MOBILES
iAnywhere Solutions Mana ge Anywhere S tudio 4.5 non Out ils pour les systèmes emb arqués et m ob iles Mail Anywhere S tudio 3.0.2 non Out ils pour les systèmes emb arqués et m ob iles
QNX SOFTWARE SYSTEMS NEUTRINO 6.2 non Out ils pour les systèmes emb arqués et m ob iles Rational Software Rationa l Rose Rea lTime Edition V2002 non Out ils pour les systèmes emb arqués et m ob iles
Rational Software Rationa l Test Rea lTime V2002 non Out ils pour les systèmes emb arqués et m ob iles TELELOGIC Ta u - Out ils pour les systèmes emb arqués et m ob iles TUXIA Tuxia Linux
SERVEURS D'APPLICATION
4D.SA. 4D S erver 6.8 -
Arkeia Arkeia 5 non -
BEA sytems Weblogic S erver 7 non -Weblogic P orta l 7 non -Weblogic Integra tion 7 non -
BORLAND B orla nd Enterprise S erver 5.1 non Langages Objet iAnywhere Solutions mB usiness S tudio 2.0.2 non -
IONA Technologies Orbix E2A Applica tion S erver P la tform 6.0 non -
Macromedia Coldfus ion MX oui -
NETMANAGE OnWeb 5.2 -
Novell Novell exteNd Applica tion S erver 4.0 non -
OmniMark Technologies S ureSpeed 2 non -Oracle Ora cle9i a pplica tion S erver 9.0.3 non
SUN MICROSYSTEMS S un ONE Applica tion S erver 7.0 non
SYBASE Enterprise Ada ptive S erver 4.1 non
ZOPE Corporation Zope Libre/open source
SYSTÈMES EXPLOITATION
MandrakeSoft Mandra ke Linux 9.0 oui Linux RED HAT Red Ha t Linux Advanced S erver 2.1 Linux
Red Hat Linux 8.0 Profes sional 8.0 Linux Red Ha t Linux 8.0 P ersona l 8.0 Linux
SuSE SuSE Linux
TRAVAIL EN GROUPE
Arisem Group Arisem Knowledge Edition V3.2 oui suites logicielles IBM Lotus Notes &Domino 6 oui autres outils Rational Software Rationa l C lea rCa se V2002 non CVS Soft Concept NETSurvey suites logicielles TELELOGIC Synergy CVS
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 10/53
6
GUI D E D ES LOGICIELS- IN D EX
Programmez N°49 • JANVIER 2003
L O G I C I
E L S
EEm barc ade ro P e rfo rm anc e C e nter Em barc ade ro Euro pe
Enterprise Ada ptive S erver S YBAS E
ER/S tud io Emba rca dero Europe
ER/S tudio S oftwa re &P rocess
eS ca n /Ma ilS ca n Athena G loba l S ervices
Ethnos S oft C oncept
FFileMa ker Developer FileMa ker France
FileMa ker P ro FileMa ker France
FileMa ker P ro Unlimited FileMa ker France
FileMa ker S erver FileMa ker France
Fla sh Ma cromedia
FLEXlm Ma crovis ion
HHAS P 4 ALADDIN FRANC E
IIC lus ter Da ta Mirror
ILOG C P LEX ILOG
ILOG J C onfigura tor ILOGILOG J Rules ILOG
ILOG J View s ILOG
Infra gis tics NetAdva nta ge Infra gis tics Europe
Ins ta llAnywhere KAP ITEC S OFTWARE
Ins ta lls hield Developer 8.0 Ins ta llS hield S oftw are
Limited
Insure+ + P a ra soft
Intel C+ + Co mpiler Intel
Intel Fortra n Compiler Intel
iWa y S oftw a re Informa tion Builders
JJ LOOX Vis ua liza tion S uite Eng enuity Tec hnolog ies
J LOOX Visua liza tion Suite eNG ENUITY Tec hnolog ies Inc .
J LOOXG is Engenuity Technolog ies
J LOOXLa yout Engenuity Technolog iesJ LOOXTelecom Engenuity Technolog ies
J LOOXTelec om eNG ENUITY Tec hnolog ies Inc .
J tes t P a ra soft
KKa wa na Kelua
Ka wa na Kelua
Kno wled ge Xpert fo r P L/S QL QUES T SOFTWARE
LLa bVIEW Na tiona l Ins truments
La bWindows/C VI Na tiona l Ins truments
Leona rdi Lyria
Lotus Notes &Domino IBM
MMa c OS X Developer Tools Apple C omputerMa gic Applica tion S erver MAG IC SOFTWARE
ENTERP RISES
Ma gic eBus iness P la tform MAG IC S OFTWARE
ENTERP RISES
Ma gic eDeveloper MAG IC S OFTWARE
ENTERP RISES
Ma gicDra w KAP ITEC S OFTWARE
Ma il Anywhere S tud io iAnyw here S olutions
Ma na ge Anyw here S tudio iAnyw here S olutions
Ma ndra ke Linux Ma ndra keS oft
mB us iness S tudio iAnyw here S olutions
McC a be S oftwa re &P rocess
Mea surement S tud io Na tiona l Ins truments
Media tor e-XMLMedia
Mera nt C olla ge Mera ntmes-s ta tis tiq ues .com PA P roduc tions
MOMENTICS QNX S OFTWARE
Logiciels Societé Logiciels Societé
4D C ompiler 4D.S A.
4D S erver 4D.S A.
4D WebS TAR 4D.S A.
4ème Dimens ion 4D.S A.
AActiveXplorer Aivos to OyAda ba s S OFTWARE AG
Ada ptive S erver Enterprise S YBAS E
Adobe G oLive ADOBE S YS TEMS
FRANCE
Adobe Web C ollec tion ADOBE S YS TEMS
FRANCE
All Fus io n C omp one nt Mo de le r C omp ute r As s oc ia te s
All Fus io n D a ta Mo d el Va lid a to r C o mp ut er As s o cia t es
All Fus io n Erw in Da ta Mo de le r C omp ute r As s oc ia te s
All Fus ion Proces s Modeler C omputer As soc ia tes
Arisem Know ledge Edition Arisem G roup
Arisem Media Edition Arisem G roup
Arisem Wa tch Edition Arisem G roup
Arkeia Arkeia
ATS Rogue Wa ve S oftw a re
BB ecubic S oa ma ï
B enchma rk Fa c tory QUES T S OFTWARE
B inXML-Net EXP WAY
B inXML-TV EXP WAY
B inXML-Wa ve EXP WAY
B orla nd Delphi S tudio B ORLAND
B orla nd Enterprise S erver B ORLAND
B orla nd J B uilder BORLAND
B orla nd Kylix B ORLAND
CC + + Test P a ra soft
C AS TApplic ation Mining S uite C AS T
C D Ma gic La uncher DYNADATAC ha rt FX for .NET S oftwa re FX
C ha rt FX for Delphi S oftwa re FX
C ha rt FX for Visua l Ba s ic S oftwa re FX
C ha rt FX Internet S oftwa re FX
C odeC harge S tudio KAP ITEC S OFTWARE
Co de Wa rrior Developm ent METROWERKS Europe
Studio for Symbian OS
Co de Wa rrior for Mac OS , METROWERKS Europe
P rofessional Edition
CodeWarrior for Palm OS P la t form METROWERKS Europe
C od eWa rrio r Wire le ss S tud io METR OWER KS Euro pe
C odeWiza rd P a ra soft
Coldfusion Macromedia
C o mp one nt One s tud io Ent re pris e C o mp one nt One
Europe Ltd.C ons tella r Hub Da ta Mirror
C rys ta l reports C rysta l Dec is ions
DD3 Ra ining Da ta Fra nce
DB/XML Tra ns form Data Mirror
DB2 Universa l Da ta ba se IBM
DBArtisa n Emba rca dero Europe
DBArtisa n S oftwa re &P rocess
Describe S oftwa re &P rocess
DevP a rtner C ompuw a re
DIAdem Na tiona l Ins truments
Dig iC ontent Dig ifa c tory
DlgS tretch for MFC DYNADATA
Documentum DOC UMENTUMDOORS TELELOG IC
Drea mw ea ver Ma cromedia
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 11/53Programmez N°49 • JANVIER 2003
27
Red Ha t Linux Ad va nc ed S erver RED HAT
Repos itory e-XMLMedia
Rumba NETMANAG E
Rumba Web-to-Hos t NETMANAG E
SS itra ka J P robe S uite QUES T S OFTWARES onicMQ P rogress S oftwa re
S onicXQ P rogress S oftwa re
S ource P ro Rogue Wave S oftw a re
S QL Anyw here S tudio iAnyw here S olutions
S ta r Office S UN MIC ROS YS TEMS
Studio Macromedia
S un ONE Applic atio n S erver S UN MIC ROS YS TEMS
S un ONE S tudio S UN MIC ROS YS TEMS
Sun ONE Studio communauty edition SUN MICROSYSTEMS
S un ONE S tud io Mo bile ed itio n S UN MIC ROS YS TEMS
S unops is v3 S unops is
S ureS peed OmniMa rk Technolog ies
S urround S C M Ideo Technolog ies
S uS E S uS E Linux AG
S ynergy TELELOG IC
TTa mino S OFTWARE AG
Ta u TELELOG IC
Tes tTra ck P ro Ideo Technolog ies
Tivoli NetView IBM
TOAD QUES T S OFTWARE
Together C ontrolCenter TogetherS oft
Together C ontrolCenter TogetherS oft
Together C ontrolCenter TogetherS oft
Together C ontrolCenter TogetherS oft
Trans forma tion S erver Da ta Mirror
TurboDemo B ERNARD D&G
Tuxia Tuxia
UUnifa ce C ompuw a re
VVB Friend Aivos to Oy
VB Wa tch Aivos to Oy
Visua l Dlg S tret ch DYNADATA
VIS UAL EXP ERT nova lys
VIS UAL G UARD nova lys
Visua l Resource Tra ns la tor DYNADATA
Visua l S tudio .NET Microsoft
VLS developp.a utoma tiq ue VERS ATA
WWeb P erforma nce Tra iner KAP ITEC S OFTWARE
Web S ervices Rogue Wave S oftw a reWEBDEV P C S OFT
WebFOC US Informa tion B uilders
Weblog ic Integra tion B EA sytems
Weblog ic P orta l B EA sytems
Weblog ic S erver B EA sytems
Weblog ic Workshop B EA sytems
WebS phere S tudio IBM
Winca p S oama ï
WINDEV P C S OFT
WinTa sks 4 P rofess iona l LIUtilities Inc
XXForms Engine e-XMLMedia
XMLink P ROLIFICS
XMLizer e-XMLMedia
ZZope C orpora tion Zope C orpora tion
Logiciels Societé
P ROFES S IONAL EDITION S YS TEMS
MOMENTICS QNX S OFTWARE
S TANDARD EDITION S YSTEMS
mvDes igner Ra ining Da ta Fra nce
myEXTRA! Sma rt Co nnectors Attac hmate
MySQL My SQL
NNET S urvey S oft C oncept
Net.EAI MEDIAP P S
Net.P orta l MEDIAP P S
Net.S yndica te MEDIAP P S
NEUTRINO QNX S OFTWARE S YS TEMS
No ve ll e xt eNd Ap plic a tio n S e rve r No ve ll
Novell exteNd C omposer Novell
Novell exteNd Director Novell
Novell exteNd Workbench Novell
OObjec teering/UML Objec teering S oftw a re
Objec teering/UML for C # Objec teering S oftw a re
Ob jec teering /UML for J a va Ob jec teering S oftw are
Obje c te erin g/U ML Re q uire me nts Obje c te erin g So ftw are
OFC C ha rts OXYMEL
OFC C onnec tion OXYMEL
OFC P ublishing OXYMEL
OFC Reporting OXYMEL
OmniMa rk S ever Eng ine OmniMa rk Technolog ies
OmniMa rk S tudio OmniMa rk Technolog ies
Omnis S tudio Ra ining Da ta Fra nce
OnWeb NETMANAG E
OptimalJ Compuwa re
Ora c le J Developer Ora c le
Ora c le9i a pplica tion Server Ora c le
Ora c le9i J Developer Ora c le
Ora c le9iAS P orta l Ora c le
Ora c le9iAS P orta l Ora c le
Ora c le9iAS TopLink Ora c le
Ora c le9iAS TopLink Ora c leOrbix E2A Applica tion Server Platform IONA Technologies
Orbix E2A Applica tion Server Platform IONA Technologies
Orbix E2A Web Se rvices Integration P latform IONA Tec hno log ies
Orbix E2A Web Se rvices Integration P latform IONA Tec hno log ies
PP B-LINK Nova lys
P G S QL P ostg reS QL Inc .
P LEWorkflow VERS ATA
P owe r AMC S YBASE
P ower B uilder S YBAS E
P OWERLIB Nova lys
P RIVILEG E LM ALADDIN FRANC E
P rojec t Ana lyzer Aivos to Oy
P rolifics J AM P ROLIFICS
P rolifics P a nther P ROLIFICSP VCS Dimens ions Mera nt
P VCS P rofess iona l Mera nt
QQAWiza rd Ideo Technolog ies
RRa pid S QL Emba rca dero Europe
Ra tiona l C lea rC a se Ra tiona l S oftw a re
Ra tiona l P urifyP lus Ra tiona l S oftw a re
Ra tiona l Robot Ra tiona l S oftw a re
Ra tiona l Rose Ra tiona l S oftw a re
R atio na l R os e Re alTime Ed itio n R atio na l S o ft wa re
Ra tiona l Test Rea lTime Ra tiona l S oftw a re
Ra tiona l Unified Process Ra tiona l S oftw a re
RAtiona l XDE P rofess iona l Ra tiona l S oftw a re
Record Now Ma x Athena G loba l S ervicesRed Ha t Linux 8.0 P ersona l RED HAT
Red Hat Linux 8.0 P rofess ional RED HAT
Logiciels Societé
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 12/53
8
G U ID E D E S E D IT E U R S
Programmez N°49 • JANVIER 2003
E D I T E U R S COMPUTER ASSOCIATES All Fusion Erwin Data Mode ler
14, avenue François Arago -BP 313 All Fusion P roces s Modeler
92003 Nanterre Cedex All Fusion Component Modeler
01 40 97 50 50 All Fusion Da ta Mode l Validato r
www.computerassociates.com
COMPUWARE OptimalJ1, avenue d e la Cristallerie DevPartner
92316 Sèvres c edex Uniface
01.41.14.20.40 www.compuware.fr
CRYSTAL DECISIONS Crysta l reports
62 bis, Avenue Andre M orizet
92643 Boulogne-Billancourt
+33 (0) 1 41 10 16 00 www.crystaldecisions.com
DIGIFACTORY DigiContent
20 bis, rue Henri Martin
92100 Bo ulogne Billancourt
01 47 72 19 30 http: //w w w.d igifa cto ry.fr
DATAMIRROR Trans forma tion S erverTour Ellipse 41 avenue Gambetta DB /XML Tra ns form
92928 Paris La Défense Cedex ICluster
01 55 70 36 87 Co nstella r Hubwww.datamirror.com
DOCUMENTUM Documentum
696 rue Yves Kermen
92658 Boulogne-Billancourt
01 55 20 22 00 www.documentum.fr
DYNADATA CD Magic Launcher
15-17 Av. Marc Sangnier Visua l Res ource Trans lato r
92390 Villeneuve la Garenne Visua l DlgS tretch
01 41 21 04 83 DlgS tretch for MFCwww.dynadata .com
EMBARCADERO EUROPE DBArtisan
Braywick House West, Windsor Road ER/S tud io
Maidenhead , BERKS, SL6 1DN6 UK Embarca dero P erformance
Center
441 628 684 435 Rapid SQLwww.embarcadero.com
ENGENUITY TECHNOLOGIES J LOOX Visua liza tion S uite1, rue Eugene Varlin, 92240 Malakoff J LOOXG is
[email protected] J LOOXLayout
01 49 65 32 70 JLOOXTelec omhttp://ww w.eng enuitytec h.co m
E-XMLMEDIA XMLizer
31 , avenue du Général Lec lerc Repository
92340 Bo urg-La-Reine Mediator
partena ire@e-xmlmed ia . fr XForms Eng inewww.e-xmlmedia.fr
EXPWAY B inXML-TV
17, rue du Pont aux Choux B inXML-Wa ve
75003 PARIS B inXML-Net
01 44 54 29 28 www.expway.tv
FILEMAKER FRANCE FileMaker P ro
24, bd d es Iles FileMaker S erver
92442 Issy-les-Moulineaux FileMaker P ro Unlimited
0810 252 747 FileMaker Deve loperwww.filemaker.fr
IANYWHERE SOLUTIONS SQL Anywhe re Stud io
27 rue du Colonel Pierre Avia mBusiness Studio
75508 Paris Cedex 15 Mana ge Anywhe re Stud io
Merlin YAMS SI Ma il Anyw here S tudiowww.ianywhere.com
Editeurs Logiciels Editeurs Logiciels
4D.SA. 4ème Dimension60, rue d' Alsace 4D WebS TAR92110 Clichy 4D Co [email protected] 4D S erverwww.4d.fr
ADOBE SYSTEMS FRANCE Ado be G oLive
Tour Maine Mo ntparnasse - BP 14 Ado be Web Co llection75755 Paris cedex 15 01.56.54.99.00 www.adobe.fr
AIVOSTO OY P roject Ana lyzerKylänvanhimmant ie 16 i, VB Wa tc h00640 Helsinki, Finlande ActiveXplorervbs hop@a ivos to.c om VB Friendwww.aivosto.com
ALADDIN FRANCE HASP4205, avenue Georg es C lémenceau P RIVILEG E LM92024 Nan ter re cédex Samuel Ametepe www.ealaddin.com
APPLE COMPUTER Mac OS X Deve loper Too ls12, Avenue d' Océanie
ZA de Courtaboeuf 3 91956 Les Ulis Cedex 01 69 86 34 00 http: //de velope r.a pple.c om/too ls/
ARISEM GROUP Arise m Wa tc h Edition131, Rue Saint Denis - 75001 Paris Arisem Knowledg e Editioninfo @a ris em.c om Aris em Med ia Ed itio nwww.arisem.com
ARKEIA Arkeia41, rue Delizy Immeub le Les Diamants- Batiment B 93692 Pantin Cedex 01 48 10 89 89 http: //w w w.a rkeia .fr
ATHENA GLOBAL SERVICES Record Now Max20, allée Lo uis C almanovic eSca n /MailSca n
93320 Les Pavillons sous bois 01 55 89 08 88 www.athena-gs.com
ATTACHMATE myEXTRA! Sma rt Co nnec tors
62 b is avenue And réMo rizet 92643 Boulogne cedex www.attachmate.fr
BEA SYSTEMS Weblogic S erverTour Manhatan 6 place de l' Iris Weblogic P ortal92095 Paris La Défense Cedex Web logic Integra tion01 41 45 70 00 Web logic Worksho pwww.beasys.fr
BERNARD D&G Turbo Dem oAm Heilbrunnen 47 D-72766 Reutlingen Allemagne 0049.71.21.310.731 www.turbodemo.comDistrib uépar Athena Global services
BORLAND Borland J BuilderTour Franklin La Défense 8 Bo rla nd Delphi S tudio92042 Paris La Défense Cedex B orland Kylixw ww.borla nd .fr B orla nd Enterpris e S erver
CAST CASTApplica tion Mining S uite
3, rue Marcel A llégo t 92190 Meudon 01 46 90 21 00 www.castsoftware.com
COMPONENTONE EUROPE LTD. ComponentOneOld Stocks, Nepcote Lane stud io EntrepriseFindon, West Sussex BN14 0SA Royaume Uni +44 (0) 1903 873555 www.componentone.com
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 13/53
MACROMEDIA Dreamweaver1 avenue Morane Saulnier Flash78140 Velizy Cedex Studiow ww.ma cromedia .fr C oldfus ion
MAGIC SOFTWARE ENTERPRISES Magic eDeveloper13 bis - rue d e l'Abreuvoir Magic eBusiness Platform92415 Courbevoie cédex Mag ic Applica tion Se [email protected]
MANDRAKESOFT Mandra ke Linux43 rue d'aboukir 75002 Paris Philippe Ambo n www.mandrakesoft.com
MEDIAPPS Net.Portal2 Plac e de la Défense-BP 423 Net.Syndicate92053 Paris La Défense cédex Net.EAI08 20 82 01 31 http: //w w w.m ed iapp s. fr/
MERANT PVCS Professional20 Avenue A ndréProt hin P VCS DimensionsParis La Défense 92927 Merant Co llagewww.merant.com
METROWERKS Europe Co deWa rrior DevelopmentRiehenring 175, 4058 Basel, Suisse Studio for Symbian OS0041 61 690 75 00 Co de Wa rrior Wireless S tudio
[email protected] CodeWarrior forw ww.metro werks .c om P a lm OS P la tfo rm
Co deWa rrior for Mac OS,Professional Edition
MICROSOFT Visua l S tudio .NET18 av d u Québec 91957 Courtaboeuf Cedex 1 0825 827 829 ww w.microso ft.com/franc e
MY SQL MySQLBangårdsgatan 8 S-753 20 Upp sala- Suède "Contact France:(0)1 43 077 099" www.mysql.com
NATIONAL INSTRUMENTS LabVIEWC.A. Paris-Nord - BP 217 La bWindo w s/CVI93153 Le Blanc-M esnil Cedex Meas urement Stud io01 48 14 24 24 DIAdemww w.ni.com/fra nce
NETMANAGE OnWeb53 Rue Raspail Rumba Web-to-Host92300 Levallois Perret Rumbawww.netmanage.fr
NOVALYS VISU AL EXPERT41 -43 rue Paul Bert VISU AL G UARD
92100 B oulogne Billancourt P OWERLIB
hotline : 01 41 31 82 82 PB-LINKwww.novalys.fr
NOVELL Novell exte Nd Workben chTour Framatome, 1 p lace de la coupo le Novell exte Nd92208 La Défense Applica tion Se rver01.47.96.60.05 Novell exteNd Co mpos erw ww.novell.com Novell exteNd Direc tor
OBJECTEERING SOFTWARE O bject eering/UML8 rue Germain Soufflot Objec tee ring/UML for C#78184 Saint Quentin-en- Yvelines Objec tee ring/UML for J a va01 30 12 16 60 O b j e c t e e r i n g /U M Lw w w.o bje cte ering .c om Req uirements
OMNIMARK TECHNOLOGIES OmniMark S ever Engine3bis, rue du Petit robinson OmniMark S tudio78 350 Jouy en Jo sas SureSpeed01.30.70.62.00 ww.omnimark.com
Editeurs Logiciels Editeurs Logiciels
IBM WebS phere Stud io2 avenue Gambett a Lotus Notes &DominoTour Descartes - La Défense 5 DB2 Universa l Data ba se92066 Co urbevoie Tivo li Net View ibm.c om/fr/so ftw a re/
IDEO TECHNOLOGIES Tes tTra ck P ro51 rue de Verdun Surround SC M92158 Suresnes Cedex QAWiza [email protected]
ILOG ILOG J Configurator9 rue de Verdun ILOG CP LEX94253 Gentilly Cedex ILOG J Rules0800 09 27 91 ILOG J Viewswww.ilog.fr
INFORMATION BUILDERS Web FOCU S2, rue Troyon iWay So ftwa re92316 Sèvres Cedex http: //w w w.informa tionbuilders. fr
INFRAGISTICS EUROPE Infragistics NetAdva ntag eThe Kinetic Business Centre
Theobald Street Elstree- Hertfordshire WD6 4PJ- Royaume Uni Tel: +44 (0) 800 298 9055 www.infragistics.com
INSTALLSHIELD SOFTWARE LIMITED Insta llshield Deve loper 8.0Kings House- 14 Orchard Street Bristol, BS1 5EH- Royaume Uni Tel: + 44 117-903- 0650 www.installshield.co.uk
INTEL Intel C+ + Co mpilerdist ribuépar OpenWay Intel Fortran Co mpilerLes Mont alets- 2 rue de Paris 92516 MEUDON Cedex 01 58 87 71 71
www.intel.com
IONA TECHNOLOGIES Orbix E2A7, place de la Défense Applica tion Se rver P latform92974 Paris La Défense Cedex Orbix E2A01 49 67 06 41 Applica tion Se rver P latformw w w.iona .fr Orbix E2A Web
Services IntegrationPlatformOrbix E2A Web ServicesIntegration Platform
KAPITEC SOFTWARE InstallAnywhere57, boulevard de l'Emb ouchure Web P erforma nce Trainer31075 Toulouse cédex 2 Cod eCha rge Studios a les @ka pitec .com Ma gicDra w www.kapitec.com
KELUA Kawana
5 rue Geoffroy Marie Kawana75009 Paris www.kelua.com
LIUTILITIES INC WinTa sks 4 P rofess iona lFarjemansgatan 15B 83131 Oste rsund - Suède http://w w w. liutilities .c om
LYRIA LEONARDI3, rue Galvani91741 Massy Cédex [email protected]
MACROVISION FLEXlmVision Ho use, Priory Court,Wellfield Road, Preston B rook,
Cheshire, WA7 3FR- UK [email protected]://ww w.ma crovision.c om
Programmez N°49 • JANVIER 2003
29
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 14/53
0
SOAMAÏ becubic235 avenue Le Jour se Lève Wincap92651 Boulogne Cedex [email protected]
SOFT CONCEPT Ethnos
71, cours Albert Thomas NETSurvey69447 Lyon cedex 03 04.78.54.64.00 www.soft-concept.com
SOFTWARE & PROCESS Describe10, avenue du Québec ; BP 116 McCabe91944 COURTABOEUF Cedex DBArtisan01 60 92 41 36 ER/S tud iowww.software-process.fr
SOFTWARE AG AdabasLe Panoramique, 5 Avenue de verdun Ta mino94204 Ivry sur Seine 01 49 87 43 00 www.softwareag.com
SOFTWARE FX Ch a rt FX for .NETBroad Quay House, Prince Street, Ch a rt FX Internet
Bristol, UK, BS1 4DJ Ch a rt FX for Visua l B a sic441 179 058 733 Ch a rt FX for Delphihttp: //fr.s oftw a refx.co m
SUN MICROSYSTEMS Sun ONE Stud io13 Av Mo rane Saulnier Sun ONE Application Server78140 Velizy Sun ONE Stud iow w w.sun.fr communa uty edition
Sun ONEStud io Mobile e ditionStar Office
SUNOPSIS Sunopsis v3Centre Scientifique Auguste Moiroux 64, Chemin des Mouilles 69130 Écully +33.(0)[email protected]
SUSE LINUX AG SuSEDeutschherrnstr. 15-19 D-90429 Nuremberg- Allemagne 49 911 740 530 www.suse.com
SYBASE Po wer AMC27 rue du Colonel Pierre Avia Ada ptive S erver Enterprise75508 Paris cedex 15 Enterprise Ada ptive Se rver01 41 90 41 90 Po wer Builderwww.sybase.fr
TELELOGIC Ta u6-8, rue de la Réunion Synergy91978 Court aboeuf Cédex DOORSwww.telelogic.com
TOGETHER SOFT Tog ether Co ntrolCenter104 Av. Albert premier Tog ether Co ntrolCenter
92563 Rueil Malmaison Tog ether Co ntrolCenter01 41 39 06 30 Tog ether Co ntrolCenterwww.togethersoft .com
TUXIA TuxiaHaunstetter Strasse 112 86161 Augsburg Germany.49 821 800 660
VERSATA VLSdevelopp.automatique13,rue Camille Desmoulins P LEWorkflow 92441 ISSY-les-Moulineaux + 33 1 58 04 27 87 www.versata.com
ZOPE CORPORATION ZopeLafayette Technolog y Center 513 Prince Edward Street
Fredericksburg, VA 22401- USA001.540.361.1700 www.zope.com
Editeurs Logiciels Editeurs Logiciels
ORACLE Orac le J Developer15 bd Ch de Gaulle Oracle9i ap plica tion S erver92715 Co lomb es cédex Oracle9iAS P ortal0800 905 805 Ora cle9 iAS Top Linkwww.oracle.fr
OXYMEL OFC Cha rtsBel Air Building- 58 rue Pottier OFC Repo rting78150 Le Chesnay OFC Connectiono fc s upp ort @o xy me l. co m OFC P ub lis hingwww.oxymel.com
PA PRODUCTIONS mes-statistiques.com57, boulevard Gaston Serpette 44 000 Nantes 02 40 16 03 12http://ww w.mes -sta tistiques .co m
PARASOFT J tes tChâteau de Sainte Assise CodeWizard77240 Seine Port C + + Tes tinfo @pa ra so ft-fr.c om Ins ure+ +http://ww w.pa raso ft.com
PC SOFT WINDEV216, rue des Escarceliers WEBDEVBP 3019 34034 M ontpellier 04.67.032.032 www.pcsoft.fr
POSTGRESQL INC. P G S Q LPO Box 1648 Wolfville Nova Scotia Canada B0P 1X0 www.pgsql.com
PROGRESS SOFTWARE SonicMQ3, place de Saverne SonicXQ01 41 16 16 00 www.progress-software.fr
PROLIFICS P rolifics P anthe r7, place de la Défense XMLink92974 Paris La Défense P rolifics J AM01 46 92 72 83 www.prolifics.com
QUEST SOFTWARE TOAD98, Route de la Reine Benchma rk Factory92100 Boulogne-Billancourt Know led g e Xper t f orPL/SQL01.41.31.96.96 Sitraka J P robe Suitewww.quest.com
QNX SOFTWARE SYSTEMS MOMENTICS7 rue Alb ert Einstein P ROFES S IONAL EDITION77420 Champs sur Marne MOMENTICS01 64 61 81 61 S TANDARD EDITIONw w w.q nx.com NEUTRINO
RAINING DATA FRANCE Omnis S tudioTour Gallieni 1 D378 /8 0, avenue du Général de Gaulle mvDesigner
[email protected] w.rainingda ta.c om/fr
RATIONAL SOFTWARE RAtiona l XDE P rofessiona l1, place charles de Gaulle Rational Rose78067 St Quentin en Yvelines Rational Robotinfo @ra tio na l.c om Ra tio na l P urifyP luswww.ra t iona l. com/france Ra tiona l Unified P roces s
Rational ClearCas eRationa l Rose Re alTime Edition
Ra tiona l Tes t Rea lTime
RED HAT FRANCE Red Ha t Linux Advanc ed S erver
171, avenue Georg es C lémenceau Red Hat Linux 8.0 P rofess ional
92024 Nanterre Cedex Red Hat Linux 8.0 P ersonalwww.redhat.fr
ROGUE WAVE SOFTWARE So urce Pro6, rue Henri sainte-Claire Deville Web S ervices
92563 Rueil Malmaison ATSwww.roguewave.com
G U ID E D E S E D IT E U R S
Programmez N°49 • JANVIER 2003
E D I T E U R S
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 15/53
D
OSS
E
Web Services:
ça fonctionne !
D
OSS
E
6
DOSS
ER
Programmez N°49 • JANVIER 2003
Web services
I
Web Services, ce terme revient très souvent dans les conversations.Faut-il en avoir peur ou au contraire l’appréhender positivement ? Entre les doutes et les espoirs de cette technologie, les avis divergent. À Programmez ! la réponse est claire :on y croiténormément.C’est tellement vrai, qu’il est évident que les Web Services seront le
cœur du système d’information de l’entreprise dans les mois et années àvenir. Laissons la technolo-
gie mûrir et s’étoffer. Les Web Services souffrent beaucoup de leur jeunesse :manque d’outilsd’administration,manque de compétences,difficultéàmaîtriser les protocoles de base, standards non figés, sécuritéencore aléatoire, retour d’expériences quasi inexistant, etc. La liste des défauts semble longue et souvent justifiée.Cepen- dant, il ne faut pas tout voir en noir (et en- core moins en blanc). Le Web Service dans l’entreprise fonctionne (partiellement).Mais quoi que puissent en dire les édi- teurs, l’implémentation d’une architectu- re Web Service nécessite un renouvelle-
ment de sa méthodologie et des compétences techniques internes ! Car,maîtriser les protocoles SOAP et les couches XML,ce n’est pas la même chose que de développer en VB.Et ça, l’entreprise, et les développeurs,doivent s’en rendre compte très rapi- dement.Pour maîtr iser le Web Service, il faut impérativement maîtriser les couches basses.Même si des solutions promettent une
création en quelques clics,on ne peut pas faire l’économie de ces dernières.Dans ce dossier, j’ai voulu démystifier le Web Service,en apportant des réponses claires et précises aux problé- matiques actuelles.On vous prouvera que cela fonction- ne.C’est dès maintenant que l’on doit commencer àréflé- chir sur les Web Services,car lorsque le marchésera lancé, il deviendra impossible de l’arrêter.Mieux vaut essuyer quelques plâtres que de rater l’évolution de son environnement applicatif.Car dans ce cas,c’est toute la communication avec son environnement extérieur
que l’entreprise mettra en péril ! François Tonic
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 16/53
1• WEB SERVICES :LA SÉCURITÉ EST-ELLE ASSURÉE ?
Programmez N°49 • JANVIER 2003
37
Si les Web Services occupent beaucoup
d’éditeurs et de développeurs,un problème,pourtant crucial, a été
jusqu’àprésent peu ou pas abordé: la sécuritédes services.À cette question,il existe quelques réponses.Sont-ellessuffisantes ? Sont-elles efficaces ?
Si on peut s’interroger sur l’intérêt du WebServices (WS),on peut tout autant s’interroger surles mécanismes de sécurité que les éditeursconsentent à y implémenter. Il y a quelquessemaines,IBM et Microsoft décidaient de s’y atteler,
en proposant une architecture et un calendrier.Cen’est encore qu’un projet. D’autres acteurs dumarchétel que RSA Security tentent
de proposer leur propresolution.Sun semble pourle moment en retrait dumouvement sécuritaire.
IBM etMicrosoft
Il est certainque les WSsouffrent de
deux maux :la standardi-sation encoretimide et lasécurité.Or,la sécu-rité est unedes clés del’essor de cesapplicationsnouve l legénération.IBM,Microsoft
et Verisign
décident de s’allier et de travailler ensemble sur lesspécifications du Web Services Security (WS-Secu-
rity). Ce travail en cours de réalisation doit, àterme,aboutir à une normalisation.Le WS-Securitydoit permettre une communication sécurisée entredeux WS.Pour ce faire,le travail des trois parte-naires s’appuie notamment sur les spécifications duW3C, sur le cryptage et la signature des docu-ments XML (XML Encryption et XML Signature).Le travail ne s’arrête pas là.Il est prévu d’inclure sixnouvelles spécifications d’ici à l’été 2003.L’objectif d’IBM et de Microsoft est de fédérer etd’unifier les différents mécanismes utilisés pour lasécurisation des Web Services.A cela,ils ajoutent :le WS-Policy (définissant les capacités et
contraintes des politiques de sécurité),le WS-Trust(modèle pour les rapports de confiance),WS-Pri-vacy (pour la confidentialité),WS-SecureConversa-tion (pour gérer et authentifier le messaging entreles parties),WS-Federation (pour définir le rapportde confiance dans un environnement hétérogène)et enfin le WS-Authorization (gestion des droitsd’accès aux données du Web Service).Propos de Véronique Dupont Wargny (Microsoft)"Grâce à cet accord (NDLR :Web Services Securi-ty),on s’abstrait des règles.Il permet de définir lasécurité entre deux Web Services.Il définit des spé-cifications de haut niveau pour être abstrait detoute technologie.L’objectif est de fédérer les dif-
férentes technologies. On a les briques de basetelles que SOAP,WSDL,XML,… L’industrie les uti-lise.Le WS-I est là pour garantir la compatibilitéentre les Web Services.Maintenant,on travaille surla sécurité. Ces spécifications seront soumises àla normalisation à la fin de l’année. La questionde la sécurité est une question récente. Aprèsavoir compris l’utilité des Web Services, la sécu-rité devient le point central de la réflexiondes entreprises. Aujourd’hui, les DirecteursInformatique sont intéressés par les Web Services.Pour le client, la sécurité ne vient pas enpremier.Le Web Services est d’abord à utiliser en
interne."
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 17/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
8
Web services
La sécurité selon Sun
Sun croit beaucoup aux Web Services et sa derniè-re conférence développeurs (Web Camp Paris) àporté sur ce sujet-là.La sécurité n’a occupé qu’unepetite partie des deux journées.Dans les WS,il y a
le protocole SOAP.Le messaging utilise ce proto-cole.Donc,il faut pouvoir sécuriser son utilisation.Pour ce faire, les messages SOAP sont sécurisésavec Dsig.Il utilise aussi les signatures électroniquesXML. Avec SOAP 1.1,on bénéficie d’un nouveauSecurity Header et on peut signer arbitrairementdes éléments d’un message SOAP.Les spécificationsde signature et de cryptage XML,s’appuient sur lesnotions de clé publique et privée.Donc,si je cryp-te avec la clé publique de la personne A,seule lapersonne A pourra décrypter les données via sa cléprivée.Bref,un fonctionnement basique.Même sile niveau de sécurité n’est pas toujours assuré,lecryptage donne un minimum de confidentialité aux
données et la signature garantit l’intégrité et l’iden-tité de l’auteur (en théorie).
WS et .NET
De plus,n’oublions pas que les Web Services fontpartie de .NET de Microsoft.Et donc,il était impor-tant de proposer (enfin) des spécifications de sécu-rité sérieuses.On peut parfaitement restreindrel’accès à un WS.Il suffit dans ce cas de disposer d’unmécanisme d’authentification du client.En soi,la sé-curité d’un WS ne diffère pas de celle d’un site Web(dixit Microsoft). Ce qui n’est pas forcément la
meilleure des protections ! Mais on peut tout demême limiter l’accès.Si on connaît avec exactitudeles ordinateurs ayant accès aux WS,on peut mettreen œuvre IPSec (quid du spoofing et autre usurpa-tion d’identité ?).Dans un réseau interne,oui cetteméthode semble viable,par contre,pour un accèsà distance,des doutes sont permis.Quand on nepeut connaître toutes les adresses IP,il faut se ré-soudre à utiliser un système d’authentification.Unedes méthodes est de se servir de SSL pour crypterles données. Le système d’authentification Win-dows est possible,mais uniquement dans des Intra-net et encore,cette solution n’est pas conseillée,vous pouvez aussi passer par Microsoft Passport (à
utiliser prudemment toutefois).On peut déjà utili-ser du SSL et du HTTPS pour bénéficier d’un ni-veau de sécurité acceptable.On risque de perdreun peu en performances.Mais pour un usage " uni-versel ",mieux vaut implémenter des standards.Enthéorie, l’usage du SSL garantit l’intégrité des don-nées et son cryptage.Donc pour des données sen-sibles,le SSL paraît incontournable.On peut aussiutiliser les mécanismes internes à SOAP et à XMLpour protéger les données et garantir son intégri-té ainsi que l’identité de l’auteur et du destinataire.Microsoft propose quelques mécanismes, viaASP.NET et .NET Framework.Dans ASP.NET,on
peut envoyer et recevoir des messages de Web Ser-
vices sous SSL.Il accepte les mécanismes d’authen-tification sur http,sans oublier le support de Pas-sport.IBM avec son Web Services Toolkit (WSTK) 3.1 in-troduit de nouveaux services de sécurité,commel’implémentation du SOAP Security Token et la Si-
gnature Électronique.Ce sont des composants desspécifications du WS-Security. Le SOAP Security Token aide à identifier l’envoyeur d’un messageSOAP.
Et UDDI ?
On parle et on reparle de la sécurité des Web Ser-vices, mais n’aurait-on pas oublié d’aborder unpoint sensible :UDDI ! C’est tout de même l’an-nuaire qui stocke les informations relatives aux ser-vices. Les mécanismes et les bases de donnéesUDDI doivent être sécurisés.Il doit y avoir une authentification mutuelle entre
les registres UDDI et le fournisseur du WS. Onpeut utiliser le XML Dsig pour signer les publica-tions faites dans les bases UDDI.Cette signaturene peut être changée (sauf par une attaque de typeDoS). La première version d’UDDI ne proposaitaucune sécurité.Il a fallu les dernières spécifications(parues en début 2002) pour voir les premiers ser-vices de sécurité d’UDDI ! Cette absence mettaità mal la crédibilité des Web Services.
Que faire ?
Actuellement,il n’y a aucun miracle à attendre.La
diversité des Web Services ne facilite pas l’homo-généité des solutions de sécurité. Pour évitertoute incompatibilité,il vaut mieux se rabattre surles technologies standard du XML,de SOAP et duhttp (via https de préférence) et SSL.Encore faut-il les implémenter correctement.L’initiative d’IBM,Microsoft et VeriSign est intéressante et combleun vide.Si dans un Intranet et un réseau local, lesrisques sont moindres, il paraît (encore) hasar-deux d’utiliser les Web Services dans le cadre d’unExtranet ou dans une activité eBusiness et danstout processus d’échange de données sensibles.Les mécanismes de sécurité standardisés dans lesdifférentes couches technologiques ne suffisent
pas à assurer la sécurité.La tentation est granded’utiliser des solutions propriétaires ou des mé-thodes trop liés à un langage ou une plate-forme.Le Web Service doit être vu et utilisé sur n’impor-te quel système.Les risques ne sont pas à minimi-ser, surtout quand on pense que les messagesSOAP passent au travers des firewall… Bref,pru-dence, prudence, prudence.Avant toute implé-mentation, un audit sécurité sera sans aucundoute indispensable. ■
François Tonic
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 18/53Programmez N°49 • JANVIER 2003
39
Si vous êtes àla recherche d’unenvironnement de développementpour élaborer des services Web vouspouvez vous tourner les yeux fermés vers Delphi Entreprise.Nous allons vousexpliquer comment mettre au pointun service Web,et comment utiliser un service Web externe àpartir de Delphi.
Le succès de Borland tient pour une grande part àla neutralité affichée vis à vis des plates-formes
(Kylix sous Linux).Les compilateurs sous-jacentsde l’éditeur sont puissants et l’interface utilisateurest splendide et complète.Les services web promettent une véritable révolu-tion dans l’échange de données entre entreprises.Votre stock pour un produit est au minimum.Vouscontactez le service Web de votre fournisseur ha-bituel et passez commande. Ce mécanisme estrendu possible,via des protocoles standard,commeSOAP et XML.
Préliminaire
Vous devez avoir accès à un serveur HTTP.Pour mapart,j’utilise IIS sous Windows 2000 sur le port 81(le port 80 étant déjà occupé par un serveur proxyHTTP).
Création d’un service WebExécutez Delphi 6. Dirigez-vous vers le menuFile/New/Other.
Vous devez sélectionner SOAP SERVER APPLICA- TION de l’onglet WebServices.
Attention :choisissez CGI STAND ALONE EXE-CUTABLE.
Un WebModule est automatiquement créé avectrois composants :le SOAP DISPATCHER,qui diri-ge les messages vers les composants adéquats ;leSOAP INVOKER,qui sert de moulinette aux mes-sages SOAP entrants et sortants ; et le
TWSDLHTMLPublish,qui nous permettra de pu-blier les services.
2• CRÉATION D’UN SERVICE WEBAVEC DELPHI ENTREPRISE ?
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 19/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
0
Web services
Chaque service possède une interface unique.Celle-ci se compose en une unité d’implémentationde cette interface et une unité d’implémentationdes méthodes pour cette interface.
unit MyWebServ_intf;
interface
uses
Types, XSBuiltIns;
type
IDelphiWebService = interface(IInvokable)
['{9B442069-86E9-4A50-A629-6F7E64340FAF}']
function FirstDelphiWebService: String; stdcall;
end;
implementation
uses
InvokeRegistry;
initializationInvRegistry.RegisterInterface(TypeInfo(IDelphiWebService), '', '');
end.
Rien de très compliqué ! Le code GUID['{9B442069-86E9-4A50-A629-6F7E64340FAF}'] aété généré, via la combinaison de touchesCTRL+SHIFT+G.
unit MyWebServ_impl;
interface
usesMyWebServ_intf, InvokeRegistry;
type
TDelphiWebService =class(TInvokableClass, IDelphiWebService)
public
function FirstDelphiWebService : String; stdcall;
end;
implementation
function TDelphiWebService.FirstDelphiWebService : String;
begin
result := 'My first Delphi WebService !';
end;
initialization
InvRegistry.RegisterInvokableClass(TDelphiWebService);
end.
Et c’est tout ! Comme nous avons demandé de
créer un "CGI STAND ALONE EXECUTABLE",copiez l’exécutable sous l’arborescence adéquatede votre serveur HTTP.Dans mon cas,il s’agit deE:\inetpub\Scripts.Pour tester le dialogue http avecle service,il suffit d’invoquer :http://hyperion:81/scripts/project1.exe/wsdl/Idel-phiWebService.
Le fichier WSDL s’affiche.
Code client d’appel au service Web
Relancez Delphi 6 entreprise et choisissez l’optionWeb Services importer de l’onglet WebServices.
Encodez l’adresse http://hyperion:81/scripts/pro- ject1.exe/wsdl/IdelphiWebService.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 20/53Programmez N°49 • JANVIER 2003
41
Vous devez choisir le composant THTTPRIO de lapalette des WebServices.Déposez celui-ci sur votreformulaire ainsi qu’un bouton de commande.
Certaines propriétés de THTTPRIO doivent êtreabsolument fixées.
Le WSDLLOCATION est toujours le même :http://hyperion:81/scripts/project1.exe/wsdl/Idel-phiWebService
Il faut ensuite fixer les propriétés Service et Port.Enfin le code d’appel,très simple,sera le suivant :
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2_3;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage((HTTPRIO1 as IDelphiWebService).First
DelphiWebService);
end;
end.
Compilez et exécutez le projet2.
Le message My first Delphi WebService s’affiche…
Un seul regret…
Créez un service Web serveur à l’aide de Delphi 6entreprise est un peu plus complexe qu’avec VisualStudio dot NET.L’appel du service du côté clientest par contre aussi simple.Borland signe ici une
excellente performance.Un seul regret :le prix trèscoûteux de Delphi 6 Entreprise qui est de 3.339Euros. ■
Xavier Leclercq
3• UN SERVICE WEB EN JAVA ?Comment développer,tester et déployer très facilementdes Services Web en java ?
Il existe de nombreuses possibilités pour atteindre cet objectif.
(1) Le Web ServicePack Java de SUN
La première,est évidemment de télécharger le JavaWeb Services Developer Pack de Sun,disponible àl’adresse http://java.sun.com/webservices/down-load.html.Les API disponibles sont notamment lessuivantes :
- Les JAXR (Java API for XML Registries) qui per-
mettent d’accéder à des annuaires (des serveursUDDI) ;- Les JAXB (Java API for XML Binding) qui transfor-ment un objet XML en objet Java et inversement ;
- Les JAXM (Java API for XML Messaging) qui ser-viront d’interface au format ebxml ;- Les JAX/RPC (Java API XML-based RPC) qui sontcapables de communiquer avec un service Web àl’aide de SOAP ou XMLP ;- Les JAXP (Java API XML Parsing) qui analyserontle format XML, indépendamment du parseur ;Cette solution comporte également ANT et Tom-cat.
TomCat est un serveur d'applications et Apache Tomcat est particulièrement intéressant,lui-mêmeissu du projet Apache Jakarta,également libre dedroits et avec son code source disponible.
Ant fait lui aussi partie du projet jakarta.Il s’agit
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 21/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
2
Web services
d’un outil de compilation, basé sur Java et doncmulti plate-forme.On peut le qualifier en quelquesorte de "Make" portable,mis à part qu’Ant ne né-cessite aucune écriture de scripts.En effet,il se basesur un fichier XML décrivant la configuration(buildfile). En résumé,Ant reproduit le mode de
fonctionnement d'un Makefile en XML,afin d'auto-matiser les tâches de déploiement,mais aussi decompilation.Ant est devenu un standard et commeil est soumis à la licence de la fondation apache,ilest gratuit. Sous Linux la trilogie"Ant+JDEE+Emacs" constitue un environnementde programmation exceptionnel.
(2) La solution libreApache-SOAP
Apache-SOAP est une implémentation Open Source libre de droits (sous licence Apache) du protocole SOAP 1.1.A l'aide d'Apache-SOAP,et d'autres outilsque nous allons décrire, vous pouveztrès facilement concevoir et déployerun Web Service !
Apache-SOAP est livré sous la forme d'un fichiersoap.jar.Pour déployer un service Web du côté ser-veur,vous avez également besoin d'un serveur d'ap-plications (nous prendrons un serveur Java). Il enexiste de très nombreux,comme BEA WebLogicApplication Server,IBM WebSphere,iPlanet Application Server,JRun.Un serveur d'applications particulièrement intéres-sant,nous l’avons déjà cité,est Apache Tomcat, lui-même issu du projet Apache Jakarta, égalementlibre de droits et avec son code source disponible.Actuellement, l'architecture Apache-SOAP estfonctionnelle mais n'est pas aussi riche que d'autres
implémentations "bout en bout" de services Web,
comme SunONE ou dot NET.En effet,il n'est,parexemple, pas possible d'appeler directement unservice,via son adresse.Vous devez passer par unrouteur RPC commun (http://localhost:8080/soap/servlet/rpcrouter UneCommande).Si vous
désirez une compatibilité avec le protocole SOAPde Microsoft il vous faudra appliquer un patch.Apache-SOAP ne distingue pas non plus le servicede son fournisseur.Vous n'avez pas de répertoirede services,sans passer par des logiciels annexes.Concrètement,si une entreprise veut solliciter unWeb Service susceptible de lui fournir des car-touches d'encre à la demande,elle doit connaîtreson adresse.Autrement dit,le logiciel client ne pas-sera pas par un stade de recherche préalable.Tan-dis qu'avec le Web service Pack de SUN,ou le SDK d’IBM, ou dot NET, le client consommateur ne
connaît pas nécessairement l'emplacement phy-sique du service.Un répertoire UDDI (un cata-logue on-line de services Web) lui proposera auto-matiquement un service compatible avec sesbesoins.Ajoutons qu'avec Apache-SOAP,il est très facile dedéployer un nouveau service du côté du serveur,mais par contre l'écriture du client, sans l'aided'autres outils,ou d'une routine réutilisable,n'estpas un exercice facile. En fait, le support WDSLmanque à Apache-SOAP.En langage clair,la trans-formation d'une classe ou d'un Java Bean en servi-ce,n'est pas automatique.Remarquez qu'un certain
nombre d'outils permettent de réaliser ce travail :
Page d’accueil duserveur Tomcat.
Page d’accueil du serveur Apache-SOAP.
Test du serveur d’applications J ava.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 22/53Programmez N°49 • JANVIER 2003
43
par exemple WASP Developer Lite,en collabora-tion avec Forte,ou bien le WSDL Toolkit d'IBM.
Installation
Bien entendu,vous devez avoir au préalable un ser-
veur Apache httpd fonctionnel et un Kit de déve-loppement Java convenablement installé (comme le JDK 1.3 d'IBM).Le téléchargement de Tomcat peut s'effectuer àl'adresse http://jakarta.apache.org tandisqu'Apache-SOAP est disponible à l'adressehttp://xml.apache.org/soap.Apache-SOAP est livréavec une série d'exemples.Pour les faire fonction-ner vous devez télécharger d'autres jar :xerces.jar(http://xml.apache.org/serces-j),mail.jar (http://java.sun.om/products/javamail/) ,activation.jar (http://
java.sun.com/products/beans/glasgow.jaf.html).Sanscompter que certains exemples nécessitent l'instal-lation libre des langages de scripts vb script et java
script.La principale difficulté,lors de l'intégration de l'en-semble de ces logiciels,est d'encoder un CLASS-PATH qui englobe tous les jar.Pour les paresseux,une possibilité est de rassembler les jar sous l'ar-borescence d'un répertoire commun.Si l'installation de Tomcat s'est bien passée,vousdisposez d'une page d'accueil à l'adressehttp://lo-calhost:8080/index.html. Vous pouvez aussi at-teindre la page d'accueil d'Apache-SOAP en tapanthttp://localhost:8080/soap/admin/index.html.
Utilisation des exempleslivrés avec Apache-SOAP
Ouvrez un shell sur votre serveur et encodez(droits root) : java org.apache.soap.server.ServiceManagerClient
http:/ / localhost:8080/ soap/ servlet/ rpcrouter deploy
DeploymentDescriptor.xml
Le fichier DeployementDescriptor est localisé sousl'arborescence de chaque répertoire d'exemple.Leservice Web est maintenant déployé et vous pou-vez le vérifier en cliquant sur LIST à l'adressehttp://localhost:8080/soap/admin/index.htmlou en-core,en tapant : java org.apache.soap.server.ServiceManagerClient
http:/ / localhost:8080/ soap/ servlet/ rpcrouter list
En restant sur cette page d'administration, vouspouvez obtenir la description du service Web encliquant sur son lien.Cette description n'est riend'autre que l'équivalent (ou presque) du fichier De-ploymentDescriptor.xml.
Du côté du serveur(le fournisseur)
L'élaboration d'un service Web du côté du serveurest très simple.Voici le code d'un tel JavaBean :
public class BonjourService {
public String getMe (String VotreNom) {
return "Bonjour : "+VotreNom;
}
}
getMe est la méthode à exporter,via l’accesseurget.Nous devons élaborer notre propre fichier De-ployementDescriptor.xml.Comme il n'est pas pos-sible d'attaquer directement le service,sans passerpar le routeur RPC,il est obligatoire de spécifierun identifiant :
<isd:service xmlns:isd="http:/ / xml.apache.org/ xml
-soap/ deployment"id="urn:Bonjour">
<isd:provider type="java" scope "Application"
methods="getMe">
<isd:java class="BonjourService" / >
</ isd:provider>
Le "scope" est ici de type "Application," ce qui si-gnifie qu'une instance du service Web est partagée.En indiquant "page/request" cela signifierait qu'unenouvelle instance est créée,à chaque appel du rou-teur RPC.
Du côté du client(le consommateur)
Le code du client génère une requête en XML (un
client Java,mais bien entendu ce n'est pas une obli-
Page d’administration du serveur Apache-SOAP.
L’enregistrement d’un service en ligne de commande est assez fastidieux...
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 23/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
4
Web services
gation et le consommateur pourrait se construireà l'aide d'une multitude d'autres langages).Vouspouvez réutiliser votre code,ce qui représente unavantage.Voici un extrait d’un code potentiel :
import java.io.* ;
import java.net.* ;import java.util.*;
import org.apache.soap.util.xml.* ;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
public class Client {
static XMLParserLiaison xpl = new XercesParserLiaison ();
public static void main (String[] args) throws Exception {
...
/ / Construction de l'appel.
Call call = new Call ();
call.setTargetObjectURI ("urn:Bonjour");
call.setMethodName ("getMe");
call.setEncodingStyleURI(encodingStyleURI);
Vector params = new Vector ();
params.addElement (new Parameter("message",String.class, message, null));
call.setParams (params);
Response resp = call.invoke (/ * router URL */ url, / * ac
tionURI */ "" );
…
(3) Le Kit IBMWebSphere SDK
IBM a évidemment mis au point sa propre solution.Celle-ci se nomme Web Service Toolkit (WSTK).
Celui-ci est disponible pour Linux et Windows.Pour la petite histoire, l’enregistrement pour obte-nir le WSTK se réalise,via une base UDDI...WSTK contient un environnement runtime client,et lesAPI nécessaires au développement et au déploie-ment de services Web en java (API Java UDDI,APISOAP,etc.).Ce WSTK est celui employé par WebS-phere.L’adresse directe de téléchargement est lasuivante :http://www6.software.ibm.com/dl/wstk/wstk-p
(4) Une combinaisongagnante :Forte et Waspdeveloper Lite.
WASP Developer Lite,en combinaison avec Sun Forte Java, permet de dévelop- per, tester et déployer très facilement des Services Web en java.Pour le dévelop- peur java,il s’agit d’un environnement de développement formidable et évidem- ment multi plate-forme !
Pour télécharger la dernière version de Forte,sur-fez à l’adressehttp://www.sun.com/forte/ffj/.Il exis-
te une version "Community" gratuite et une ver-sion "Forte for java enterprise edition"commerciale.Les deux outils intègrent les logicielsspécifiques à J2EE (EJB,RMI,Corba et JNDI).La dif-férence existant entre la version entreprise et laversion Community,est la possibilité de travailleren équipe et de déployer des applications (dévelop-pement d'applications d'entreprise (EJB)).Autrement dit, la version Community est suffisantepour concevoir des applications ou des applets Javalocales.Tandis que la version entreprise vous per-mettra d’appeler des méthodes d’objets situés surdes serveurs distants.
La version Forte for java enterprise edition (FFJEE)est téléchargeable gratuitement,mais vous ne pour-rez pas l’utiliser plus de 60 jours (et elle coûte en-viron 1900 euros).Remarquez qu’il existe un Fortepour Java, mais aussi un Forte pour Fortran ouC++.WASP Developer Lite 3.x est fonctionnel sousLinux et Windows,tout comme Sun Forte Java 3.Que se soit sous Windows,ou sous Linux,votremachine doit être cadencée autour du Ghz et équi-pée d’au moins 256 Mo de RAM. Il s’agit d’uneconfiguration vraiment banale pour un développeuret même plutôt bas de gamme de nos jours.Pour-quoi 256 Mo de RAM au minimum ? Parce que sin-
cèrement, inutile d’essayer d’exécuter cet en-semble logiciel avec moins de 256 Mo de RAM.
Installation
Nous supposerons que vous avez déjà installé aupréalable la version 3 de Sun Forte Java. Pour ins-taller WASP Developer Lite,commençons par nousenregistrer sur le site à l’adresse :http://www.systi-net.com/products/wasp_lite/index.html.Attention :votre "username" sera identique à votre adresse e-mail. Vous pourrez ainsi recevoir un avertissementpar e-mail lorsque le logiciel sera mis à jour.Après
avoir accepté les termes de la licence d’utilisation,
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 24/53Programmez N°49 • JANVIER 2003
45
vous pouvez télécharger le fichier zip pour Win-dows ou tar.gz pour Linux.
Exécutez maintenant Forte et dirigez-vous vers lemodule de mise à jour Tools / Update Center.Sé-lectionnez "installation manuelle de modules".
Sélectionnez maintenant ”wasp_developer_lite_3.1 final.nbm” que vous avez extrait de l’archive.Vousdevez accepter le certificat de la "mise à jour".L’étape de l’installation est terminée et Forte redé-marre.
Le serveur d’application
Pour tester votre service Web vous allez avoir be-soin d’un serveur Web,d’un serveur d’applications
Java et d’un module SOAP. Vous pouvez parexemple utiliser Apache,Tomcat et Soap Apache.WASP Developer Lite 3.1 intègre tout ceci,ce quipermet au développeur de développer,tester et dé-
ployer très rapidement une solution (le logiciel pro-posé dérive d’Apache).Vous devez activer un ser-veur WASP. Dirigez-vous dans le panneau del’explorateur et sélectionnez le menu contextuel"ADD" du nœud "WASP servers".Validez le choixproposé pour un “embedded Wasp Server”, enchoisissant un numéro de port tel que "6060".
Un service Web de base
Choisissez "New Class" ”HelloWorld1” aveccomme nom de package ”wasp_examples.hello1”
et complétez le code comme ceci :
/ *
* HelloWorld1.java
*
*/
package wasp_examples.hello1;
/ **
*
* @author XAVIER LECLERCQ
* @version
*/
public class HelloWorld1 {
protected String message = "Hello World!";
/ ** Creates new HelloWorld1 */
public HelloWorld1() {
}
public String getMessage() {
return message;
}
}
Compilez cette classe.
Le déploiement
Dans la fenêtre "explorer",vérifiez que le serveurWASP est démarré (RUNTIME) puis sélectionnezle menu contextuel Tools / Quickly Deploy As WebService,en sélectionnant la classe [FILESYSTEMS].
Un assistant apparaît. Il vous demande en premierlieu de localiser le serveur (ici le serveur WASPlocal du nom de "hyperion" avec un port 6060).Lereste consiste à remplir des informations au sujetde ce Service Web.Vous pouvez prendre les valeurspar défaut.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 25/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
6
Web services
Le code client
Choisissez "New Web Services WebServiceClient"”HelloWorld1Client”,avec comme nom de packa-ge ”wasp_examples.hello1.client” et complétez lecode comme ceci :
(ne vous occupez pas des panneaux présentés parl’assistant et validez les défauts)
/ * This is a WASP client.
* HelloWorld1Client.java
*/
package wasp_examples.hello1.client;
/ / imports of WASP classes
import org.idoox.webservice.client.WebServiceLookup;
import org.idoox.wasp.Context;
/ / import your Web Service interface
public class HelloWorld1Client {
/ *** @author XAVIER LECLERCQ
* @version 1
*/
/ ** Creates new HelloWorld1Client */
public static void main (String args[]) throws Exception {
HelloWorld1 hello;
String serviceHost = null;
try {
serviceHost = java.net.InetAddress.getLocal
Host().getHostName();
}catch (java.net.UnknownHostException exception) {
exception.printStackTrace();
System.exit(-1);
}
String serviceURI ="http:/ / " +serviceHost +":6060";
serviceURI = serviceURI + "/ HelloWorld1/ ";
try {
/ * Crée une instance de lookup */
WebServiceLookup lookup = (WebServiceLookup)
Context.getInstance(Context.W EBSERVICE_LOOKUP);
/ * Crée le "proxy" * /
hello = (HelloWorld1)lookup.lookup(serviceURI,
HelloWorld1.class, serviceURI);
/ * Imprime le message en retour */
System.out.println(hello.getMessage());
}catch(Exception exception) {
exception.printStackTrace();
System.exit(-1);
}
}
}
/ * interface pour le proxy */
interface HelloWorld1 {
String getMessage();
}
Pour visualiser le dialogue http et SOAP entrevotre client et le serveur,exécutez SOAP SPY.
Pour conclure
Il reste encore quelques défauts au produit. Parexemple, si vous renommez le package alors quevous avez déjà déployé le service Web,celui-ci de-viendra invalide.Mais dans l’ensemble,avec un PCde développement assez costaud,vous prendrez un
réel plaisir à développer très rapidement un Servi-ce Web. ■
Xavier Leclercq
A PROPOS DES SERVICES WEBLes services Web représentent la brique de base de l'Internet de demain. Ils permettent à l'utilisateur
(au consommateur) de rassembler des informations en provenance de nombreuses sources, sans se
préoccuper de l’architecture matérielle ou logicielle sur laquelle repose le serveur. Les services Web
s’appuient sur le protocole SOAP pour réaliser cette inter-opération. SOAP est ouvert et le
développeur peut écrire des clients SOAP accédant à des services Web, sans se soucier de
l'architecture sous-jacente. Inversement, un client peut consommer des services Web serveurs quelle
que s oit sa provenance. Le Web n'est plus considéré comme une co uche de présentation ( HTML),
mais comme un canal neutre de communication (SOAP/XML) et d'intégration d'applications.
Retenons qu’il est très aisé d e me ttre en œ uvre un se rvice Web (q ue se soi t avec WASP Develo per Lite
en Java ou en C# avec dot net). C’est ici que se situe la véritable révolution de la programmation : la
simplic ité e t le pragmatisme p ar rapport à la complexité d’approches no n interopérables , comme
RMI (Remote Method Invocation), ne fonctionnant que dans un environnement Java de bout en bout,
CORBA/IIOP ( Comm on Object Requ est Broker Architecture), p rotocole très difficile à m ettre en
œuvre, DCOM (Distributed Component Object Model) restreint au monde Windows des Intranets.
La création proprement dite d’un service Web est une étape très simple. Si vous avez déjà un
compo sant mé tier, pou r le transforme r en u n se rvice Web, il suffit avec DOT NET d’ajouter u ne
déclaration WebMethod pour chaque fonction du service…
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 26/53Programmez N°49 • JANVIER 2003
47
Impensable dans un dossier
Web Services de ne pas avoir une interview de Micro- soft.Programmez ! a longue- ment questionnéAlain Le Hegarat de Microsoft Fran- ce.Il tord le cou àcertaines idées reçues et replace le
rôle de Microsoft dans les standards des Web Services.
Programmez ! :O ù en est M icrosoft a u niveau des Web Services ? Alain Le Hegarat :Depuis fin 97,Microsoft a en-tamé une véritable mutation vers XML.Au delà dela représentation des données,nous nous sommesattachés à intégrer des interfaces de services Webdans tous nos produits :Office XP possède un kitqui permet de consommer des services Web avecVBA. Cela est disponible depuis déjà plus d’un an..
Tous les logiciels d’entreprise ont suivi cette mêmeévolution : SQL Server expose ses procéduresstockées sous forme de services Web XML ; il enest de même pour Exchange Server ou bien enco-re pour BizTalk Server.Enfin,le Framework .NET
est natif dans Windows .NET Server,ce qui en faitune plate- forme d’exécution parfaite pour ces in-frastructures.Et comme le Framework .NET per-met de s’affranchir des langages de développement,des développeurs Cobol,par exemple,peuvent par-faitement exploiter cette plate- forme.Ce peutêtre important du point de vue de l’entreprise,quipeut exploiter leur savoir-faire. Un dernierexemple,un peu décalé par rapport à ces problé-matiques d’intégration en entreprise, c’est Map-Point.NET.MapPoint est un produit bien connu,construit autour d’une base de données géogra-phique.Dans sa forme traditionnelle,il permet à sesutilisateurs de localiser des destinations et de créer
des trajets routiers. Nous avons en juin dernierrendu les fonctionnalités de MapPoint disponibles,via des services Web ! N’importe quelle sociétésouhaitant intégrer des fonctionnalités de ce typedans ses applications,peut désormais les consom-mer. Bref,toutes les productions logicielles de Mi-crosoft intègrent désormais,au minimum,des re-présentations XML et la plupart du temps desinterfaces publiques SOAP.
P ! :Curieusement, on crit ique encore M icrosoft pour son image de fermeture, n’est-ce pas quelque peu bizarre ?
ALH :Oui,d’autant plus que nous sommes un ac-
teur très actif dans les organismes de standardisa-
tion.Historiquement,cette démarche a démarrédès 1995,avec la vague Internet.Notre investisse-ment dans l’émergence des standards DHTML,oubien encore CSS,a modifié de façon durable le vi-sage du Web. Cet investissement se poursuit defaçon encore plus importante dans le domaine dela standardisation des services Web ! Est-ce avoirun esprit de fermeture ? Depuis SOAP 0.9,en 1998,Microsoft a multiplié les coopérations avec degrands clients ou des acteurs majeurs de l’indus-trie.Cette démarche a permis d’accélérer l’émer-gence d’éléments techniques fondamentaux, telsque WSDL,SOAP,WS-Security ou WS-Transaction.
J’en profite pour prendre également comme
exemple notre rôle actif au sein de WS-I.org.Cetteorganisation vise à définir les critères d’interopéra-bilité entre les implémentations de services Web.
P ! : Il existe un cer ta in fl ou concernant les Web Services. Les services Web des dif férent s édi - teurs, IBM, M icrosoft ou Sun, sont- i ls iden- tiq ues ? Existe-t -il un risque d’incompat ibilité ent re les di fféren ts services des diver s éditeur s ? ALH :Ce n’est pas du tout le cas.Chaque éditeur propose desplates-formes de développementet d’exécution de services Web qui
lui sont propres.Du point de vuede l’éditeur, ces efforts seraientvains, si il ne s’assurait pas d’uneparfaite intégration avec les stan-dards :il prendrait alors le risquede se décrédibiliser totalement.Parexemple, notre coopération avecIBM est forte sur les propositionsde standardisation, mais noussommes en concurrence sur l’im-plémentation ; ces efforts n’au-raient pas de sens si les 2 plates-formes ne tenaient pas la promes-se de l’intégration.C’est pour cela,
entre autres,que IBM et Microsofton été actifs dans la création duWS-I.org (Web Services Interope-rability Organization).Cet organis-me a pour mission d’assurer l’in-teropérabilité entre les plates- formes de servicesWeb des éditeurs.Le WS-I propose des profils etdes retours d’expériences pour les aider.En résu-mé,le noyau des Web Services repose sur des stan-dards et les implémentations diffèrent,tout en res-tant intégrables entre elles.
P ! :On ent end ici ou là des aff irmat ions selon
lesquelles, la France risquerait de manquer de
4• INTERVIEW DE ALAIN LE HEGARAT,RESPONSABLE GROUPE MARKETIN G (DIVISION DÉVELOPPEURS .NET – M ICROSOFT FRANCE)
BIOGRAPHIE
Alain Le Hegarat est responsable du
marketing division développeurs .NET
chez Microsoft France depuis 200 1. Sa
mission est d'accélérer l 'adoption de la
plate-forme .NET et des outils associés.
Avant d'occupe r cette pos ition, il a m is
sur pied l’équipe avant- ventes, dédiée
aux opérateurs de té lécommunication.
De 1996 à 1998, Alain Le Hegarat était
en charge du marketing d’Internet
Explorer après avoir assuré le
marketing technique de l’offre serveur
d’entreprise. Avant de rejoin dre
Microsoft France, il occupait un poste
de marketing technique sur des
systèmes distribués chez Unisys France.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 27/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
8
Web services
compétences XM L / SOAP et Web Services dans les mo is à veni r. Pensez-vous que cela sera réel- lement le cas ? Ou bien do it -on éviter tout dis- cours alarmiste et peu fondé? ALH :Le propre des services Web,c’est qu’ils re-présentent une démarche incrémentale par rap-
port aux infrastructures Internet.Si on les considè-re du point de vue de la programmation, ilsreprésentent une énorme simplification des archi-tectures distribuées.De plus,les environnementsde développement tendent à réduire les tempsd’apprentissage.Il en résulte que la France n’a pasde raison de présenter un retard particulier sur leplan technique par rapport à d’autres pays. Lescompétences existent et les organismes de forma-tion sont suffisamment nombreux et à jour,pourrépondre à la demande.Cependant,il y a une réel-le différence de comportement entre le marchéfrançais et d’autres marchés.Les Anglo-saxons selancent assez facilement sur la mise au point de
nouvelles chaînes de valeurs,en acceptant le risquede possibles échecs.En France, le dialogue entredécideurs techniques et fonctionnels est moins flui-de.Dire que l’on manquerait de compétences,c’estse tromper de problème ! Prenons l’exemple d’undéveloppeur Visual Basic.En quelques semaines,ilmaîtrisera VB.NET et pourra intégrer ses applica-tions à d’autres,via des services Web.Le plus grosrisque que nous courrons,c’est celui d’un faux dé-part,en prenant des positions trop attentistes,ra-tant ainsi la création de nouvelles chaînes de valeur.
P ! :Revenons au cœur de not re discussion : les
Web Services. À écout er les média ou ce qui se dit dans des salons, le po int faibl e des Web Ser- vices serait les outil s d’administrat ion, not am- ment pour des archit ectures Web Services t rès comp lexes.Exagère-t -on la réal ité?ALH :Effectivement,on peut toujours faire mieuxet proposer des nouveaux outils.Mais,il faut aussi
être clair :toutes les fondations sont en place ! Avecles infrastructures de services Web –et les stan-dards disponibles aujourd’hui- les entreprises peu-vent d’ores et déjà faire plus,plus facilement,parexemple, pour relier 2 systèmes d’informations"étrangers".Dans la gamme Microsoft,BizTalk Ser-
ver permet également l’orchestration de servicesWeb, via Xlang. Les dernières propositionsconjointes de BEA,IBM et Microsoft dans le domai-ne de la coordination des processus commerciaux(WS-Coordination et BPEL4WS) vont ajouter unniveau d’abstraction à cet édifice.
P ! : On crit ique souvent les Web Services pour le manque de sécurité.Depuis des mois, on écrit sur ce thème. Il est vrai qu’au début , il y avait des manques. M ais n’aurait-on pas surdimen- sionnéle débat ?ALH : Tout d’abord,pour tout ce qui passe derriè-re le pare-feu de l’entreprise (dans le réseau inter-
ne), il n’y a pas de problème :les services Web ytiennent le rôle d’un élément d’infrastructure,aumême titre que Corba ou DCOM.Ils offrent plusde souplesse,et opèrent dans un environnementdéjà sécurisé. Il est important de rappeler que,àpriori,c’est dans ce type d’environnement que lesdéploiements les plus rapides devraient s’opérer.Pour ce qui concerne les déploiements inter- en-treprises, les solutions qui ont fait leurs preuvesdans l’environnement Internet restent tout à faitvalides.C’est d’ailleurs ce qui figure dans le " basicprofile 1.0 " de WS-I.org. Au delà de cette ap-proche,qui est immédiatement disponible,WS-Se-
curity offre un cadre plus large et plus moderne.Ilsera intégré par Microsoft dans Windows .NETServer. Mais les développeurs peuvent déjà lemettre en oeuvre dans leurs solutions,via un kit dedéveloppement,le WSDK. ■
Propos recueillis par François Tonic
JOURNALISTESAUTEURS
LE MAGA ZINE DU DÉVELO PPEM EN T
étoffe sa rédaction, contactez-nous
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 28/53Programmez N°49 • JANVIER 2003
49
Le concept de Web Services,qui est maintenant familier pour la plupart des entreprises,est aussi parfois positionné comme un remplaçant des solutions EAI (Enterprise Application Integration).La confusion est entretenue - voire soutenue - par les nouveaux vendeurs de solutions " pures " Web Services.
Pour commencer, revenons sur la définition desconcepts Web Services et EAI :Web Services :Un Web Service est une applica-tion modulaire,qui est accessible par un réseau (In-ternet,Intranet ou Extranet),par le biais d'une in-
terface au format standard XML.EAI (Enterprise Application Integration) :L'EAI est unconcept qui regroupe un ensemble de méthodes,technologies et outils qui permettent de consoli-der et coordonner l'ensemble des applications hé-térogènes,afin d'aboutir à une urbanisation du sys-tème d'information de l'entreprise.Déjà,à la lecture de ces définitions,on perçoit clai-rement que la couverture fonctionnelle de cesdeux notions est très différente.Les Web Servicesadressent un point précis,alors que l'EAI adresseune problématique beaucoup plus vaste.
Enveloppe technique desWeb Services et de l'EAI
Examinons l'enveloppe technique qui constitue lesWeb Services et l'EAI.Enveloppe technique des Web Services•Les Web Services sont constitués d'un ensemble
de standards :•XML :en tant que technologie utilisée pour dé-
crire les informations•UDDI :pour trouver les services dont on a be-
soin•WSDL :pour décrire le fonctionnement des Web
services
•SOAP :pour exécuter à distance les WEB ser-vices
Cet ensemble simple a permis aux Web Services dese bâtir une forte popularité.Un des éléments clés,
motivant les Web Services,est l'interopérabilité.Ace jour on considère que l'interopérabilité entreWeb Services,tels que définis ci-dessus, est uneréalité que l'on a pu atteindre,car les technologiesassociées sont simples et matures.Le schéma illustre également une notion importan-te : les standards associés aux Web Services n'ontpas prétention à définir la manière de construire unservice qui va être " publié " ou " webisé ".Le ser-vice peut exister ou être nouveau,et quelle quesoit la technologie d'implémentation,cela ne chan-gera pas sa présentation vis-à-vis des autres WebServices.La partie " Service Wrapper " est elle aussipropriétaire,sans lien avec les standards Web Ser-
vices.En revanche,il ne faut pas se tromper : l'enveloppetechnique initiale des Web Services laisse de nom-breuses lacunes, ne traitant pas les aspectssuivants:•Cryptage :sur HTTP,il est possible d'utiliser SSL
pour crypter le canal, bientôt XML Digital En-cryption pour les messages
•Authentification :deux principales standardisa-tions en cours :SAML (Security Assertion Mar-kup Language) et XKMS (XML Key ManagementSpecification)
•Signature :XML Digital Signature offre de bons
espoirs• Transactions :BTP (Business Transaction Proto-col),dont une première implémentation par HP(HP Web Services Transaction Server 1.0) etXAML (Transaction Authority Markup Language)
•Orchestration :XLANG (Microsoft Biztalk) etWSFL (Web Services Flow Language)
On comprend par conséquent,qu'il faut choisir lesWeb Services,dans les cas où les besoins corres-pondent aux standards actuellement disponibles.Enveloppe technique de l'EAIL'idée de définir l'enveloppe technique de l'EAI peutparaître farfelue,car en réalité l'EAI ne repose pasexclusivement sur des standards. Comme nousl'avons exprimé en introduction,l'EAI regroupe unensemble de méthodes,technologies et outils (voirnotre article Quelles technologies pour L'EAI dedemain ?). Pour résumer, il existe quatre grands
types d'intégration :
5• WEB SERVICES ET EAI CONCURRENTS ?
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 29/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
0
Web services
•L'intégration au niveau données :L'intégration esteffectuée par extraction,éventuellement trans-formation,routage et injection des données utili-sées par les applications.
•L'intégration au niveau application :l'intégrationse fait directement par entrée/sortie des applica-tions,par exemple à l'aide de messages,d'API…
•L'intégration au niveau logique métier :il s'agit ici
de gérer les flux métiers du système d'informa-tion,par exemple à l'aide d'objets métiers distri-bués.
•L'intégration au niveau interface utilisateur :l'in-terface utilisateur d'une application sert ici depoint d'entrée/sortie.Ce niveau d'intégration estparticulièrement utile,lors de l'intégration de sys-tèmes archaïques ou dédiés ne possédant pasd'autres point d'accès (API inexistante,donnéesinaccessibles…),ce qui est souvent le cas pourdes applications mainframe.
L'objectif ultime,est de fournir un "Hub" uniformeet standard pour les échanges entre applicationsexistantes et d'ouvrir celles-ci vers de nouveaux
développements. Le cœur d'un systeme EAI estconstitué d'un ensemble de composants qui vontgarantir le bon déroulement des échanges entre lessources,qui sont accédées via des connecteurs ouadaptateurs.Enfin,le système EAI doit être capablede fournir des points d'entrée "standard",commeillustré sur le schéma ci-dessus avec les " PublicInterfaces ".C'est à ce niveau que les Web Services intervien-nent principalement dans une solution EAI. Il estenvisageable également de voir les Web Services sepositionner au niveau des Connecteurs (parexemple SAP va fournir un accès à son interface
d'intégration BAPI,via des Web Services),mais dans
ce cas on perdra nombre des fonctionnalités of-fertes par les solutions d'EAI.
Conclusion
Les Web Services et l'EAI sont deux notions tota-
lement complémentaires,qui s'enrichissent mutuel-lement,mais qui ne s'excluent nullement,les Webservices pouvant être vus comme un moyen tech-nique de faire de l'EAI à couplage faible.Les Web Services sont souvent issus des processuset données existants de l'entreprise.La mise enœuvre de Web services est sous tendue par l'inté-gration d'applications en interne,il y a rarement devrais Web services sans projet d'EAI !Pour conclure,voici la démarche généralement ap-pliquée dans la réalisation de Web Services :
Construction d'un Web service- 20%de réflexion sur les aspects fonctionnels- 70%de travail d'intégration des applications en in-terne,ou de mise en place de nouveaux systèmes
Les 10%restants...
Ajout d'une couche de gestion des appels sortants/entrants XML :SOAP/WSDL,XML-RPC… etcGestion des aspects relatifs à l'ouverture vers l'ex-térieur : Authentification,confidentialité,non-répu-diation,disponibilitéPour plus d'informations sur ce sujet,vous pouvezconsulter les ressources SQLI-TechMetrix sui-vantes :•Web Services Solutions Directory•B2B Directory ■
JEAN-CHRISTOPHE CIMETIERE
Directeur Technique Adjoint du Groupe SQLI
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 30/53Programmez N°49 • JANVIER 2003
51
6• UNE UTILISATION QUOTIDIENNEDES WEB SERVICES
Les Web services ne sont plus un concept abstrait. Ils deviennent une réalitépour les entreprises.Certaines,pionnières,s’en dotent déjà,ou se tournent vers des plates-formes orientées services.C’est le cas de la SSII Neurones qui, dans quelques semaines,profitera d’uneinfrastructure .Net,qui permettra de faire travailler ensemble ses outils spécialisés,
comme GIP.SSI ou Quatoo Compétences,son système de paye Zadig d’ADP-GSIet sa comptabilité Sage.
Le déclencheur de l’installation de Quatoo compétencesa été un besoin précis :"Nous avions besoin d’unsystème cohérent,pour bien connaître nos disponibilitésen personnel et affiner notre facturation.Les joursde RTT,d’astreinte ou les journées particulières,étaient consolidés dans des documents sous Wordou Excel, mais n’avaient pas de lien avec notresystème d’information.Nous avions un trou dans
le système" explique Bertrand Ducurtil,le directeurgénéral de Neurones.Le but est d’obtenir des étatsplus fins, provenant des différentes agences dela SSII.
Un triptyque fonctionnel
Pour arriver à ce but ,la SSII s’est dotée d’un systèmede paye,Zadig,un produit pour le midmarket dechez ADP-GSI,et d’un logiciel de gestion des projets
et des missions GIP.SSI (installé en 2002).Il ne manquaitplus que la dernière brique,la gestion des compétenceset des disponibilités,que va lui amener Quatoocompétences,qui sera installé au printemps.Suivanthabituellement une approche progiciel,Neuroness’est engagée sur cette voie "Best of Breed",du faitde la simplicité des interfaces entre GIP.SSI,Zadiget le système de comptabilité. "Aujourd’hui cesponts fonctionnent bien,et nous avons derrièrenous plusieurs mois de production.Cette premièreétape,nous a déjà apporté une meilleure connaissancesur les missions et une meilleure organisation,même si l’enthousiasme des équipes n’a pas été
débordant au début de l’installation" se rappelleBertrand Ducurtil.
Les Web Services commeprochaine étape
Encouragée par l’expérience acquise avec GIP.SSI,Neurones a acheté Quatoo Compétences, unproduit de gestion de compétences très novateur,développé nativement en .Net de Microsoft etutilisant les Web services XML de la plate-forme deMicrosoft.“Lorsqu’Altride,l’éditeur de GIP.SSI,nous
NeuronesNeurones est une SSII de 1230 personnesqui est spécialisée dans l’intégration,l’in-fogérance et le développement d’applica-tions avec une interface Web sur une archi-tecturetrois tiers.Elle a réalisé un chiffre
d’affairesde plus de90M€ avec une margeopérationnelle supé-rieure à 9 %en 2001.Elle devrait réaliser les
mêmes chiffres pour l’année 2002 selonles prévisions de son directeur général,Bertrand Ducurtil.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 31/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
2
Web services
a proposé son nouveau produit :Quatoo compétences,nous avons été intéressés par ses fonctionnalitésmais aussi par le fait qu’il soit lancé sur uneplate-forme d’avenir plutôt qu’en client/serveur"explique le directeur général de Neurones.L’architecture du produit a été développée conjoin-
tement avec Octo Technology et l’accompagnementde Microsoft sur le long terme,en particulier,lorsdes phases de développement du produit et dansles premiers passages en production.A la place des interfaces classiques,Quatoo utilisela couche de transport XML du framework .Net,pour récupérer et redistribuer les informations
dans les diffé-rentes applica-tions de comp-tabilité ou depaye. Cetteopération sefait de manière
transparentepour l’utilisa-teur.Quatoo com-pétences vapermettre àNeurones unemeilleure adé-quation desprofils aux mis-sions deman-dées par lesclients. "Cet
outil ne va pasêtre utilisé pour trouver le mouton à cinq pattes,car ce type de profil est connu et bien identifié ! Parcontre, sur de nombreuses missions,nous avonsbesoin de dix,quatre ou deux personnes.L’historique des missions nous permettra de placerles profils adéquats, sans qu’ils soient trop justesou surdimensionnés pour la mission demandée"explique le dirigeant de Neurones. ■
Bertrand Garé
UneconfigurationrequiseimportanteLa solution Quatoo compétences,premier module d’une suite appelée àremplacer à terme GIP.SSI,demande une configurationminimaleimportante pour fonctionner.Multibase,il fonctionne sur serveur Oracle 8.1.7,qui doit disposer au minimumde MS
Windows 2000 ou NT 4.0,avec unprocesseur Pentium IV 1 Ghz minimum(un serveur biprocesseur est conseillé),un contrôleur Ultra Wide SCSI avec un
disque SCSI 10 000Tr/mn,une cartegraphique et écran,2 Go de mémoirevive (1 Go mini-mum),2 Go d’es-pace disque ou
plus,décomposés en 764 Mo d’espacedisque pour l’installation d’Oracle,100
Mo d’espace disque pour les données,Oracle 8.1.7 (8i Release 3)Standard Edition ou entreprise Edition.Il faut prévoir 200 Ko environ par CVstocké.La configuration est à peu prèsla même,si la solution prend en compteSQL Server 2000.Cette configurationprécise occupe moins d’espace disque :300 Mo pour l’installation de SQL Server,100 Mo pour les données (1000 collaborateurs).Le serveur Web doit impérativementêtre sur MS Windows 2000 Server pour leframework,avec un processeurPentium 500 Mhz minimum,disposer
d’une carte graphique et d’un écran VGAou mieux,d’un Go de mémoire vive,d’un Go d’espace disque ou plus,IIS(Internet Information Services) 5.0,leframework.Net,Office 2000 ou Office XP.Sur le poste client,doit être présent,MS XP,2000,NT ou Windows 98/95,un processeur Pentium à 300 Mhzminimum,une carte graphique et unécran 1024x 768 en 256 couleurs SVGAou mieux,64 Mo de mémoire vive et unnavigateur Internet Explorer Version 6.0.A conseiller aux amateurs d’infrastructures
Microsoft.Pour les autres…
AltrideAltride est l’éditeurde la solution GIP.SSI(gestion intégrée de laproduction des sociétésde services eningénierie),dédiéeaux sociétés de services.Créé en 1998,GIP.SSI compte aujourd’huiplus de 100 références,dont 30 SSIIeuropéennes.Son chiffre d’affaires en 2001 a été de
1,6M€
pour un effectif de 23 personnes.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 32/53Programmez N°49 • JANVIER 2003
53
Si certains pensent que les Web Services ne servent àrien ou qu’il s’agit encore d’une obscure technologie ne pouvant
être déployée et utilisée àgrande échelle,ils risquent d’être surpris.L’Agence France Presse (AFP) utilise déjàdes Web Ser- vices. Les mois et années àvenir verront un changement radical de son système d’information… Récit d’une transforma- tion annoncée.
On connaît peu l’immense travail de l’AFP en Fran-ce et dans le monde entier.Des centaines de jour-nalistes,des milliers de photos et d’articles à traitertous les mois et en temps réel.L’information n’at-tend pas dans nos sociétésmodernes.L’agence est trèsactive au niveau technolo-gique. La gestion informa-tique d’une telle structurenécessite un suivi de tousles instants et une parfaiteconnaissance de la techno-
logie. À la question, pour-quoi avoir choisi les WebServices et .NET,Jean-MarcMouton (chef du départe-ment ingénierie) formule très simplement ce choix :" Les Web Services permettront de ré-architectu-rer le SI et de faire communiquer les applicationsLegacy.l’idée de départ était de tester .NET et lesWeb Services dès la sortie officielle".
Actuellement,les services web se limitent à la su-pervision du système d’envoi des images par satel-lite utilisé par l’AFP.La base applicative du point deréception satellitaire est architecturée autour de
COM/DCOM. Ce point de réception, écrit enC++/ATL,est mis en place chez les clients pour lalivraison et à l’AFP pour des besoins de contrôle.L’application de surveillance se compose d’une par-tie serveur et d’une partie cliente,sous forme deWeb Services installés sur les points de contrôle.L’AFP pourra ainsi contrôler et surveiller ce qui sepasse sur les différents satellites au travers de sonréseau interne, à partir des différents points decontrôle dans les différentes régions du monde.
L’existant C++n’a pas été un obstacle à l’évolutiondu point de réception.L’ajout d’un service web
s’est fait de façon transparente,comme le confir-
me Alfredo Pulcino (de la Société Winwise) : " Leprincipe de fonctionnement est identique, maisnous pouvons maintenant échanger les informa-tions de contrôle, via Internet. Les Web Servicesnous ont évité de perdre du temps sur les aspectscommunication,nous nous sommes concentrés surles aspects métier ".Et c’est bien là une des condi-tions du succès :modification dans la continuité.
L’AFP n’a pas tenté dans cette opération de réin-venter la roue,et a choisi pour l’accompagner unesociété ayant une solide expertise. Le choix deWinwise s’est fait naturellement comme le précisemonsieur Mouton :" Nous travaillons avec Winwi-
se depuis 2 – 3 ans.Nous nous sommes donc ap-puyés sur eux pour le projet.Le planning serré (3mois !) et la volonté d’étudier en détail les nou-velles possibilités de .NET et des Web Services ,nous ont conduit à définir un objectif limité :la sur-
veillance des points decontrôle ".Cette activité n’estpas le cœur de l’AFP, mais ilfallait valider la notion de WebService avant d’imaginerl’étendre à d’autres probléma-tiques.
Au final,tout c’est bien dérou-lé ! Pas de gros accrocs ou debugs. Les surprises ont étépeu nombreuses,bien que la
technologie soit encore jeune.Le développementCOM / DCOM avait posé à son époque bien plusde difficultés.Pour Jean-Marc Mouton et AlfredoPulcino,ce fut un plus indéniable.L’environnement.NET / Visual Studio 7 leur semble mature.
Quid du déploiement ? " Nous n’avons pas rencon-tré de difficultés de configuration ou de déploie-ment.Au contraire,ces aspects étaient nettementplus simples à gérer que dans le projet C++précé-
dent :l’architecture Web Services est plus claire."Dixit Jean Marc Mouton.
7• AFP : LES WEB SERVICESSAVENT SE RENDRE UTILES Le siège de l’AFP à Paris
Une réalisation courteLe dé lai impo sé par l’AFP était court. Le pro jet a été initié en
jan vie r 2 0 0 2 . La f in du dé ve lo pp em ent a eu li e u e n avr il –
mai de la même année. Les mo is d’été ont été consacrés aux
tests avant les premiers déploieme nts . Le bud get de ce projet
Web Services fut d’environ 2 6 0 00 euros e t a mobil isé
2 personnes en développement.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 33/53
DOSSI
ER
Programmez N°49 • JANVIER 2003
4
Web services
À la question récurrente,faut-il ou non apprendreles méandres de SOAP ? Alfredo Pulcino se veutrassurant :" SOAP est très transparent :le mêmecode est utilisé côté client et côté serveur,ce quilimite les risques de bugs et la complexité globale.Antoine Diz (chef de projet AFP) rajoute," tout le
monde converge vers SOAP.Les Web Services pri-vilégient une ap-proche orientéecomposants, effi-cace en termes deréutilisabilité et decommunicationentre équipes ".Même l’aspect pu-rement program-mation ne fut pasun obstacle ma-
jeur.Faire du .NETet du service web
ne pose guère dedifficulté à des dé-veloppeurs C++ou VB.Ce fut trèsimportant pourconcevoir l’appli-cation dans lestemps. “Le grosavantage de l’envi-
ronnement Microsoft est qu’il cache les aspectsdésagréables de SOAP :la génération automatiquedu code est un gain de temps important”,répondAlfredo Pulcino.Pour Jean-Marc Mouton,la cohabi-
tation Com/C#n’a pas constitué un problème :"leservice est en C#,et dialogue avec les objets COM.Nous avons choisi des Winforms pour l’interface,et les développeurs C++ n’ont quasiment pas eude difficulté à passer en C#."
Le dernier point qui reste à éclaircir concerne lesperformances des Web Services." L’AFP a parfoisune exigence de temps réel sur de très gros vo-lumes de traitement ",rappelle Antoine Diz." HTTPn’est pas réputé pour sa rapidité, et le grandnombre de protocoles utilisés dans un service webralentit encore les traitements.C’est pour cetteraison que nous avons choisi une application demonitoring comme terrain d’expérimentation."
Après cette réalisation,qui a démontré l’utilitédes Web Services et leur rapidité de mise en
œuvre, quel avenir pour eux à l’AFP ? Jean-MarcMouton est optimiste :" Cette première expé-rience de .NET et des services Web s’est révéléetrès satisfaisante.Elle nous a permis de valider lesoutils, et nous sommes en train de décliner ce
Web Service dans unautre projet.Je penseque les services webviennent comblernotre besoin d’unetechnologie d’inté-gration :dans un en-vironnement multiplate-forme et multi
site, la transparenceet la simplicité descommunicationsinter applicationssont essentielles. ".Sur les éventuelsproblèmes de mise à
jour du framework.NET et des proto-coles SOAP, il nesemble pas y avoir desouci à se faire ■
François Tonic
Un peu d’HistoireC’est en 1835 que Charles-Louis Havas crée
l’agence Havas. En 1940, la branche
information d’Havas donn e nais sance à l’OfficeFrançais d’information. C’est en 1944 que le
nom d’Agence France presse a été do nné p ar
des journalistes de la Résistance. Les années
198 0 voient l’apparition d e no uveaux bureaux
internationaux et de nouveaux services. La
révolution numé rique touche l’agence en 19 93.
En mars 20 02, les té léphones 3G japonais
peu vent visualise r les images spo rtives de l’AFP.
L’agence co mpte aujou rd’hui 2 00 0
collaborateurs dans le mon de e t autant de
pigistes .
La révolution du service Web touchera l’ensemble du réseau et service informatiques.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 34/53Programmez N°49 • JANVIER 2003
55
C# : langage créé par M icrosoft.C # est le langagephare de VisualStudio.N ET pour concevoir des Ser-
vices W eb.Il est dérivé des langages C et C+ + tout
en ressem blant au Java de Sun.C# est orienté objet
et ressem ble dans sa syntaxe au langage Visual Basic.
CLR :C om m on Language Runtim e.Le C LR est à.N ET ce que la JVM est à Java.Le C LR est une sortede m achine virtuelle exécutant le fichier binaire M SIL.Le C LR crée,à partir des fichiers binaires,un code enlangage m achine spécifique au systèm e client,via uncom pilateur JIT.
CLS :C om m on Language Specification.Le C LS per-m et de rendre com patibles la plupart des langagesobjets avec .N ET.Il définit 41 règles com m unes.Lecom pilateur,pour générer les Services W eb,s’appuiesur le C LS pour générer le fichier binaire M SIL,à par-
tir de n’im porte quel code respectant les spécifica-tions CLS.
CTS : C om m un Type System .La diversité des lan-gages et des types im posent l’utilisation d’une " tablede conversion ",le C TS.Si le code du Service W ebrespecte le C TS,il n’y aura aucun problèm e.
DLL :D ynam ic Link Library.Un D LL est un fichiercontenant des fonctions et des procédures qu’uneapplication utilise.Pour le développeur,la D LL facilitele travail et perm et d’appeler une fonction existante,directem ent dans une D LL.
Frameworks :ensem ble de classes conçues pouraider le développeur dans un dom aine précis (parexem ple :un fram ew orks d’interface).Il existe aussil’Application Fram ew orks.L’application fram ew orksfacilite le développem ent d’applications.
Java :langage orienté objet inventé par Sun.Il se dé-cline en deux grandes versions :version standard etversion entreprise (J2EE).Java se décline dans tousles m archés grand public et professionnels.
JIT : Just in Tim e.Le com pilateur " juste à tem ps "perm et de générer à la volée un code en langage
m achine à partir du fichier binaire M SIL.Le JIT adap-te le code au systèm e client et perm et d’exécuter leService W eb.
Linux : systèm e d’exploitation créé par Linus Tor-vald en 1991.Il s’agit d’un systèm e U nix.Il s’agit d’unprojet com m unautaire.Linux est régi par différenteslicences d’utilisation (GPL et G N U en particulier).
MSIL : M icrosoft Interm ediate Language.Il s’agitd’un fichier binaire généré par le com pilateur .N ET àpartir des spécifications du C LS.Si le code sourcepeut être de n’im porte quel langage ou presque,le
com pilateur fournit un fichier code uniform e,confor-m e aux spécifications .N ET :le M SIL.Il est indépen-dant du systèm e.
RMI :Rem ote M ethod Invocation.Technique facili-tant la conception et le déploiem ent d’applicationsdistribuées.RM I est largem ent utilisé notam m entdans Java et C orba.
RPC :Rem ote Procedure C all.Le RPC s’utilise avecles applications distribuées,telles que les ServicesW eb.Le RPC perm et d’appeler une fonction sur unserveur distant.L’ordinateur client récupère le résul-tat de la fonction et l’affiche.
SDK :Softw are D evelopem ent Kit.Le SD K est unensem ble de librairies de développem ent,contenantdes objets,classes,m éthodes,interfaces,fonctions.Le
SD K réunit tous les élém ents nécessaires pourconcevoir des applications im plém entant un proto-cole,une technique ou une technologie.
SDL :Service D escription Language.Le SD L est unfichier X M L décrivant les m éthodes accessibles (avecleurs param ètres) dans un Service W eb.
Service Web :applications m odulaires basées sur In-
ternet.Elles exécutent des tâches spécifiques.N’im por-
te quelle fonction d’une application peut être transfor-
m ée en Service W eb et disponible sur Internet.
SOAP :Sim ple O bject A ccess Protocol.SO A P estun protocole d’invocation de m éthodes sur des ser-veurs distants.C’est un protocole de com m unicationinter applications.Les données et m essages SO A Ptransitent avec les requêtes http.D ans les ServicesW eb,SO A P sert à échanger des données avec desapplications ou d’autres Services W eb.
UDDI :U niversal D escription,D iscovery and Inte-gration.U D D I est un annuaire m ondial basé sur lestechnologies Internet.L’objectif d’U D D I est de sim -plifier et d’autom atiser les com m unications inter en-treprises.
XML :Extensible M arkup Language.Contrairem entau H TM L qui est un langage figé,X M L perm et decréer ses propres m arqueurs.XM L utilise plusieurstechniques pour décrire les form ats et les m odèlesdes données,X LS et D TD .X M L est un langage cen-tral de D ot N et,de M icrosoft et des Services W eb.
WSDL : W eb Service D efinition Language. LeW SD L est un langage de description (basé sur X M L),perm ettant de décrire un Service W eb,sans tenircom pte d’éventuelles dépendances avec d’autres ser-vices.Le W SD L définit les m éta- données des ser-vices.
Mini-lexique
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 35/53
Il existe de nombreuses possibilités pour effectuer des travaux
d'impression avec Python. Ces possibilités sont assez dispa-
rates, et pas d'une efficacité constante selon les plates-formes.
Nous allons examiner tout cela dans le détail, pour UNIX en gé-
néral et Linux en particulier, pour Windows, ou, lorsque c'est pos-
sible, pour les deux à la fois.
Si vous êtes pressés
Au départ, lorsque Guido Van Rossum a créé Python, il a voulu
faire un langage de script, proposant une alternative au Shell.
Guido est issu d'une culture UNIX et ne s'est pas particulièrement
intéressé à l'impression, ou plutôt, a considéré que les choses
allaient de soi. En effet sous UNIX, on imprime un document enl'injectant dans la file d'impression, tout simplement. Si la file
d'impression est bien configurée, bien équipée en filtres, on impri-
me à peu près ce que l'on veut, même depuis la console, par
exemple comme ceci :
cat document | lpr
Python permet de lancer une commande système, donc imprimer
en Python de cette façon est simple. Voici un programme Python
'printlinux.py' qui s'imprime lui même :
#! / usr/ bin/ env python
import os
modele_commande = 'cat %s | lpr'
commande = modele_commande %('printlinux.py')
os.popen(commande)
Il est possible d'appliquer cette méthode expéditive sous Win-
dows, en changeant une ligne de code :
modele_commande = 'type %s > prn'
Malheureusement, sous Windows, les résultats ne sont pas garan-
tis sur facture. Cette méthode fait appel au DOS et il peut arriver
que votre imprimante ne soit pas toujours docile. En outre, vous
pouvez obtenir un horrible effet d'escalier, si vous tentez d'impri-
mer un fichier texte écrit sous Linux ou même sous Emacs - Win-
dows. En effet, dans ce cas, les retours à la ligne ne sont indiqués
que par le caractère \x0A, alors que Windows attend la séquence
\x0A\x0D pour assurer le retour du chariot, d'où l'effet d'escalier.
Cette méthode n'est donc finalement à retenir que sous Linux.
Sous Windows
Python dispose de riches extensions pour cette plate-forme. Les
extensions Windows ne font pas partie du package Python de
base et sont donc à télécharger séparément à
http://www.python.org. Parmi ces extensions vient Pythonwin, quiest une librairie enveloppe autour de la librairie C++ MFC de Micro-
soft. MFC est un ensemble de classes plus ou moins bien conçues,
Découvrons
ensemble l'éventail
des possibilités
d'impression de
Python.
P R A
T I Q
U E
NIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
0
Par Frédéric Mazué
Fa ire b o n n e im p re s s io n a ve c Python
Python
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 36/53
mais accélérant toutefois la programmation sous Windows.
Sous Windows, on emploie la même méthode, pour tracer à
l'écran et pour imprimer. Cette méthode consiste en l'obtention
d'un contexte de périphérique (dit DC pour Device Context) et en
l'appel des fonctions graphiques du système avec ce DC en argu-
ment. Lorsque le fameux DC est encapsulé dans une classe,
comme c'est le cas avec MFC, les méthodes graphiques sont invo-
quées depuis l'objet. Il n'est pas ici question d'entrer dans le
détail des MFC. Voici simplement un exemple de code qui imprime
quelque chose :
import win32ui
dc = win32ui.CreateDC()
dc.CreatePrinterDC()dc.StartDoc('Impression avec Python')
dc.StartPage()
dc.TextOut(100, 100, 'Bonjour :-)')
dc.EndPage()
dc.EndDoc
del dc
Quelques explications. On commence par créer un dc 'générique'
puis on spécialise celui-ci pour l'imprimante, en invoquant sa
méthode CreatePrinterDC. Remarquez la dernière ligne qui détruit
cet objet. Cette ligne n'est pas vraiment utile ici, puisque tous les
objets seront quoi qu'il en soit, détruits après exécution du script.
Mais si vous insérez ce code dans un autre, alors la destruction du
DC est très importante. Faute de quoi, vous vous heurteriez très vite
à un épuisement des ressources de votre système. Les travaux d'im-
pression (ici un simple appel à TextOut) doivent impérativement
être encadrés dans un double sandwich. La première couche crée
un document du point de vue du pilote de l'imprimante. La seconde
couche encadre le travail spécifique à une page. Celle-ci est impri-
mée et éjectée dès l'appel à EndPage. Plusieurs pages seront donc
chacune, encadrées par un sandwich StartPage - EndPage.
Cette méthode est pleinement satisfaisante, tant que l'on imprimedu texte ou que l'on trace des lignes. Mais si vous souhaitez impri-
mer des images, c'est à dire des bitmaps sous Windows, vous ris-
quez de rencontrer des problèmes, en raison d'un bug des MFC
eux-mêmes, qui ne gèrent pas bien les bitmaps indépendantes du
périphérique. Or les pilotes d'imprimantes ne garantissent en
général que l'impression de telles bitmaps et non l'impression des
bitmaps dépendantes du périphérique. (Pour plus d'informations
vous pouvez vous reporter à un article sur le sujet dans Program-
mez! N°19 et éventuellement à l'article Q195830 de la MSDN de
Microsoft).
La question est maintenant de savoir comment aller un peu plus
loin. Les classes Pythonwin sont un reflet assez exact des classes
MFC. Il existe une documentation u peu rudimentaire au sein de
l'application Pythonwin ( figure 1 ). Comprendre : le vocable
Pythonwin recouvre deux choses. Une librairie, et une application
qui est en fait un utilitaire de programmation. Le code ci-dessousmontre comment créer une fonte :
import win32ui
dc = win32ui.CreateDC()
dc.CreatePrinterDC()
dc.StartDoc('Impression avec Python')
font_properties = {
'name': 'Times'
}
font = win32ui.CreateFont(font_properties)
dc.StartPage()
dc.SelectObject(font)
dc.TextOut(100, 100, 'Bonjour :-)')
dc.EndPage()
dc.EndDoc
del dc
Pour les paresseuxSous Windows, une excellente façon de procéder paresseusement,
est de demander à une application d'imprimer le document pour
nous. En effet, les applications bureautiques de Microsoft sont
avant tout des serveurs Automation. Ceci signifie qu'ils exposent
toutes leurs fonctionnalités sous la forme de méthodes pouvant
être invoquées par un programme extérieur. Supposons que vous
ayez un gros fichier texte à imprimer. Si vous chargez ce fichier
dans Word, ce dernier se chargera de toute la mise en page pour
vous. Vous pouvez procéder de même avec des feuilles de calcul
Excel ou avec des pages HTML, via FrontPage.
Les extensions Python-Windows proposent un outil pour générer
automatiquement des classes enveloppes Python autour de ces
serveurs. Supposons que nous voulions travailler avec Word.
Démarrer d'abord la première fois Pythonwin, puis dans le menu,
sélectionnez 'COM makepy Utility'. Puis dans la liste, recherchez
quelque chose comme: 'Microsoft Word 9.0 Object Library' ( figure
2 ). Le numéro peut différer selon votre version de Word. Puis cli-
quez sur Ok. Pythonwin va alors générer ces fameuses enve-loppes. Ceci fait, vous pouvez fermer Pythonwin si vous voulez.
Vous n'en avez plus besoin car les classes enveloppes sont totale-
Programmez N°49 • JANVIER 2003
61
> Figure 1: L'application Pythonwin
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 37/53
P R A T I Q
U E
NIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
2
Python
ment indépendantes. Voici maintenant un exemple de code qui
demande à Word de charger un fichier texte puis de l'imprimer :
from win32com.client import Dispatch, constants
word = Dispatch('Word.Application.9')
document = word.Documents.Open('c:\ \ texte.txt')
# éventuellement pour admirer le travail
#word.Visible = 1
document.PrintOut()
# éventuellement, une fois l'impression terminée
#word.Quit()
Cette façon de procéder est formidable, car il est possible de
générer ainsi un document de A à Z, avec constitution de para-
graphes, insertion d'images, sélection de polices, etc. Le tout est
de comprendre Automation et ses rapports avec Python. Je vous
invite à vous reporter à un article de Programmez! 35 sur ce sujet.
Il est possible de connaître les interfaces exposées par les applica-
tions Automation, en consultant la MSDN. Par exemple, pour Word
2000, chercher à 'Word 2000 Object Model' et pour Office XP, cher-
cher à 'Word Object Model'. ( figure 3 ). Quand on a bien compris le
principe et qu'on a le pied à l'étrier, piloter les applications Office
est franchement ludique et extrêmement puissant. N'omettez pas
d'y jeter un coup d'œil.
wxPython,pour du code portableA ce stade, nous avons vu des méthodes présentant toutes leur
intérêt propre. Facilité, ou puissance, etc. Ce qui nous manque, est
le moyen d'écrire du code portable. Après tout, Python est le lan-
gage portable par excellence. Il est vrai que le cas de l'impression
est difficile et un peu à part, mais nous avons toutefois une bonne
solution avec wxPython. wxPython est une librairie de classes
Python, enveloppant les classes C++ de l'excellente librairie
wxWindows, que j'ai déjà eu l'occasion de vous présenter. wxPy-
thon est sous licence GPL. Vous pouvez le télécharger à
http://www.wxpython.org. wxPython fonctionne à merveille sous
Windows, UNIX et Linux.
Les classes de wxWindows et donc de wxPython ne sont pas sans
rappeler les classes MFC, par leurs dénominations et leur organi-
sation. Toutefois, les deux n'ont rien à voir. Ici, le jeu de classes
est complet, les classes plus élaborées et surtout, sans bugs gros-
siers. Ainsi le problème d'impression des bitmaps, signalé plus
haut, n'existe pas avec wxPython. Mieux : il est possible d'impri-
mer des images tiff, png, jpg, etc. Le revers de la médaille est qu'il
faut ici écrire beaucoup de code, car les fonctionnalités d'impres-
sion doivent faire partie d'une application complète.
Ceci posé, au sein d'une application, il y a deux façons d'imprimer.
L'encadré 1 montre la marche à suivre pour la première. Le listing
est partiel puisque ce n'est que le code du gestionnaire d'événe-
ment d'un bouton poussoir. La démarche consiste à instancier une
classe wxPrintDialog. Il s'agit de la boîte de dialogue d'impression
classique. Ceci fait, on récupère un DC, puis on imprime 'dans un
sandwich' à la Windows, comme vu plus haut, y compris sous
Linux. Pour instancier la classe wxPrintDialog, il faut d'abord ins-
tancier deux autres classes: wxPrintData puis wxPrintDialogData.
Attention! Ne craignez pas d'appeler toutes les méthodes définis-
sant le comportement de ces classes. Une carence d'initialisation
peut provoquer un échec de l'impression, selon l'humeur de Win-dows ou de votre pilote d'imprimante. Sous Linux, vous devez
rajouter une ligne de code comme ceci :
pd.SetPrinterCommand('lpr')
Le résultat s'observe figure 4 Nous constatons que la file d'im-
pression ne perd pas ses droits. Sous Linux, wxPython mémorise
vos tracés dans un fichier PostScript, puis injecte celui-ci dans la
file, à l'issue de l'appel à EndDoc. Un script Python peut tester sur
quelle plate-forme il tourne, comme ceci:
import os
if os.name == "posix":
# c'est UNIX Linux
if os.name in ['nt', 'dos', 'ce']:
# c'est Windows
Deux choses à noter : En mode MM_POINT, les sens des ordon-
nées diffère de MFC à wxPython : négatif vers le bas avec MFC,positif vers le bas avec wxPython. Enfin, notez la destruction du
DC par del dc, comme précédemment.
> Figure 2: Génération automatique de classes autour des serveurs Automation de Microsoft.
> Figure 3: L'organisation interne de Word 2000 selon la MSDN.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 38/53Programmez N°49 • JANVIER 2003
63
encadré1
# listing partiel wxpythonprint.py
def OnPrintBouton(self, event):
pd = wxPrintData()
pd.SetPrinterName('')
pd.SetOrientation(wxPORTRAIT)
pd.SetPaperId(wxPAPER_A4)
pd.SetQuality(wxPRINT_QUALITY_DRAFT)
pd.SetColour(false) # impression noir et blancpd.SetNoCopies(1)
pd.SetCollate(true)
pdd = wxPrintDialogData()
pdd.SetPrintData(pd)
pdd.SetSetupDialog(false)
pdd.SetMinPage(1)
pdd.SetMaxPage(1)
pdd.SetFromPage(1)
pdd.SetToPage(1)
pdd.SetPrintToFile(false)
printdialog = wxPrintDialog(self, pdd)
ok = printdialog.ShowModal()
if not ok:return
dc = printdialog.GetPrintDC()
dc.StartDoc("Mon document")
dc.StartPage()
dc.SetMapMode(wxMM_POINTS)
dc.DrawText("Bonjour :-)", 72, 72)
dc.EndPage()
dc.EndDoc()
del dc
encadré2
#! /usr/ bin/ env python
from wxPython.wx import *
class MonPrintout(wxPrintout):
def __init__(self, titre):
wxPrintout.__init__(self, titre)
def HasPage(self,page):if(page <= 1):
return true
else:
return false
def GetPageInfo(self):
return (1, 1, 1, 1)
def OnPrintPage(self, page):
dc = self.GetDC()
dc.SetMapMode(wxMM_POINTS)
dc.DrawText("Bonjour :-)", 72, 72)
return true
class MainWindow(wxFrame):
def __init__(self, parent, id, title):
wxFrame.__init__(self, parent, -1, title, size = (500, 500),
style=wxDEFAULT_FRAME_STYLE| wxNO_FULL
_REPAINT_ON_RESIZE)
id_bouton = wxNewId()
wxButton(self, id_bouton, 'Imprimer', wxPoint(200, 200))
EVT_BUTTON(self, id_bouton, self.OnPrintBouton)
def OnPrintBouton(self, event):
pd = wxPrintData()
pd.SetPrinterName('')
pd.SetOrientation(wxPORTRAIT)
pd.SetPaperId(wxPAPER_A4)pd.SetQuality(wxPRINT_QUALITY_DRAFT)
pd.SetColour(false) # impression noir et blanc
pd.SetNoCopies(1)
pd.SetCollate(true)
pdd = wxPrintDialogData()
pdd.SetPrintData(pd)
pdd.SetSetupDialog(false)
pdd.SetMinPage(1)
pdd.SetMaxPage(1)
pdd.SetFromPage(1)
pdd.SetToPage(1)
pdd.SetPrintToFile(false)
printer = wxPrinter(pdd)
monprintout = MonPrintout("mon objet d'impression")
printer.Print(self, monprintout, true)
def OnCloseWindow(self, event):
self.Destroy()
class App(wxApp):
def OnInit(self):
frame =MainWindow(None, -1, "Demo d'impression avec wxPython")
self.SetTopWindow(frame)
frame.Show(true)
return true
app = App(0)
app.MainLoop()
La deuxième méthode, plus complexe, permet aussi une meilleure
gestion des pages. L'encadré 2 en présente le listing complet. En
dehors de l'initialisation de wxPrintData et wxPrintDialogData, qui
fait partie des meubles, on utilise cette fois un objet wxPrinter,
dont la méthode Print s'attend à recevoir un objet dérivant de
wxPrintout. Cette classe dérivée DOIT surcharger quatre méthodes :
• le constructeur dans lequel on appelle le constructeur de base.
• HasPage. Tant que cette méthode renvoie true, la fonction call-
back OnPrintPage est automatiquement appelée.
• GetPageInfo, qui retourne un tuple contenant les premières, der-
nières pages et le début et la fin de l'impression.
• OnPrintPage, dans laquelle sont effectués les travaux d'impres-
sion proprement dits. Ici le DC obtenu est préfabriqué par la
classe et NE DOIT PAS être libéré par le programmeur. Cette
méthode doit retourner 'true'. Si elle retourne false, le job d'im-
pression est annulé. ■Frédéric Mazué
> Figure 4: Sous Linux, tout finit par aboutir dans la file d'impression.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 39/53
SOAP est un protocole qui permet un échange simple d'in-
formations structurées et typées dans un environnement
distribué. SOAP utilise XML pour construire les données et
les messages à échanger. SOAP a été conçu par Microsoft et User-
Land Software. Sa version actuelle de (SOAP 1.1) est désormais
une spécification du W3C.
SOAP n'est pas lié à un protocole de communication particulier. Le
protocole HTTP sera généralement utilisé pour effectuer le trans-
port des messages, mais le message SOAP pourait tout aussi bien
être acheminé par e-mail en utilisant le protocole SMTP.
En outre, SOAP n'est lié ni à un système d'exploitation, ni à unlangage de programmation particulier. Ainsi des clients et des ser-
veurs hétérogènes ont la possibilité d'utiliser ce moyen pour com-
muniquer entre eux.
Imaginez que vous écrivez une application de gestion de porte-
feuille d'actions.
Dans une telle application, vous avez besoin de récupérer les
cours des différentes actions du portefeuille. Vous pouvez alors
contacter une société intermédiaire, qui dispose de cette informa-
tion. Si cette information est disponible sous forme de Web Servi-
ce, vous devez tout d'abord prendre connaissance de la
description du service recherché (fichier WSDL), par l'interrogation
d'un annuaire UDDI. Ensuite, vous pourrez envoyer votre requête
SOAP au web service, qui vous retournera la réponse sous forme
de message SOAP. Pour construire ou lire un message SOAP, vous
utiliserez les outils disponibles pour la plate-forme de développe-
ment que vous avez choisie (Java, .NET, Perl, …).
Nous utiliserons un service Web fourni par XMethods pour récupé-
rer les cours d'actions. Le fichier WSDL se trouve à l'URL suivante :
http://services.xmethods.net/soap/urn:xmethods-delayed-
quotes.wsdl.
L’invocation d’un Web Service se passe de la manière suivante :
1. Le client construit une requête SOAP à partir de son toolkit. Lemessage ainsi construit est ensuite envoyé sur le réseau vers
l’adresse cible (en utilisant le protocole HTTP par exemple) ;
Hewlett-Packard a
été la première
société à parler du
concept de Web
Services.Elle a écrit
les spécifications de
e-speak et les a
proposées,pour la
génération suivante
de protocole
d’échanges
d’informations sur
Internet.Microsoft aprésenté ensuite sa
stratégie .NET.IBM,
Oracle et Sun leur
ont emboîté le pas.
Sun ajoute
actuellement les
spécifications desWeb Services dans
l’environnement
J2EE.
P R A
T I Q
U E
SOAPNIVEAU :INTERMÉDIAIRE
Programmez N°49 • JANVIER 2003
4
Par G. Fournier
S O A P : le p ro to c o le in d is p e n s a b leaux W eb Services
> Figure 1: Invocation d'un web service
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 40/53Programmez N°49 • JANVIER 2003
65
2. Le message arrive sur un serveur SOAP, qui convertit le message
XML dans des objets spécifiques au langage de développement
choisi sur le serveur (des objets Java par exemple) ;
3. Le Web Service effectue les t raitements nécessaires à la
construction de la réponse. Le serveur SOAP envoie la réponse
SOAP au client qui a effectué la requête ;
4. La réponse est reçue par le client sous forme de message XML.
Elle est éventuellement convertie dans son langage cible.
On doit écrire une application cliente, afin d’interroger le Web Ser-
vice de notre fournisseur de cotations d'actions. Cette application
utilise une API SOAP afin de générer le message XML (Source 1) auformat SOAP. Ce message est ensuite inséré dans une requête
HTTP, qui est envoyée au serveur SOAP qui fournit le Web Service
demandé.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope soapenv:encodingStyle="http:/ / schemas.xmlsoap.org/
soap/ encoding/ "
xmlns:soapenv="http:/ / schemas.xmlsoap.org/ soap/ envelope/ "
xmlns:xsd="http:/ / www.w3.org/ 2001/ XMLSchema"
xmlns:xsi="http:/ / www.w3.org/ 2001/ XMLSchema-instance"
xmlns:SOAP-ENC="http:/ / schemas.xmlsoap.org/ soap/ encoding/ ">
<soapenv:Body><ns1:getStockQuote xmlns:ns1="PortfolioService">
<arg0 xsi:type="xsd:string">PF1238D</ arg0>
</ ns1:getPortfolioValue>
</ soapenv:Body>
</ soapenv:Envelope>
Source 1 – Requête SOAP
Le Web Service reçoit la requête, l'analyse et effectue les tâches
demandées. Ensuite, il construit la réponse sous forme de messa-
ge SOAP (Source 2).
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http:/ / schemas.xmlsoap.org/ soap
/ envelope/ "
xmlns:xsd="http:/ / www.w3.org/ 2001/ XMLSchema"
xmlns:xsi="http:/ / www.w3.org/ 2001/ XMLSchema-instance">
<soapenv:Body>
<ns1:getPortfolioValueResponse
soapenv:encodingStyle="http:/ / schemas.xmlsoap.org/ soap
/ encoding/ "
xmlns:ns1="PortfolioService">
<getPortfolioValueReturn xsi:type="xsd:double">60.0</ getPort
folioValueReturn>
</ ns1:getPortfolioValueResponse>
</ soapenv:Body></ soapenv:Envelope>
Source 2 – Réponse SOAP
Anatomie d'un message SOAP
Intéressons nous maintenant aux diffé-
rentes parties d'un message SOAP ( Figure 2 ).
On trouve tout d'abord l'enveloppe, qui
est l'élément racine de tout le message.
C'est au sein de celle-ci que l'on trouve la
déclaration du namespace SOAP utiliséeafin de différencier les éléments du schéma (envelope, body, hea-
der) des éléments propres à la requête (nom du service, para-
mèt res,…) . Le namespace SOAP est : http: / /
schemas.xmlsoap.org/soap/envelope/ .
Le header SOAP est indépendant du contenu du message SOAP.
Il servira généralement à contenir des informations, telles que
l'authentification ou les données de transaction. Ces informations
sont en effet communes à tout type de message échangé. Le
header est composé d'éléments définis dans le namespace propre
à la requête de l'utilisateur.
...
<soapenv:Header>
<ns1:transaction xmlns:ns1="urn:PortfolioService">
<id>1ve34</ id>
<type>commit</ type>
</ ns1:transaction>
</ soapenv:Header>
...
Source 3 – Exemple de header SOAP
L'élément body est destiné à contenir les différentes composantes
de la requête SOAP : méthode à invoquer et ses paramètres pour
une requête ou valeur de retour pour une réponse. De même que
pour le header, l'élément body est composé d'éléments définis
dans le namespace de la requête.
Pour une requête SOAP, on trouvera dans la section body un élé-
ment portant le nom de la méthode à invoquer. Celui-ci est com-
posé d'éléments représentant chacun un argument de la méthode
à invoquer. Ces éléments portent le typage de la donnée suivant le
formalisme XML Schema.
...
<soapenv:Body>
<ns1:getPortfolioValue xmlns:ns1="PortfolioService">
<arg0 xsi:type="xsd:string">PF1238D</ arg0>
</ ns1:getPortfolioValue>
</ soapenv:Body>
...
Source 4 – Elément body pour une requête
Pour une réponse SOAP, la section body est composée d'un élé-
ment portant le nom de la méthode invoquée, suffixé de la chaîne
> Figure 2: Anatomie d'un message SOAP
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 41/53
P R A T I Q
U E
NIVEAU :INTERMÉDIAIRE
Programmez N°49 • JANVIER 2003
6
SOAP
"Response" et contenant un élément typé représentant la valeur
de retour.
...
<soapenv:Body>
<ns1:getPortfolioValueResponse
soapenv:encodingStyle="http:/ / schemas.xmlsoap.org/
soap/ encoding/ "
xmlns:ns1="PortfolioService">
<getPortfolioValueReturn xsi:type="xsd:double">60.0</ getPort
folioValueReturn></ ns1:getPortfolioValueResponse>
</ soapenv:Body>
...
Source 5 – Elément Body pour une réponse
SAAJ (SOAP with AttachementsAPI for Java)
L'API SAAJ est une partie des spécifications des web services de
Sun. Elle permet de produire et de consommer des messages
SOAP, conformément à la spécification SOAP 1.1. Cette API compor-
te des classes et des interfaces permettant de modéliser les élé-
ments SOAP (Envelope, Body, Header, Fault,…), les namespacesXML et les pièces attachées au format MIME. SAAJ peut être utilisé
avec JAX-RPC, qui est l'API des web services permettant d'envoyer
et de recevoir des messages SOAP, ou directement avec le proto-
cole HTTP 1.1 (requête/réponse).L'API SAAJ utilise le pattern "Abs-
tract Factory" . La première étape est donc de créer une instance
de la classe MessageFactory.
MessageFactory messageFactory = MessageFactory.newInstance();
On peut ensuite créer un nouveau message, qui contient par
défaut une enveloppe (SOAPEnvelope) composée d'un header
(SOAPHeader) vide et d'un body (SOAPBody) vide. On peut sup-
primer le header qui est inutile dans notre exemple et récupérer
l'instance du body.
/ / create a new message
SOAPMessage message = messageFactory.createMessage();
/ / get the SOAP envelope and add namespace declarations
SOAPPart soap = message.getSOAPPart();
SOAPEnvelope envelope = soap.getEnvelope();
/ / remove the SOAP header
envelope.getHeader().detachNode();
/ / get the SOAP body
SOAPBody body = envelope.getBody();
L'étape suivante consiste en la création de l'élément correspon-
dant à l'appel de méthode à l'intérieur du body. On doit tout
d'abord créer un nom à l'aide d'un namespace. Ce nom doit porter
comme "nom local" le nom de la méthode à appeler. On peut
ensuite créer l'élément correspondant à partir du nom précédent.
/ / create a new body element corresponding to the method call
Name getPorfolioValueName = envelope.createName("getQuote",
"ns1", "urn:xmethods-delayed-quotes");
SOAPBodyElement getPorfolioValue = body.addBodyElement(getPor
folioValueName);
getPorfolioValue.setEncodingStyle(SOAPConstants.URI_N S_SOAP_
ENCODING);
Il ne reste plus qu'à ajouter l'argument à l'élément créé. On doit
une fois de plus créer un nom et il est ensuite possible de créer
l'élément argument. On ajoute l'attribut portant le typage de l'ar-
gument à l'aide d'un attribut XML Schema. Finalement, on peut
ajouter le texte à l'intérieur de l'élément créé.
package test;
import java.net.URL;
import javax.xml.soap.*;
public class PortfolioClient
{
public static void main(String[] args) throws Exception {
/ / create a message factory
MessageFactory messageFactory = MessageFactory.newInstance();
/ / create a new messageSOAPMessage message = messageFactory.createMessage();
/ / get the SOAP envelope and add namespace declarations
SOAPPart soap = message.getSOAPPart();
SOAPEnvelope envelope = soap.getEnvelope();
envelope.addNamespaceDeclaration("xsi", "http:/ / www.w3.org
/ 2001/ XMLSchema-instance");
/ / remove the SOAP header
envelope.getHeader().detachNode();
/ / get the SOAP body
SOAPBody body = envelope.getBody();
/ / create a new body element corresponding to the method call
Name getPorfolioValueName = envelope.createName("getQuote",
"ns1", "urn:xmethods-delayed-quotes");
SOAPBodyElement getPorfolioValue = body.addBodyElement(getPor
folioValueName);
getPorfolioValue.setEncodingStyle(SOAPConstants.URI_N S_SOAP_
ENCODING);
/ / add arguments
Name idName = envelope.createName("symbol");
SOAPElement id = getPorfolioValue.addChildElement(idName);
Name idType = envelope.createName("type", "xsi", "http:/ / www.
w3.org/ 2001/ XMLSchema-instance");
id.addAttribute(idType, "string");
id.addTextNode("SUN");
/ / print the message
message.writeTo(System.out);
}
}
Source 6 – Code source complet de l'exemple
ConclusionLes Web Services font partie des enjeux stratégiques actuels. Sun,
avec J2EE, adopte la démarche de fournir un ensemble d'APIs et
d'interfaces, dans le but d'unifier les implémentations Java. A part
le WebService Pack de Sun, il n'existe pas de produit intégrant
toutes les APIs de Sun sur les Web Services. Chaque acteur fournit
actuellement son implémentation : IBM (WebSphere Toolkit), Bea
(Weblogic) et Apache (Axis). Les mois à venir seront riches en nou-veautés dans ce domaine. ■
Guillaume Fournier, consultant BK Consulting
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 42/53
Aborder la programmation Windows n'est pas une mince
affaire. Windows est un système d'exploitation multi
tâches complexe, qui ne se laisse pas aisément dompter. Ensuite
se pose le problème des outils. Windows est écrit en C. Alors dé-
buter avec ce langage est un choix qui se tient. Il existe un com-
pilateur libre, lcc-win32, doté d'une documentation suffisante,
même pour entreprendre l'écriture de gros programmes. Nous
avons d'ailleurs consacré une série d'articles à ce thème il y a
quelques temps dans Programmez! Toutefois, cette approche com-
porte des difficultés. Il est nécessaire de bien maîtriser C pour avoir une chance de s'en sortir. Ensuite, il faut comprendre la
structure complexe d'une application C asynchrone, c'est à dire
pilotée par les événements. Enfin, le comportement des appels
système n'est pas toujours simple à appréhender. Loin de là
même !
Apprendre la programmation Windows à travers le langage C# est
une autre possibilité, très intéressante. C# est le dernier langage
sorti des têtes pensantes de Microsoft. Certes, concevoir C#
comme un outil d'apprentissage ou pédagogique, n'a pas été la
motivation première de Microsoft ;-) Mais le fait est, que C# est un
langage robuste, sûr à l'exécution et facile à apprendre. Orienté
objet, sa bibliothèque d'exécution est un ensemble de classes ,qui
constituent une sur-couche aux APIs en C du système, ce qui en
simplifie considérablement la programmation, tout en apportant
une meilleure concision du code. Enfin, considération non négli-
geable, il est possible de programmer en C# uniquement avec des
outils gratuits. C'est d'ailleurs cet aspect de la question qui nous
intéresse aujourd'hui. Nous ne nous adressons pas aux profes-
sionnels, qui ont les moyens de s'offrir l'environnement Visual
Studio .NET et qui n'ont que faire de nos conseils. Nous nous
adressons aux débutants fauchés, mais pleins de bonne volonté :)
Nous considérons toutefois que le lecteur à quelques notions de
programmation objet.
Le matériel et les outils
Microsoft permet de télécharger l'environnement appelé "Micro-
soft .NET Framework Software Development Kit," qui contient
absolument tout ce qu'il faut pour écrire des programmes Win-
dows en C#, y compris une documentation exhaustive. Seulement
il y a une ombre au tableau : il vous faut un système d'exploita-
tion costaud. Autrement dit, vous devez programmer sur :
• Microsoft Windows NT 4.0
• Microsoft Windows 2000
• Microsoft Windows XP
Notons que Windows XP Pro est requis pour une utilisation com-
plète du SDK. Cependant, avec un 'petit' XP, seules les classesasp.net sont inopérantes, ce qui ne fera pas défaut au débutant.
La bonne nouvelle est, qu'une application C# peut être déployée
C#,langage solide et
relativement facile à
apprendre,est un
bon choix pour se
lancer dans la
programmation
Windows.
P R A
T I Q
U E
C#NIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
8
Par Frédéric Mazué
D é b u te r la p ro g ra m m a tio n
W indow s avec C #
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 43/53
et tourner sur un Windows 98 ou Millénium, pourvu que les librai-
ries d'exécution .NET soient installées sur ces systèmes. Etant
averti de tout cela, vous pouvez vous rendre à : http://msdn.micro-
soft.com/downloads/ pour tenter l'aventure et télécharger ce pan-
tagruélique bébé de 137 Mo. Si vous avez une connexion
poussive, l'achat du Cd-Rom pour moins de 10 dollars est une
option à considérer sérieusement. Enfin, puisqu'on en est aux
dépenses, l'achat d'un petit livre de poche sur C# peut être une
bonne idée. Il en existe d'excellents pour des prix ridicules. Par
exemple 'Formation à C# -- Microsoft Press', vous apprendra toutce dont vous avez besoin pour 10 Euros.
Une fois en possession de la SDK, vous devez bien sûr l'installer,
ce qui ne pose pas de problème. L'opération terminée, ouvrez une
fenêtre console et lancez le compilateur C# comme ceci :
csc
Si vous voyez un message du genre :
Microsoft (R) Visual C# .NET Compiler version 7.00.9466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright (C) Microsoft Corporation 2001. All rights reserved.
Tout est en ordre.
Les éditeurs
Un programme en C# doit être écrit dans un ou plusieurs fichiers,
contenant uniquement du texte, pour pouvoir être traités par le
compilateur. Pour cette raison, l'emploi d'un programme de traite-
ment de texte, qui insère des caractères spéciaux dans le docu-
ment est à proscrire. Vous pouvez employer le rudimentaire
bloc-note (Notepad) ou le un peu moins fruste Wordpad, pourvu
que vous sauvegardiez vos documents au format texte. Cela dit, il
est pertinent de vous équiper d'un éditeur dédié à la programma-
tion. Il en existe de nombreux, disponibles sur le net. Je vous sug-
gère de considérer Eclipse ( http://www.eclipse.org/ ). Cet éditeur
encore jeune, mais très prometteur ( figure 1 ) dispose d'un plugin
C# que vous pouvez téléchargez à http://www.improve.com .
Sachez toutefois que Java (Jdk >= 1.3) doit être présent sur votre
machine, pour utiliser Eclipse.
Une autre possibilité, celle qu'en tant que vieux dinosaure je pré-
fère, est d'employer le légendaire éditeur Emacs
( http://www.gnu.org ) En fa it j' ut il is e XEmacs
( http://www.xemacs.org ), dont l'interface est plus agréable. Emacs
dispose désormais de nombreux modes C#. Vous les trouverez
facilement sur le Web. Certains de ces modes sont très puissants,
mais assez lourds et intéresseront principalement les utilisateurs
chevronnés d'Emacs. Je vous suggère de télécharger un mode
Emacs C# simple, mais amplement suffisant àhttp://davh.dk/script/ . L'installation de ce mode, qui vient sous la
forme d'un seul fichier, consiste à déposer ce dernier dans le sous-
répertoire xemacs-packages\lisp\prod-modes de votre installation
de XEmacs. Ensuite, ajoutez ces lignes à la fin du fichier de confi-
guration .emacs.el ou init.el :
(autoload 'csharp-mode "csharp-mode"
"Major mode for editing C# code." t)
(setq auto-mode-alist (cons '( "\ \ .cs\ \ '" . csharp-mode ) auto-mode-alist ))
Si vous ne savez pas où localiser ce fichier, accédez y directement
depuis le menu 'Options|Edit Init File' d'Emacs. Tout est ensuiteautomatique.
Si au lieu d'Emacs, vous utilisez XEmacs, et selon la version de
celui-ci, il se peut que vous vous heurtiez à un message d'erreur
pour les fichiers C#:
file mode spécification error: (void-variable font-lock-constant-face)
La raison en est que la variable font-lock-constant-face, qui doit
détenir une fonte, n'existe pas par défaut dans votre XEmacs. Pour
y remédier, ajouter ces deux lignes :
(setq font-lock-constant-face nil)(make-face 'font-lock-constant-face)
JUSTE AVANT les lignes ajoutées plus haut.
Un coucou traditionnel
Il est maintenant temps de passer à la pratique en écrivant le pro-
gramme traditionnel. On suppose que le texte de ce code se situe
dans un ficher nommé coucou.cs.
class Coucou
{
public static void Main()
{System.Console.WriteLine("Coucou !");
}
}
Programmez N°49 • JANVIER 2003
69
> Figure 1: Ecriture de code C# avec Eclipse.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 44/53
P R A T I Q
U E
NIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
0
C#
Cet article n'ayant pas pour but d'expliquer C#, mais seulement
d'apprendre à utiliser des outils, nous ne donnons maintenant
que les explications minimum pour comprendre ce code.
• C# est un langage objet. Un programme C# est constitué d'une
ou plusieurs classes. Une classe dans le code source devient un
objet lors de l'exécution.
• Un programme C# doit avoir au moins une classe ayant une
méthode Main (avec un m majuscule). Cette méthode est alors le
point d'entrée du programme, c'est à dire que l'exécution de tout
programme C# commence par cette méthode Main.
• C# est équipé à la base d'un énorme jeu de classes, groupées
dans des namespace ou espaces de noms.
• Les classes ayant des propos communs sont groupés dans un
même namespace. Il est possible d'accéder à une classe avec une
notation pointée. Ainsi System.Console fait référence à la classe
Console de l'espace de nom 'System'.
• On invoque les méthodes d'une classe ou d'un objet également
avec cette notation pointée. Finalement System.Console.Writeline
invoque la méthode 'WriteLine' de la classe 'Console' de l'espace
de nom 'System'
Le Framework SDK vient avec une documentation complète. Vous
pouvez connaître tous les espaces de noms, toutes les classes et
leurs méthodes à votre disposition. Il suffit d'ouvrir la documenta-
tion, puis de choisir 'Reference' puis 'Class Libray' ( figure 2 ). Usez
et abusez de cette documentation.
Le compilateur C#
Apprenons maintenant à utiliser le compilateur C#. Celui-ci va
transformer le fichier texte coucou.cs en un programme exécu-
table. Dans une console et en étant situé dans le répertoire conte-
nant le fichier coucou.cs, tapez :
csc coucou.cs
Dès que le compilateur rend la main, vous pouvez apprécier le
résultat en tapant 'coucou' ( figure 3 ).
Le compilateur csc est relativement intelligent et a pris beaucoup
d'initiatives par lui-même. Il a généré un programme exécutable et
connecté celui-ci à une librairie d'exécution de C#. Dans ce cas, la
librairie est System.dll. Il est simple de connaître le nom de toutes
les librairies existantes: à chaque espace de noms de la documen-
tation correspond un fichier de même nom plus l'extension.dll.
Exemples :
Namespace Librairie
System System.dll
System.Drawing System.Drawing.dll
System.Windows.Forms System.Windows.Forms.dll
etc. etc.
Compiler du code, en se reposant sur la bonne volonté du compi-
lateur, va bien pour de petits exemples. Mais très vite apparaîtra le
besoin d'être beaucoup plus directif. Ainsi, nous pouvons spécifier
explicitement au compilateur que nous voulons qu'il génère un
exécutable de nom 'coucou' et qu'il y joigne la librairie System.dll.
On procède alors en utilisant des commutateurs en ligne de com-
mande:
• /target ou /t peut être suivi de exe, winexe, library ou module,
pour générer respectivement: un exécutable console, un exécu-
table Windows, un module ou une librairie.
• /out est suivi par le nom du fichier cible.
• /reference ou /r est suivi du nom des librairies qui seront jointes
à l'exécutable.
Ainsi nous aurions pu compiler notre programme comme ceci:
csc / t:exe / r:System.dll / out:coucou.exe coucou.cs
(Remarque: En pratique la librairie System.dll est systématique-
ment jointe par le compilateur C#. L'exemple ci-dessus a avant
tout une vocation pédagogique.)
S'il est nécessaire de joindre plusieurs librairies, on énumère
celles-ci en les séparant par des virgules. Par exemple :
/ r:System.dll,System.Drawing.dll,System.Windows.Forms.dll
Attention! Il ne doit pas y avoir d'espaces dans une telle énuméra-
tion. Ainsi :
/ r:System.dll, System.Drawing.dll,System.Windows.Forms.dll
est invalide. On verra dans un article à venir qu'il peut être pra-
tique de répéter un commutateur. Ainsi :
csc / t:exe / r:System.dll / r:System.Drawing.dll / out:coucou.exe coucou.cs
serait parfaitement correct.
Diviser pour régner
Avant d'aborder la programmation Windows et donc de faire des
choses amusantes, nous devons acquérir encore un savoir faire.
Dès qu'un programme grossit, il devient malaisé, voire insuppor-
table de concentrer le code dans un seul fichier. Nous devons doncapprendre à fragmenter un programme en de multiples petits
fichiers et à faire en sorte que le compilateur regroupe tout ça, lors
> Figure 2: La documentation du SDK décrit tous les espaces de noms et toutes les classes de C#.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 45/53Programmez N°49 • JANVIER 2003
71
de la génération de l'application. La technique est simple. Il y aura
un fichier 'principal' et les autres fichiers. Ces autres fichiers
seront compilés séparément un à un, non pas en exécutable mais
en modules. Un module peut être vu comme un fichier intermé-
diaire, analogue à un fichier objet du langage C. Soit le fichier prin-
cipal suivant :
/ / fichier coucou.cs
class Coucou
{
public static void Main()
{
DireBonjour coucou_ext = new DireBonjour();
coucou_ext.Bonjour();
}
}
et le fichier secondaire suivant :
/ / fichier CoucouExterne.cs
class DireBonjour
{
public void Bonjour()
{
System.Console.WriteLine("Bonjour a tous :-)");}
}
On compile d'abord les fichiers secondaires en modules. Nous n'en avons qu'un, donc:
csc / t:module / out:ce.ntm CoucouExterne.cs
Remarquez le commutateur /t qui demande la génération d'un
module. L'extension .ntm du fichier généré, est une abréviation en
lieu et place de .NeTModule, utilisé par défaut par le compilateur.
Nous n'avons maintenant plus qu'à compiler le fichier principa,l en
y intégrant notre module:
csc / t:exe / out:coucou.exe / addmodule:ce.ntm coucou.cs
Et voilà! ( figure 4 )
Mon make à moi
Nous savons éclater un programme en plusieurs morceaux. Le
revers de la médaille est qu'il faut recompiler sans omission tout
fichier, après modification, puis recompiler le fichier principal, pour
mettre l'application à jour. Ce qu'il nous faut, est un utilitaire pour
automatiser cette tâche fastidieuse. Un tel utilitaire s'appelle un
make. Vous pouvez télécharger gratuitement le GNU make à
http://www.gnu.org. Pour installer le make, il suffit de décompres-
ser l'archive et de mettre le PATH de votre système à jour, pour
qu'il pointe sur les exécutables.
Ceci fait, pour assurer la compilation de votre projet, vous devez
écrire un fichier Makefile. Nous en apprendrons les secrets petit à
petit. Voici le makefile capable de générer notre projet:
CC=csc
REF=/ r:System.dll
TARGETTYPE=/ t:exe
MO DULES=ce.ntm
ADDMODULES=/ addmodule:ce.ntm
TARGET=coucou.exe
$(TARGET): coucou.cs $(MODULES)
$(CC) $(ADDMODULES) $(TARGETTYPE) $(REF) / out:$(TARGET) coucou.cs
ce.ntm: CoucouExterne.cs
$(CC) / t:module $(REF) / out:ce.ntm CoucouExterne.cs
clean:
del *.exe
del * .ntm
Attention !! les lignes indentées DOIVENT débuter par une tablatu-
re et ne DOIVENT contenir AUCUN caractère d'espacement. Sinon
vous vous heurteriez à des messages d'erreur à faire dresser les
cheveux sur la tête.
L'opération de génération se lance alors par la seule commande
'make' dans la console ( figure 5 ). Notez que make peut être lancé
directement depuis XEmacs. Même chose depuis Eclipse, si vous
déclarez make comme un outil externe. Remarquez comment réagit
make, si vous le lancez une seconde fois. Essayez ensuite de modi-
fier un des fichiers puis relancez make. Observez le résultat.
Nous savons désormais tout ce qu'il nous faut, pour créer de
beaux programmes en C#. Nous mettrons cela en pratique la pro-
chaine fois, avec des applications Windows fenêtrées. C'est légiti-
me me direz vous :-) ■ par Frédéric Mazué
> Figure 3: Notre première compilation. Un début prometteur.
> Figure 4: Compilation en deux temps.
> Figure 5: Automatisez le travail de compilation avec un utilitaire make.
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 46/53
Préliminaires :Création de la base de données
Je vous propose de construire une application de gestion des com-
mandes de fleurs, pour un fleuriste. Je fais donc appel à votre
expertise pour créer la base de données.
Sashipa-Melba supporte les SGBD MySQL, Interbase, Oracle, SQL
Server, Access, HSQL. Choisissez en un parmi ceux-là. Voici le
script SQL pour MySQL. (cf. fin du fichier fleur.xml pour les autres)
CREATE TABLE FLEUR (
FleurId integer not null primary key,
Libelle varchar(100) not null UNIQUE
);
CREATE TABLE COMMANDE (
CommandeId integer not null primary key,
DateLivraison date not null,
Quantite integer,
FleurRef integer not null REFERENCES FLEUR(FleurId),
UNIQUE (DateLivraison, FleurRef)
);
Apprentissage de Sashipa
La source de votre application sera constituée d’un unique fichier
XML au format Sashipa. De façon automatique, ce fichier sera
ensuite transformé en source Java, qui sera alors compilé pour
vous donner une application Java.
Le fichier "fleur.xml" est un fichier texte classique portant l’exten-
sion ‘.xml’. Vous travaillerez avec votre éditeur de texte préféré
(JExt, UltraEdit, Emacs, Notepad, …) .
Un fichier au format Sashipa est composé d’un élément ‘applica-
tion’ contenant trois parties principales :
• L’environnement, qui décrit votre base de données physique.
• La GUI, c’est à dire votre application proprement dite. La des-
cription de la GUI s’appuie sur l’environnement.
• La couche d’accès aux données. C’est ici que sont décrites les
informations techniques de connexions.
<?xml version='1.0' encoding='ISO -8859-1' ?>
<!DOCTYPE application SYSTEM 'sashipa.dtd'>
<application name='AppliFleur'>
<environment>
<!-- ... -->
</ environment>
<graphicalUserInterface name='guiFleur'
type='application'>
<!-- ... -->
</ graphicalUserInterface>
<dataAccessStage>
<!-- ... --></ dataAccessStage>
</ application>
La technologie
Sashipa-Melba permet
de construire des
interfaces de bases de
données sansprogrammer,juste en
décrivant dans un
fichier XML au format
Sashipa.Pour me
suivre, je vous
demanderai uneconnaissance
minimale d’un des
SGBD/R supportés,
rien de plus.Mais
assez de causerie,
passons à la pratique !
P R A
T I Q
U E
XMLNIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
2
Par Thomas Mur
S G B D : d é ve lo p p e z d ’a b o rd ,
choisissez après !
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 47/53Programmez N°49 • JANVIER 2003
73
Première partie : Environnement.L’environnement décrit la structure de votre base de données, telle
qu’elle est stockée dans votre SGBD.
Le contenu est assez simple, je donne ici la description de la table
FLEUR. Vous trouverez le code source complet dans le fichier
fleur.xml.
<schemaTable name='tblfle'>
<physicalName>FLEUR</ physicalName>
<singularName>Fleur</ singularName>
<pluralName>Fleur(s)</ pluralName>
<schemaColumnSet>
<schemaColumn name='tblfle_FleurId' type='integer'
notNull='yes' pk='yes'>
<physicalName>FleurId</ physicalName>
<singularName>Identifiant</ singularName>
</ schemaColumn>
<schemaColumn name='tblfle_Libelle' type='text'
notNull='yes' maxCharacters='100'
defaultListLetterCount='20'>
<physicalName>Libelle</physicalName>
<singularName>Type de Fleur</ singularName>
</ schemaColumn>
</ schemaColumnSet>
<userKey>
<userKeyColumn schemaColumn='tblfle_Libelle' / >
</ userKey>
</ schemaTable>
On remarque le nom de la table interne au fichier XML : tblfle. Ce
nom est distinct du nom réel de la table (FLEUR). Lorsque d’autres
éléments référenceront la table FLEUR, ils utiliseront le nom inter-
ne bien sûr. Donc si un jour vous deviez changer physiquement le
nom de votre table, il n’y aurait qu’un seul endroit à mettre à jour
dans votre source XML. Cette distinction nom interne / nom phy-
sique est valable pour tous les éléments.
Dernière partie : Couche d’accès aux données.
Avant de voir la GUI proprement dite, jetons un coup d’œil sur la
couche d’accès aux données.
C’est ici que sont décrites les connexions vers les bases de don-
nées. Les informations sont différentes selon le SGBD que vous
choisissez, et le mode de connexion. Je donne ici l’exemple pour
MySQL en passant par ODBC. Pour les autres SGBD, il suffit d’in-
tervertir les commentaires dans le code source fleur.xml.
<dataAccessStage>
<dbAccessStage database='dbFleur'
architecture='clientDatabase'>
<!-- Exemple pour MySQL -->
<dbConnection type='odbc' dbmsType='MySQL'>
<dbConnectionString>DRIVER=MySQL;HOST=localhost;DB=Fleur
</ dbConnectionString>
<user>root</ user>
<password></ password>
</ dbConnection>
<dbAccessLog>
<filenameLogMain>Melba_Main.log
</ filenameLogMain>
<filenameLogUpdate>Melba_Update.log
</ filenameLogUpdate>
<filenameLogSelect>Melba_Select.log
</ filenameLogSelect>
</ dbAccessLog>
</ dbAccessStage>
</ dataAccessStage>
Remarquez en particulier, que l’attribut architecture est positionné
à ‘clientDatabase’. Ceci signifie que l’application sera générée en
un bloc. Vous pouvez aussi choisir ‘clientServerDatabase’ et une
servlet sera générée, en plus de votre application.
Deuxième partie : Interface Utilisateur.Les composants disponibles :
Une interface graphique est un ensemble d’écrans (screen en
anglais). Dans chaque écran, on trouvera des formulaires (forms).
De plus, certains formulaires contiennent des champs (fields). Ce
qui nous fait trois niveaux de composants.
• Screen : il n’en existe qu’une seule sorte.
• Forms : on en utilisera quatre.
- menuForm : Des boutons pour ouvrir d’autres screens.
- listForm : Pour afficher et imprimer le résultat d’une requête.
- cardForm : N’affiche qu’un enregistrement à la fois. C’est une
fiche qui contient un ensemble de champs.
- researchForm : Pour faire des recherches.
• Fields : on en utilisera deux.
- textField : Affiche une valeur, sous forme d’une ligne de texte.
- choiceFkField : Affiche les colonnes de l’identifiant utilisateur
(userKey) de la table référencée. Ce champ s’applique à une clef
étrangère.
Composant de GUI : le menuForm
Le premier écran qui s’affichera à l’utilisateur, sera un menu qui
permettra d’accéder aux autres écrans. On a donc un screen conte-
> Figure 1: Lescreen SMFleCmd :un menuForm
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 48/53
P R A T I Q
U E
NIVEAU :DÉBUTANT
Programmez N°49 • JANVIER 2003
4
XML
nant un menuForm. Le menuForm est une simple liste de boutons
qui ouvrent sur des screens.
Je vous donne ici le code du menu principal.
<screen name='SMFleCmd'>
<title></ title>
<formSet>
<menuForm>
<menuTitle height='70'>Base des Fleurs
</ menuTitle>
<firstButtonLocation x='100' y='150' / >
<buttonSize w='400' h='36'
verticalGap='18' / >
<menuButtonList>
<menuButton screen='SLFle'>
Liste des Fleurs</menuButton>
<menuButton screen='SCFle'>
Ajout de Fleurs</ menuButton>
<menuButton screen='SRCmd'>
Recherche de commandes</ menuButton>
<menuButton screen='SCCmd'>
Ajout de Commandes</ menuButton>
</ menuButtonList>
</ menuForm>
</ formSet>
</ screen>
On remarque que le formulaire référence quatre screens : SLFle,
SCFle, SRCmd, SCCmd.
Il est donc nécessaire de créer ces quatre autres screens. Je vous
propose de commencer par SLFle.
Composant de GUI : le listForm
L’écran ‘SLFle’ affiche la liste des fleurs, et pour chaque fleur, le
nombre de commandes. On a donc un screen contenant un listForm.
<screen name='SLFle'>
<title>Liste des Fleurs</ title><formSet>
<listForm db='dbFleur'
doubleClicScreen='SCFle'
insertScreen='SCFle'
delete='yes'>
<bounds x='10' y='10' w='500' h='300' / >
<schemaTableRef schemaTable='tblfle' / >
<instanceColumnList>
<instanceColumn
schemaColumn='tblfle_Libelle'
letterCount='36' sort='asc' / >
<agregatInstanceColumn
schemaFk='fk_cmd_fle' type='count'
letterCount='5' sort='desc'>
<title>Nb Cmd</ title></ agregatInstanceColumn>
</ instanceColumnList>
</ listForm>
</ formSet>
</ screen>
Le listForm se base sur une table définie dans l’environnement. Ici
la table ‘tblfle’, qui correspond à la table réelle FLEUR.
Après la table principale, on décrit les colonnes à afficher. Nous en
voyons deux sortes : une instanceColumn correspond à une colon-
ne réelle de la table.
Une agregatInstanceColumn correspond à une fonction d’agregat
dans la clause SELECT, pour une table dépendante. La nôtre tra-
vaille sur la clef étrangère ‘fk_cmd_fle’ définie dans l’environne-
ment. On remarque que le formulaire référence le screen SCFle par
deux fois. Ce dernier était de plus référencé dans le menuForm de
la section précédente. Voyons comment créer ce screen.
IInstances de colonnes
Une ‘instanceColumn‘ représente la colonne d’une instan-
ce de table (une table surnommée) dans la clause FROM
de la requête SQL sous-jacente.
Lorsqu’on ne précise pas l’instance de table, l’applica-
tion utilise celle par défaut de la table physique définie
dans l’environnement.
Composant de GUI : le car dForm
L’écran ‘SCFle’ montre la fiche d’une seule fleur à la fois, c'est-à-
dire toutes les informations la concernant. De plus, à chaque Fleur
est associé un ensemble de Commandes. On a donc un screen
contenant un cardForm et un listForm.
<screen name='SCFle'>
<title>Fiche d'une fleur</ title>
<formSet>
<cardForm db='dbFleur'>
<title>Fiche d'une Fleur</ title>
<location x='10' y='10' / >
<cardSchemaTableRef
schemaTable='tblfle'
updateAfterInsert='yes'
multipleInsert='no' queries='sudi' / >
<fieldList>
<textField>
<schemaColumnRef schemaColumn=
'tblfle_Libelle'/ >
</ textField></ fieldList>
</ cardForm>
<listForm db='dbFleur'>
<!-- ... liste des commandes ... -->
</ listForm>
</ formSet>
</ screen>
Le cardForm travaille sur une table définie dans l’environnement.
Ici la table ‘tblfle’, qui correspond à la table réelle FLEUR. Ensuite
vient la description des champs (fields).
Le field textField affiche une valeur sous forme de texte. Ici, c’est
la valeur correspondant à la colonne tblfle_Libelle (la colonne réel-
le Fleur.Libelle). Je vous passe le contenu du listForm des commandes, reportez-
vous au fichier fleur.xml.
> Figure 2: Le screen SCFle :
un cardForm et son listFormdépendant
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 49/53Programmez N°49 • JANVIER 2003
75
Composant de GUI : le researchForm
Le menu permettait aussi d’ouvrir un écran de recherche de com-
mandes. Voyons comment le construire. On aura un screen conte-
nant un researchForm. Ce dernier est composé d’une liste de
champs (fields) ainsi que d’un listForm pour afficher le résultat.
Que du déjà vu !
<screen name='SRCmd'>
<title>Recherche de commandes</ title>
<formSet>
<researchForm>
<title>Recherche de commandes</ title>
<fieldList>
<choiceFkField>
<schemaFkRef schemaFk='fk_cmd_fle' / >
</ choiceFkField>
<textField>
<schemaColumnRef schemaColumn=
'tblcmd_DateLivraison' />
</ textField>
</ fieldList>
<listForm db='dbFleur'>
<!-- ... liste des commandes ... -->
</ listForm>
<researchFormCriteriaBuilder mode='and'
defaultSubEmptyAction='ignore'
emptyAction='stuck' / >
</ researchForm>
</ formSet>
</ screen>
On remarque dans le code ci-contre le champ ‘choiceFkField’ qui
affiche une valeur de clef étrangère. On retrouvera le même dans
la fiche (cardForm) de la commande (écran SCCmd, à voir dans le
fichier fleur.xml).
Remarque n°2 : le listForm de la liste des commandes est exacte-
ment le même que celui de l’écran SCFle ! Plutôt que de faire du
copier/coller, il est préférable de le définir une seule fois dans un
pot commun. Voir donc le code complet dans fleur.xml.
Comment générer l’application
Il vous faut avant tout installer le melbalab (à télécharger sur
www.sashipamelba.com). Voici les étapes d’installation :
• Installez le J2SDK 1.4 (i.e. JDK) de Sun Microsystems, si ce n’est
déjà fait.
• Dézippez le melbalab dans un répertoire pas trop difficile
d’acces depuis le shell. (Mettez-le proche de la racine).
• Editez le fichier <melbalab-home>/melbabuild.bat (Windows) ou
<melbalab-home>/melbabuild (Linux), puis définissez la variable
JAVA_HOME_BIN. Si vous souhaitez générer des servlets, définis-
sez aussi JAVAX_JAR.
• SGBD : vérifiez que votre SGBD est prêt, et que les pilotes ODBC
ou JDBC sont installés.
Maintenant, vous êtes prêt à générer votre application.
• Copiez le fichier " fleur.xml " vers le répertoire <melbalab-
home>/src_xml s’il n‘y est pas déjà.
• Editez-le et modifiez l’élément dbConnection (en fin de fichier)
pour pointer vers votre SGBD.
• Ouvrez un shell (une boîte DOS)• Allez dans le répertoire <melbalab-home>/ (commande cd <nom-
repertoire> …)
• Saisissez melbabuild fleur .
Votre application générée est le fichier fleur.jar, qui est déposé
dans <melbalab-home>/result . Exécutez-la.
Les coulisses…
Un petit schéma pour résumer les étapes de la construction avec
Sashipa-Melba :
Votre fichier XML est traduit en source Java (que vous pouvez visua-
liser dans le répertoire <melbalab-home>/work/src_java/ , après
construction). Le source Java ainsi généré ne contient que des
appels de la bibliothèque de programmation Melba. Melba est le
gros moteur Java, qui contient toute la logique de votre application.
Javac est le compilateur Java du J2SDK (Sun Microsystems).
Le fichier que génère en fin de compte le melbalab est un fichier
jar (Java Archive). Sachez qu’un fichier ‘.jar’ est en fait un fichier Zip. Il vous suffit de renommer l’extension en ‘.zip’ pour pouvoir le
dézipper, s’il vous prend l’envie de jeter un coup d’œil dedans.
Votre application générée est une application Java. Il faut une
machine virtuelle Java pour pouvoir l’exécuter.
Petit tour d’horizon
Etats et exportsDepuis le menu contextuel de chaque listForm, vous avez accès
aux états disponibles. Chaque listForm dispose d’un état par
défaut sans que vous l’ayez défini. Il est bien sûr recommandé
d’en créer d’autres. Depuis ce même menu contextuel, vous pou-
vez exporter vos données vers un fichier texte ou par copier/coller
(dans Excel par exemple).
LicencesLes éléments de la technologie Sashipa-Melba sont tous sous
licences publiques. Les applications générées avec, sont bien sûr
votre propriété, pour des buts commerciaux ou non.
Architectures généréesUn apport de Sashipa-Melba qui vous changera la vie, c’est la faci-
lité avec laquelle vous pouvez changer et adapter l’architecture de
votre application.
Voici les architectures disponibles :
• La partie GUI (cliente) peut être une application ou une applet.
• La partie serveur peut être une servlet, ou peut être incorporée
dans la GUI. Dans le cas d’une servlet, les fonctionnalités multi-
utilisateurs sont activées avec les verrous sur enregistrements et
le rafraîchissement des caches sur tous les clients.
• L’accès aux bases de données se fait, via ODBC, JDBC, ou par
une page Web dynamique telle qu’une PHP (pratique lorsque
votre hébergeur ne propose pas les servlets !).
• Les logiciels générés sont en Java. Donc portables sur la plupart
des OS.
• Un nombre croissant de SGBD sont supportés.
Vous trouverez la combinaison la plus adaptée à vos besoins. Tous
ces choix structurels sont de toutes façons faciles à changer en fin
de développement. ■Thomas Mur
> Figure 3: Constructions réalisées par le melbalab
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 50/53
udique ludiqueludiqueludique
ludique ludique
Programmez N°49 • JANVIER 2003
L’utilité de cettetechniqueL’environment mapping est une techniquequi permet de simuler un environnementtridimensionnel très réaliste et utilisantpeu de ressources matérielles. Imaginez unjeu vidéo qui utiliserait un univers 3D com-plet et riche en détails. Dans l’absolu, lesdéveloppeurs devraient modéliser et tex-turer chaque détail de cet environnement.Prenez par exemple un jeu vidéo de cour-se automobile avec un circuit. Idéalement,le développeur devrait intégrer le circuit en3D modélisé et texturé intégralement.Cette approche est mauvaise, car elle de-manderait d’une part, trop de temps au ni-veau de la modélisation 3D et utiliserait,d’autre part, trop de ressources système.
Dans la pratique, les développeurs de jeux vidéo ne travaillent heureusement pasainsi. Même s’il est vrai que certains jeux 3D utilisent à présent une multitude d’ob-jets 3D, représentant une somme impres-sionnante de polygones, certains élémentsdu décor ne sont jamais entièrement mo-délisés, comme l’environnement extérieur d’un jeu.
La solution " Skybox "
Pour illustrer nos propos, nous allons vousproposer de développer un programmeutilisant un modèle 3D qui porte le nom
de “Skybox” . Littéralement, ce terme an-glais signifie " boîte de ciel " en français.Plus précisément, un Skybox est un modè-le 3D cubique, souvent utilisé dans les jeux vidéo, pour simuler un environnement tri-dimensionnel d’extérieur ou d’intérieur. Re-prenons l’exemple d’un jeu de course 3Dsur un circuit. Certains éléments du décor seront bien évidemment entièrement mo-délisés, comme par exemple la piste ou lesstands. Mais pensez-vous que l’horizon, leciel ou les montagnes environnantes sontréellement modélisées ? La réponse estnon, bien sûr. La réalité, et vous vous endoutez probablement à présent, est biendifférente. Cet environnement d’extérieur,autrement dit le paysage, est effectivementmodélisé en 3D, dans la mesure ou le pay-sage est texturé sur un cube 3D de grandetaille. Mais ce sont des textures planes qui
la composent.Un cube comporte six faces distinctes.Dans notre cas, il représente une boîte sur laquelle on aurait texturé six images repré-sentant le paysage du jeu. Rappelonsqu’une face en 3D est constituée de deux polygones, soit au total un modèle 3D de12 polygones indépendants. Ainsi, avecseulement 12 polygones, nous sommes ca-pables de " modéliser " un environnementtridimensionnel très complet et très richeen détails, sous condition que les six tex-
tures " mappantes " du cube, soient suffi-samment détaillées et réalistes (voir la fi-gure n°1 ).
Les générateurs depaysage
tridimensionnelMais comment font les développeurs dejeux vidéo pour créer ces paysages magni-fiques et réalistes ? Le talent de leurs info-graphistes suffit-il à donner autant de ri-chesse et de profondeur ? Et bien non.Tout comme dans le cinéma, les dévelop-peurs de jeux vidéo utilisent des logicielspuissants et performants, optimisés pour générer des environnements tridimension-nels de toute beauté. Les plus connusd’entre eux sont Bryce 5.0 ( figure n°2 ) de
l’éditeur Corel (http://www.corel.com/,initialement développé par MetaCreations),ou bien encore le générateur "Vue d’esprit3.0" ( http://www.e-onsoftware.com/Pro-
ducts/ VueIndex.php ).
Cependant, nous utiliserons dans cet ar-ticle le logiciel freeware, qui porte le nomde Terragen ( http://www.planetside.co.uk )et qui commence à prendre une place im-portante parmi les logiciels de générationde paysage. En effet, la gratuité de Terra-
gen fait de ce logiciel un redoutable adver-saire, face à Bryce et consort. Même s’il estvrai que Terragen est limité dans sa ver-
DirectX et la technique3Dd’environnement cubique
8
Les développeurs 3D doivent fréquemment simuler un
environnement tridimensionnel. Ils font donc souvent appel
au développement de techniques et d’astuces pour créer
leurs univers 3D. Parmi toutes les techniques existantes
aujourd’hui, les développeurs de jeux vidéo ont mis au
point une technique qui porte le nom d ’env i ronmen t
mapp i ng . Dans cet article, nous allons vous montrer
comment utiliser la technique fondamentale
d’environnement cubique, en développant intégralement
une application compilée, via Visual C++ et le SDK
(Sof tware Deve lopm en t K i t ) DirectX version 8.1.
Par Laurent Jayr
Première partie
Figur e n°1 : les six f aces d’un cube dépliépeuvent être ut il isées pour simul er un environnement d’extérieur tridim ensionnel (autrement dit un paysage).
ludique
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 51/53Programmez N°49 • JANVIER 2003
u que ludiu queu que
ludiqueludique ludique udique
sion freeware (avec une limitation destailles des images générées), son rapportqualité prix est tellement exceptionnel,qu’il serait dommage de ne pas au moinsl’essayer. De plus, Terragen est réellement
performant, mais un peu en deçà de Bryceou de Vue d’Esprit, au niveau de ses capa-cités. Cependant, sa jeunesse (la dernièreversion t en cours est la 0.8.44) laisse pré-voir une marge de progression énormeavec ce logiciel qui n’a que trois ans d’âge.De plus, une version avec licence payantevous permettra de générer des images dedimensions supérieures.Pour utiliser Terragen dans sa version free-ware, téléchargez le partir de cet URL :http://www.planetside.co.uk/terragen/down
load.shtml.
La création de SkyBoxavec TerragenL’autre particularité de Terragen, est saprise en main rapide. Pour générer despaysages diversifiés et originaux, il est in-dispensable de maîtriser complètement ce
logiciel, mais pour générer un exemplesimple, quelques minutes suffiront.
Commencez donc par installer Terragen sur votre ordinateur. L’installation de ce logi-ciel est simple et sa prise en main rapi-
de. Son interface utilisateur n’est pas trèsévoluée, mais à le mérite d’être suffisam-ment claire et explicite, pour permettre unemaîtrise rapide du logiciel (voir la figuren°3 ).
Sur le site http://www.planetside.co.uk/ter-ragen/ , vous trouverez un certain nombrede tutoriaux de qualité, expliquant com-ment générer des environnements d’exté-rieur avec Terragen.Pour générer les images nécessaires ànotre skybox , il est préférable d’utiliser leprogramme et le script TerraSky disponibleici : http://www.planetpointy.com/wolf/map-ping/files/terrasky.shtmlCe programme vous permettra de générer automatiquement les 6 faces de notre sky-
box , sans avoir besoin de le faire manuel-lement par une rotation de 90° de la camé-ra. Le script est donc très pratique pour créer les images de multiples skybox .Une fois générées, les 6 textures de notreskybox seront appliquées au modèle 3Dcubique, qui porte le nom de fichier "sky-
box01.x". Les fichiers de format X sont desfichiers de données de modèles 3D, spéci-fiques à DirectX (voir plus loin paragraphe" Le fichier de format X "). Ils peuvent êtreconstruits à partir de la plupart des logi-ciels de modélisation 3D, comme par exemple 3D Studio ou Maya. Mais Terragenne peut pas exporter de fichier de formatX, heureusement, notre modèle est trèssimple (un cube ne contient que 12 poly-gones) et nous pouvons utiliser l’un deceux disponibles avec le SDK DirectX.
Notre programme exemple intègrera aussiun second mesh 3D sphérique, qui se pla-cera au centre de la skybox . Cette petite
sphère utilisera une propriété d’ef-fet spécial de DirectX pour réfléchir l’environnement cubique (un peucomme le ferait un miroir en formede boule). Cet effet est très intéres-
sant (voir la figure n°4 ) et i l seraégalement possible de faire pivoter l’angle de vision autour de cettesphère avec la souris. Passonsmaintenant à la seconde partie dudossier en commençant par l’instal-lation du SDK DirectX 8.1.
Le SDK DirectX 8.1Plus besoin de présenter DirectXaujourd’hui. Ce SDK (Software De-
velopment Kit, ou kit de développementlogiciel en français) est devenu une réfé-rence absolue pour la programmation mul-timédia sur Windows et X-Box.Rappelons simplement que DirectX est unoutil extraordinairement performant, pour réaliser des applications multimédia sousWindows, car il couvre tous les aspects du
développement d’un jeu vidéo, par exemple en gérant l’affichage de l’image en2D ou 3D, du son, de la connexion réseauet de la gestion des périphériques.De plus, DirectX permet d’optimiser lesperformances de l’application développée,en fonction des caractéristiques intrin-sèques de l’ordinateur et de ses périphé-riques. Par exemple, si une fonctionnalitéspécifique est développée, DirectX va s’as-surer premièrement, que cette fonctionna-
lité est bien gérée par les périphériques del’utilisateur (carte vidéo, carte son, etc.).Dans le cas contraire, DirectX peut permu-
Figu re n°2 : Les étap es de créat ion d’ un paysage avec un générateur d’environnement comme Bryce 5.0.
Figure n°3 : Fenêt re p ri nci pa le du logici el Terragen
Figure n°4 : Programme exemple d’u n skybox avec un modèle 3D sphérique réfléchissant .
0
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 52/53Programmez N°49 • JANVIER 2003
ter sur une couche d’abstraction logicielle
(la couche HEL) et qui serait susceptibled’émuler la fonctionnalité requise.Aujourd’hui, la dernière version disponiblede DirectX, est la version 8.1b. Mais il estprobable que la version 9.0 sera dispo-nible avant la fin de l’année. Vous pouvezrécupérer le SDK DirectX (le package C++seul suffira) à l’adresse URL suivante :http://msdn.microsoft.com/downloads/ (tapez " DirectX SDK " dans le champ derecherche). Ne téléchargez que le compo-sant Visual C++, si vous ne souhaitez pasfaire de développement en Visual Basic.
Configuration del’environnement VisualC++ avec DirectXL’un des problèmes récurrents rencontréspar les néophytes en DirectX, provient d’undéfaut de configuration de l’environnementDirectX. La procédure n’est pas très com-plexe, mais elle est indispensable pour nepas rencontrer de problèmes,
lors de la compilation ou del’édition des liens du code sour-ce. Dans ce paragraphe, nous al-lons donc rappeler la procédurede configuration des composantsDirectX avec Visual C++.Nous partons du principe que leSDK Direct 8.1 ou supérieur estinstallé sur votre ordinateur, enmode Debug si possible, bienque ce ne soit pas obligatoire.Nous partons aussi du principe
que vous utilisez Visual C++ .NET(la version 7.0 de Visual C++)comme environnement de déve-
loppement. Celadit, si vous utili-sez une versionantérieure de Vi-sual C++, le mode
opératoire deconfiguration estsensiblement lemême.Le processus quevous allez suivreici sera définitif,sauf si bien sûr vous décidez dele supprimer. Vousallez donc, dans
un premier temps, configurer Visual C++
.NET, de façon à ce qu’il reconnaisse les bi-bliothèques et autres fichiers Include duSDK DirectX, comme prioritaires sur tousles autres. Pour cela, il faut ajouter le che-min d’accès à ces fichiers dans l’environ-nement.1 - Commencez par les fichiers Include. Sé-lectionnez dans Visual C++ .NET le menuOutils, puis la catégorie Options. Sélection-nez l’icône Projets et l’option Répertoiresde VC++ (voir la figure n°5 ).2 - Dans cette option, vous devez rajouter le chemin d’accès aux fichiers Include duSDK DirectX. Sélectionnez Fichiers Includedans la boîte de sélection en haut à droi-te, sous Afficher les répertoires pour :.Cliquez ensuite sur l’icône Nouvelle ligne(deuxième icône en haut à droite en des-sous de la boîte de sélection Afficher lesrépertoires pour :). Entrez le cheminC:\DXSDK\Include, si le SDK DirectX est sur votre disque dur C bien entendu, en pre-mière position sur la liste des répertoires(voir l’image précédente).
3 - À présent, vous devez intégrer le che-min d’accès aux bibliothèques du SDK Di-rectX. Sélectionnez donc Fichiers de biblio-thèques, toujours dans la boîte desélection Afficher les répertoires pour :
(voir la figure n°6)Entrez en première position le chemin d’ac-cès C:\DXSDK\lib (voir l’image précédente).Cliquez sur OK et retournez au menu de Vi-sual C++ .NET.Le chemin d’accès aux bibliothèques etaux fichiers Include du SDK DirectX étantconfiguré pour Visual C++ .NET, il vous fau-dra intégrer les dépendances supplémen-taires spécifiques à votre projet en coursde développement dans l’éditeur de liens.Prenons par exemple notre projet env_cu-
bique.vcproj que vous trouverez sur le CD-Rom.Ce projet a besoin de trois fichiers de dé-pendances pour l’éditeur de liens et pour générer un fichier exécutable. Ces fichierssont d3d8.lib, d3dx8.lib et winmm.lib . Sivous omettez d’intégrer ces fichiers, il voussera impossible de générer un fichier exé-cutable avec Visual C++ .NET, et l’éditeur de liens vous retournera une ou plusieurserreurs.1 - Pour insérer ces fichiers de dépen-dances, cliquez sur le nom de votre projetdans la fenêtre Explorateur de solutions(ici, cliquez sur env_cubique.vcproj ), puissélectionnez dans la barre de menu Projet
la catégorie Propriétés pour ouvrir la fe-nêtre Page de propriétés de env3D2.
( figure n°7 )2 - Sélectionnez ensuite l’icône Editeur de
liens et l’option Entrée . Dans la fenêtredroite, vous pouvez alors lire Dépendances
supplémentaires sur la première ligne d’untableau de saisie (voir l’ima-
ge précédente). Saisissezalors le nom des trois fi-chiers de bibliothèques né-cessaires pour votre projeten les séparant avec un es-pace, comme sur l’exemplevisible dans la figure précé-dente. Cliquez finalement sur OK.La configuration de VisualC++ .NET avec le SDK DirectXest à présent terminée.
La bibliothèque de fonc-tions 3D Direct3DXLa partie la plus intéres-
ue ludique
lu d iq u e lu d iq u e
Figure n°5 : pr emière étape du processus de conf igurat ion du SDK
Figure n°6 : In tégrat ion du chemin d’accès aux b ibl io thèques du SDK D irectX 81
8/15/2019 Programme z 049
http://slidepdf.com/reader/full/programme-z-049 53/53
u que u queu queludique
ludique ludique udique
sante de ce dossier est probablement lecode source lui-même. Nous utilisons dansce dernier quelques fonctions de la biblio-thèque Direct3DX.Direct3DX, ou plus simplement D3DX, est
donc une bibliothèque d’utilitaires desti-nés aux développeurs DirectX 8.1. Elle fa-cilite l’utilisation des fonctionnalités avan-cées de Direct3D. Les utilitaires fournisavec D3DX facilitent ainsi l’utilisation desmodèles 3D (mesh 3D), des Single Skin-ning Animations, des Shaders (matériaux),des textures, du bump mapping, des qua-ternions, ainsi que d’autres fonctions trèsutiles en 3D graphique.Pour certaines fonctionnalités avancées denotre programme, vous allez utiliser cette
bibliothèque d’utilitaires, notamment pour la création d’effets spéciaux comme le ré-fléchissement des surfaces.Dans ce dossier, nous allons égalementutiliser une classe de base qui facilitera lamanipulation de cette technique. Cetteclasse, nommée class CD3DApplication, estdéfinie dans le fichier d3dapp.cpp directe-ment intégré dans le projet.
La structure du projetÉtant donné la complexité du projet et l’uti-lisation d’une bibliothèque supplémentaire,comme d3dx.lib, il est préférable de décrirel’architecture du projet pour bien cerner etcomprendre le déroulement du programme
(voir la figure n°8 ).Ainsi, le projet intègreun fichier principal,e n v _ c u b i q u e . c p p ,contenant le cœur duprogramme.
Les fichiers d3dapp.cpp
et d3dapp.h sont aussitrès importants car ilsintègrent la classe debase de class CD3DAp-plication que vousallez dériver pour le
programme.L f i i é é d l fi hi
programme utilisant cette classe doit inclu-re ces ressources.Enfin, les fichiers d3dutil.cpp et d3dutil.hcontiennent des macros et des fonctionspermettant de manipuler des objets Di-rectX plus facilement.
Le fichier de format XLe format de fichier X fait référence aux fi-chiers d’extensions .x pour DirectX. Les fi-chiers X ont été introduits avec DirectX 2.0.Une version binaire de ce format a ensuiteété introduite avec la version 3.0 de Di-rectX. DirectX 6.0 a intégré par la suite desinterfaces et des méthodes qui ont rendu
possible la lecture et l’écriture de fichiers X.Les fichiers X fournissent un format mani-pulable permettant de stocker des mo-dèles, des textures, des animations et desobjets 3D prédéfinis. De plus, il est pos-sible de stocker des chemins prédéfinispour la lecture en temps réel d’animations
l L i l hié hi
Pour finir, le format de fichier X fournit desprimitives de bas niveau sur des applica-tions qui définissent des primitives de hautniveau, à travers différents gabarits.
Conclusion de lapremière partieIl est temps à présent de conclure cettepremière partie sur la technique d’environ-nement cubique. A ce stade, nous avonssimplement décrit la technique et le logi-ciel Terragen, défini l’organisation du pro-jet et décrit comment configurer le SDK Di-rectX avec Visual C++. Dans la prochaine
partie, nous attaquerons la description ducode source que vous pouvez dès à pré-sent consulter sur le CD-Rom.Cependant, si vous souhaitez en savoir plus sur la programmation 3D en particu-lier et la programmation DirectX en géné-ral, nous vous invitons à consulter l’ouvra-
" Di X " d l ll i C kB k
gure n°8 : les f ich ier s de ode source du p rojet nv_cubique.vcproj
Figur e n°7 : Dépendances supplément ai res spécif iques au proj et
ludi