Programme z 049

53

Transcript of Programme z 049

Page 1: Programme z 049

8/15/2019 Programme z 049

http://slidepdf.com/reader/full/programme-z-049 1/53

Page 2: Programme z 049

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

Page 3: Programme z 049

8/15/2019 Programme z 049

http://slidepdf.com/reader/full/programme-z-049 3/53

Page 4: Programme z 049

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

Page 5: Programme z 049

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

Page 6: Programme z 049

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

Page 7: Programme z 049

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 

Page 8: Programme z 049

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

Page 9: Programme z 049

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 

Page 10: Programme z 049

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

Page 11: Programme z 049

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é

Page 12: Programme z 049

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

Page 13: Programme z 049

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

Page 14: Programme z 049

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

Page 15: Programme z 049

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

Page 16: Programme z 049

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."

Page 17: Programme z 049

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 

Page 18: Programme z 049

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 ?

Page 19: Programme z 049

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.

Page 20: Programme z 049

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

Page 21: Programme z 049

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.

Page 22: Programme z 049

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...

Page 23: Programme z 049

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,

Page 24: Programme z 049

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.

Page 25: Programme z 049

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…

Page 26: Programme z 049

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.

Page 27: Programme z 049

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

[email protected]

Page 28: Programme z 049

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 ?

Page 29: Programme z 049

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

([email protected])

Page 30: Programme z 049

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.

Page 31: Programme z 049

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.

Page 32: Programme z 049

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.

Page 33: Programme z 049

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.

Page 34: Programme z 049

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 

Page 35: Programme z 049

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

Page 36: Programme z 049

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

Page 37: Programme z 049

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.

Page 38: Programme z 049

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é

 [email protected]

> Figure 4:  Sous Linux, tout finit par aboutir dans la file d'impression.

Page 39: Programme z 049

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

Page 40: Programme z 049

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

Page 41: Programme z 049

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

Page 42: Programme z 049

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 #

Page 43: Programme z 049

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.

Page 44: Programme z 049

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#.

Page 45: Programme z 049

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é

 [email protected]

> 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.

Page 46: Programme z 049

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 !

Page 47: Programme z 049

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

Page 48: Programme z 049

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 

Page 49: Programme z 049

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 

[email protected]

> Figure 3: Constructions réalisées par le melbalab

Page 50: Programme z 049

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 

Page 51: Programme z 049

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

Page 52: Programme z 049

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

Page 53: Programme z 049

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