Home
Filière Informatique de gestion www.hevs.ch
Contents
1. Window1 Gi TestWindow E sf custom CustomClass rs Class Class A Class ivindow Window S qT a aP customClassList 4 El Fields e e e DR a cg d filePathUnitobjectClassW GenerateTestService A Er aW generationFolderName Class aoa LS a cg E Methode z activateButton El Fields a button_testGeneration_Click aP appXMLFileName a button_test enerationtxec_ Click ae Envy 3 bwParti_dowork aP cscPath 5 bwParti_pragressChanged ae gts aP csproixXMLFileName ee _ a bwParti_runWorkerCompleted a aP dataCSVXMLFileName WSParameter E a bwPark2_dowWork ef dataXMLFileName Class AN bwPartz_progressChanged Pid FilePathObjectClass S a bPartz_runworkerCompleted aP FilePathUnit bjectClass a parametersList 4 init window s FinalQutputDirectory saisieDesTests aW generationFolderName Testwindow d msbuildGenerationFilePath e updateStatusBarltem a msbuildPath ae namespace seneratedClient WebServiceOperation Dik gW nunitObjectClasseName Class sw operationsList a nunitTestClasseName V i proxyFileName a relativePath a windowhameseneratedClient a i Properties FileGeneration SL a no FilePathObjectClass HE P Fl FilePathLnitobjectClass x si E Methods M o generateltForTest mIDataGeneration q a xdg w generateltForTest2 Class ei r GenerateTestService TestResultWind C
2. Leo Eeleren Eeer EE EE Background FFF8E2F1 gt lee Eeer Nemo e sel Ee erer tee HorizontalAlignment Left MinWidth 120 Visibility Collapsed Foreground Red gt lt StackPanel gt Vionnet Olivier HES SO Valais juin 2008 34 217 Hee co em NALLIS VI VALAIS User Control using Ws ane using using using using using DS tn using uing using using De ah ake Code behind System System System System SSES System System System System SyS TEmo SE rent System System Collections Generics ng Text Windows Windows Controls Windows Data Windows Documents Windows Input Windows Media Windows Media Imaging Windows Navigation Windows Shapes namespace WCFCalculator userControls Puel soca ciel lieve We DOU ENT UserControl EAR te d D INSEE OC UOTE ciclo Ses IOS EOC loys sence InitializeComponent RoutedEventArgs e Boolean isError false uniquement pour montrer que l on peut faire une gestion du contenu saisi E Te BO Eed SEET Deh rico Exue Ue Lapeer Ora OMe Mira le erreur Sy Seem Windows Vis HOMME msiiolie EE Wale ile 7 End traitement erreur LE 1 LsSError EE EE System Windows Visibility Collapsed Visibility Collapsed public EE reed HOME TC Sel EISE p blic void seuUCValvue Stieind EE Entre Eeer Tce
3. Vionnet Olivier HES SO Valais juin 2008 143 217 YP VALAIS 229558 9 9 8 9 8 9 9 9 8 9 8 5 8 9 8 8 9 8 8 9 8 8 8 8 8 8 9 ee 8 8 8 sees 8 8 8 8 8 8 8 8 8 9 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 s Hes so WALLIS Sssssssssssssssssssssssscssssssossssscsssssssssssssssssssssssssssssssssssssssssssss 200000000000000000000000000000LOL0OCCOCROC0CCCOLOLOO0C000000000000000000000000000000000e lt ToolBar gt lt ToolBarTray gt lt Stackeamel MS Window D nB m Do B Tl IF 13 6 5 2 Statusbar Pour afficher des informations telles que du texte des images ou des contr les en bas de fen tre il est galement possible de sp cifier un autre emplacement gr ce a l attribut VerticalAlignment l l ment StatusBar est l id al Il est constitu de StatuBarltem dans lesquels on place les informations afficher Un exemple avec la barre de status plac e volontairement en haut de la fen tre lt StatusBar Name sbar VerticalAlignment Top Background Beige gt Stauvusbar ITEM lt TextBlock gt Ready lt TextBlock gt lt StatusBarltem gt lt Seebulsbaril rem lt Separator gt lt StatusBarltem gt lt StatusBarItem gt Pur COn Polton Elreon lt StatusBarltem gt lt STCATUSBALC ITEMA lt Separator gt lt StatusBarltem gt lt StatusBarItem gt lt TextBlock gt Ready lt TextBlock gt lt StatusBariltem gt lt Sbauuobar Ready Ready 13 6 5 3 Men
4. din eo ee Ehe TOR ENT AT PIS RO ER lee Ter green 1 d EE lt Ho rev Elter ee eV ANNE a EI SECTE EC Ur e ee E IPS ere ANT ROC a EE Te GDS CARRE Nell ence Mio cay 7s R MeElM 5 eebe Une fois que tous les types ont t trait s il n y a plus qu construire les objets et y mettre les donn es membres Je commence toujours de l objet le plus haut parent pour arriver l objet le plus bas enfant Le for s occupe de traiter le tableau de Personne A chaque fois un objet Personne est cr et les membres sont renseign s Vionnet Olivier HES SO Valais juin 2008 38 217 TUE EE EEE EEE EE WW TE ET ER ES EE EE Se et Will Hes so eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegeeeeeeee E WER EE La 2 boucle for s occupe du tableau d Amis Le principe est le m me un objet de type Ami est cr rempli et stock dans une liste A la fin la liste est mise dans le bon membre de l objet Personne Une fois tout le traitement fini il n y a plus qu utiliser l op ration du web service E EE Eh e ee Pecce ume elon hype Nevins one E DEE Cue e primit Steen Il NGS a a impurArcayCuse Enum EE EECH EE EE CUS CROIRE ie EE EENHEETEN EE t Ee RE conl SE EE E A ET OEN CN meyer Bina IE EIERE Misia u e seUS ton o mE CUS robe PniDenrenes MISE Ar CEA RE Agee Nace CUS NEE EE Ee RR E EE EE EE ME eo kee Er E
5. Lors de la sortie du framework 3 0 1l n tait pas tr s facile de d velopper des web services WCF sous Visual Studio 2005 patch pour l occasion les outils disposition tant un peu lacunaire L arriv e de Visual Studio 2008 a permis de r soudre ce probl me en proposant un projet pour cr er un web service WCF et une meilleure impl mentation des aides au d veloppement ce qui permet au final au d veloppeur de gagner du temps dans le d veloppement de son web service Malgr toutes les am liorations apport es dans Visual Studio 2008 il manque une fonctionnalit qui serait utile la possibilit de d velopper rapidement un client pour le web service d velopp En effet 1l est toujours la charge du d veloppeur de devoir cr er un client pour tester son web service le projet WCF Service Application ne g n rant pas de client pr t l emploi Au mieux il propose une page web indiquant comment cr er un client en utilisant l outil svcutil exe pour cr er un fichier de configuration et un fichier de code contenant la classe du client ainsi que le code a implementer pour appeler le service Le d veloppeur doit ensuite cr er un projet int grer les diff rents fichiers cit s ci dessus s occuper de cr er l interface utilisateur pour pouvoir saisir facilement des donn es d velopper le traitement au niveau du code pour utiliser le web service ce qui comprend la r cup ration des saisies utilisateurs la cr
6. ce fichier ApplicationSettings comprend entre autres toutes les options de configuration de cette fen tre Voici le r sultat cr Ch temps config wheaterEx1 xmil wch View Format Language Settings Macro Run TextFe Plugins Window 1 05 kM a g else lt lt BE 1 Ele m h e Ble Fala al BB unter e DI Wheaterext xml CO rer Son le DIN encoding he er le lt root gt lt entry name proxyFileHame value proxy gt entry name patternspecialUCHame value BS B Array 3 EHU 5 ENMU Array Pg lt entry name configFileDirectory value c temps contig gt lt entry name mshbuildGenerationFilePath walue bin Release gt lt entry name nunitTestClasseHame value HunitTest gt lt entry naeme nunitConsolePath value C Program Files HUnit 2 4 7 bininunit console exe gt lt entry name app ssembly value System Sryetem CoLlections Generic System Contiguration sysetem Data lt entry name nunitOhbjectClass ssembly value System System CoLlLlections Generic System Ling system T lt entry nane nunitObjectClasseHame value HunitObject gt lt entry name cscPath value C WIHDOWS Microsoft HET Framework v3 5 csc exe gt lt entry name generation Assembly value yetem System Collections bGeneric System Ling system Text sy lt entry nate csproj ssemhly value System Syvstem Core 3 5 System kRuntime Serialization s 0 System lt entry name nunitTestllassissembly value
7. tableau est trait avec le for each EnumC2 et pour chaque entr e du 1 tableau le 2 tableau est trait avec le for each EnumC2i setUC Value String str Cette m thode s occupe de s lectionner la bonne num ration S il n y a pas de tableau d objets personnalis s qui est parent eS Clee ONG ee amp lt xsl for each select zeroDimension output amp gt Plime orde er n Cy cule KE EE EE Ste craic el lt Poser le ComboBox dans le panel avec ses valeurs gt cit xoi hor cach selece Enume OUTPUT Ege Comoe oOx eo new Comoobox le lt EE EE EE ais lomo EE ComboBoxItem cbi new ComboBoxItem cpoi Content enumoirArraylil cb Items Add cbi s TtemCollection ic b Items ST ERa E E ena Rec lt l S lectionner le bon index gt TL EO EE Boolean isSet false while epr ele eC DALA Glee se Coume ole CDA Eee ie Ee ComboBoxteem coi ComboBox eem Wce GerltemAr eer ie Cpi Content EE EE ch SelectedIndex cpt SOL True CHE Mt xsl or Shoot Clee xsl Ehe REISE Le premier for each s occupe de cr er le ComboBox d ajouter les items et d afficher le StackPanel le contr le Il ne reste ensuite plus qu s lectionner le bon index en comparant le String re u en param tre avec les items du ComboBox S il y a 1 tableau d objets personnalis s qui est parent Vionnet Olivier HES SO V
8. ComboBoxItem cbi new ComboBoxItem Choi Content F enum ir A rraylil Me Comoe e kt E A oun a Vionnet Olivier HES SO Valais juin 2008 42 217 I VALAIS seeccccccccccccc cece cece eee e eee eee eee e eee eee e sete eee cect sees eeesseeeeeseeseeeeee Hes so WALLIS SSsssssssssssssssssssssssssssssessecsssssssssssssessossesssssssosssssssssssssssssss La transformation XSLT s est occup e d crire le code pour mettre 2 fois le contr le car le tableau parent est de taille 2 Pour chaque ComboBox il faut parcourir le tableau contenant toutes les num rations pour remplir les items public String get valus Sering returnValue T Combobox ltem CDI inulin oa a eea e e Uc Eeer E Kee renurn alus ECO Content L O rna a NN T SeS ELE tee ee mem recura lues eor EE E returnValue returnValue Substring 0 returnValue Length 2 return returnValue public oidi lean Varus Dorner Comme cet UserControl n est destin qu l input il y a juste la m thode getUCValue qui permet de r cup rer le contenu des contr les Il faut r cup rer la valeur des index s lectionn s dans les ComboBoxs s par par et retourner la valeur UC Boolean I id7 B_S xaml cs Cet UserControl est contenu dans 2 tableaux personnalis s Le premier est le tableau de Personnes de taille 2 Pour Personne 0 il y a un tableau d Amis de taille 3 et pour Personne 1 un tableau d Amis de taille 5
9. DEEN obiecthupitAesermbl array ErrorLog rae objecthunitassembly StringBuilder Class Wu tabControlSelectedIndex besthunitassernbly array Fields I Methods besthunitassenbly StringBuilder vg errorFile He MINOW re windowAssembly array c errorSstringBuilder of windowd ssemblyStringBuilder instance E Methods 2 isError a button_sppAssembly_Click Properties aY button_csprojassembly Chk BI ErrorFile 3 button_csprojNunitassembly_click ET IsError 3 button_objectMunit ssembls_ Click E Methods 3 Eutton_testNunit ssembls_ Click kzrerror g Eutton_window ssembls_Click L rrorandend a butbonRestore_import_Click writeError 3 EuttonRestore_restore_ Click Writelt aw butkonRestore_saveConfiginFile_Click aW buttonSave_globalTiassembly_Click 3 buttonSave_globalTiNunitassembly Click 2 buttonSave_path_cClick W Configuration windo i loadComboBoxConfigFile 4Y onLoad4ppAssembly a onLoadCsproj4ssembly g onload CsprojNunitassembly 3 onLoadObjecthunitAssembly a onLoadTesthunitassembly aY onLoadWindow a onLoadWindowAssembly a operationInformation a tabControll_SelectionChanged Cette partie s occupe de regrouper les diff rentes classes restantes Configuration Window et rapportWindow peuvent tre appel s par Windowl AlertWindow se s affiche qu en cas d erreur de traitement dans la fen tre de configuration Window 3 6 Documentation sur contenu des classes C La docume
10. Degr d int gration 1 Il y a des chances pour que j utilise des outils externes pour r aliser certaines op rations Il faudra prendre du temps pour lire la documentation des outils qui seront utilis s et faire des tests pour voir comment l application que je cr e pourrait interagir avec et utiliser les r sultats provenant des traitements des outils externes a l application La piste suivre sera certainement de faire des appels en console Configuration organisationnelle 1 Le nombre d intervenants se limite 2 personnes dans le cadre du d veloppement Pour gagner en efficacit et viter de multiplier les s ances un blog sera cr pour le suivi des rapports hebdomadaires ce qui permet de centraliser une place l information sur le projet et qui permet de retrouver rapidement ce qui a t fait les semaines pr c dentes Changement 1 Actuellement il n y a rien qui permet de faire simplement et rapidement un client pour un web service donc l utilisation de cette application ne devrait pas rencontrer d hostilit s quand son utilisation elle devrait m me susciter un certain engouement Par contre cet engouement pourrait tre r duit suivant les limitations que l application pourrait avoir Vionnet Olivier HES SO Valais juin 2008 103 217 TTT Hes so7 Be 2 8 2 8 0 8 9 8 8 9 8 8 9 9 8 9 9 9 8 9 8 8 9 9 9 9 9 8 8 9 9 8 8 8 8 8 8 9 9 8 8 8 9 9 9 8 9
11. Eor abies OS al Se bn Peer Eeler ComboBoxItem cbi new ComboBoxItem Chi Content GmnuMNsteeArray yl eb tems Add chi TtemCollection ic cb Items See cree wie I ee Cle Ine eer U Boolean isSet false while cpt lt ic Count amp amp isSet ComboBoxleem cha ComboBoxlrem ic GetltemAr cpt If cbi Content Looe cic MEN io lait ch SelectedIndex cpt isSet true CHE public Eet Deo nothing UC Boolean O id16 B S xaml cs Ici galement la cr ation des contr les se fait c t CF La transformation a construit le code en prenant en compte qu il y a 2 tableaux personnalis s un tableau de Personnes et pour chaque entr e de ce tableau un tableau d Amis contenant le type traiter La liste de type Boolean boolList va s occuper de stocker toutes les valeurs Boolean pour les diff rents tableaux Dans ce web service ce qui est envoy au web service est retourn avec le m me nombre de variables Si l on envoi un tableau de Personne de taille 2 et que Personne 0 contient un tableau de 3 Amis et Personne 1 un tableau de 5 Amis on obtient au total 8 variables Boolean Cette liste s occupe de stocker ces 8 valeurs Ensuite le string re u est split une 1 fois c est le tableau de Personnes Une liste de type int cptListl est cr e Cette liste va s occuper de stocker la taille de chaque tableau d Amis Vionnet Olivier H
12. bin Release c temp3 config Muri Munit console C Program Files NUnit 2 4 7 bin nunit console exe R f rence cspraj nunit framework Version 2 4 7 0 Culture neutral PublickKeyToken 96d09aleb Objet Classe Name NunitObject Test Classe Name NunitTest Application dataFile xml app filename appFile xmil esprojFile acl Proxy Name proxy Application Filename Url Web Service http www ejse com WeatherService Service asm rW SDL Classe Name ServiceSoapClient Serv Namespace Name up elloccc Ano Name Ape Window Name Windows Type de s rialisation Auto Vionnet Olivier HES SO Valais juin 2008 12 21 VALAIS seeccccccccccccccccc cece eee cece eee e eect e eee eee esse eseteeseseseseseeessseeeeeeees Hes so WALLIS sccccccccccccccccccc 809 9 8 0 9 8 9 9 8 8 8 5 8 8 9 8 9 8 9 5 8 8 0 8 8 8 8 5 8 8 8 8 8 8 8 8 8 8 nese 8 8 8 6 8 8 8 8 e h EAR 00000000000000ve 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e 7 1 1 1 SDK Cette partie s occupe de d finir le chemin des programmes Lors de la premi re utilisation de l application d faut contr ler que les chemins correspondent ce qui se trouve sur la machine Csc exe est utilis pour g n rer les dll du fichier proxy Svcutil exe est utilis pour cr er un fichier proxy et configuration Msbuild exe est utilis pour construire l application g n r e 7 1 1 2 Fo
13. lt UserControl x Class WCFCalculator userControls UC_Boolean_I id _B 5 xmins http schemas microsoft com winf 2006 xanml presentation xmins x http schemas microsoft com winh lt 2006 xaml gt UE Code CS lt ml version 1 0 encoding utt 2 7 gt lt xslistvlesheet version 1 0 xmins xsl hthp www w3 org 1999 SL Transform xmins mexsl urnischemas microsoft comixalt exclude result prefixes mesl lt xsl output method xml indent yes gt lt xsl template match finishTranstorm gt using System using System Collections Generic using System Ling using System Text using System Windows using System Windows Controls Une fois les tailles mises et valid es en cliquant sur Ajouter il ne reste plus qu a sauver pour terminer La partie Input est pr te On peut soit lancer la g n ration ou bien galement demander ce que dans la partie Ouput soit galement affich des UserControls sp ciaux C est ce que l on va faire Pour l output il n y a pas d intervention particuli re faire pour utiliser les UserControls sp ciaux Il suffit juste de les s lectionner Le nombre de contr les que chaque UserControl doit afficher sera d termin par les donn es re ues du web service lors de l utilisation de l application Voici ce que donne la fen tre avant la g n ration Vionnet Olivier HES SO Valais juin 2008 86 217 M Wizard client get rrayPersonne Pers
14. 2 descendant or self Se comporte comme descendant mais en incluant le n ud courant ancestor or self Se comporte comme ancestor mais en incluant le n ud courant Un sch ma visuel qui regroupe les diff rentes m thodes pour conna tre les enfants parents est disponible l adresse http nwalsh com docs tutorials xsl xsl shides html Slide 22 Axis Specifiers Vionnet Olivier HES SO Valais juin 2008 158 217 TTT Hes so WALLIS see 13 7 Rapports hebdomadaires Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 1 3 Woche D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Recherche d information et divers essais avant le d but du projet arm e lors du 54h d but Etablissement du cahier des charges MS Project Installation des outils Vionnet Olivier HES SO Valais juin 2008 159 217 eeeeaeeeeoeeceeeceeoeeeeseeeeeeeeeeeeeceeseeseaeseeeceeeeseeeeeeeeeeeeeseeeeeeeseeseeeeeeceseseeeeee Hes so wails HEHE EEE Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 4 7 Woche 29 11 2007 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Explications sur diff rentes d finitions 24h Exemple et
15. C est nettement plus simple utiliser je ne m occupe plus de savoir si je dois tre sur un thread UI ou non pour mettre jour lUI les m thodes progressChanged et run WorkerCompleted sont sur le thread UI Tous les fichiers de l application sont maintenant dans des dossiers Il ne reste plus que app et Window les l ments par d faut pour lancer l application qui sont la racine du projet G n ration de code Une nouvelle classe CommonGeneration a t cr e Elle permet de regrouper une place le traitement commun la g n ration automatique Wizard et Nunit cr ation des dossiers pour la g n ration en cours g n ration proxy et config transformation proxy en dll r cup ration des op rations du web service et r cup ration des types sp ciaux Transformation XSLT Template pour la cr ation des UserControls maintenant 1l n y a plus qu un jeu de template pour la g n ration automatique et wizard La g n ration du code cs de la fen tre se base galement plus que sur le template xslt du wizard Par contre la g n ration du code XAML a un template s par pour la g n ration automatique et wizard e Bugs corrig s Dans la partie Wizard choix des UserControls a appliquer Lorsqu il y a plus de 9 UserControls sur 1 ou plusieurs op rations le champ pour l UserControl 1 contient de mauvais template le template 1 ce qui est normal mais galement ceux du type 1x genre 10 1
16. Construire une application XML Jean Christophe Bernadac Francois Knab Edition Eyrolles 1999 ISBN 2 212 09081 1 XML Benoit Marchal Edition CampusPress 2000 ISBN 2 7440 0924 5 Introduction a XPath http tecfa unige ch guides tie html xml xpath xml xpath html El ments de programmation XSLT http Aecfa unige ch guides tie html xml xslt2 xml xslt2 html Predicates amp Conditionals in XPath amp XSLT http www2 sims berkeley edu academics courses 1s290 14 s05 lecture T allslides html XSL Concepts and Practical Use http nwalsh com docs tutorials xsI xsl slides html Maitriser les sauts de lignes en XSLT http xmlfr org documentations fag 010703 0001 13 8 7 D roulement du d veloppement de l application Comment cr er copier d placer supprimer un fichier http fagcsharp developpez com page file file file Probl me concernant la modification de donn e dans le fichier settings La solution n est pas tr s bonne modifier un fichier g n r par contre a m a permis de d couvrir qu il faut mettre le scoop en user pour pouvoir modifier une valeur Vionnet Olivier HES SO Valais juin 2008 210 217 F ZO KEE e Hes so WALLIS 6 eegeeeeeeeeeg 000000000000 ee eeeeeeeeesee Segeeeeeeeeeeeeeeeegeeeeeeeeeeeeeeeeeeee No 000000000000 00000000000000000000000000000000000000e 00000000000000000e 0 000e Kb AA http forums microsoft com MSDN ShowPost aspx PostID 56965 1 amp SiteID 1 Informatio
17. Us SVYStEeCM SErINGSD IT LOptions RemovekmpeyVEMeries cptListl Add tmp2Array Length Que abe 3 OF EE ur pelt Eire keplace Gun tmp2zArray j emo ace E EE EE eelere Boolean boolArray boolList ToArray lt Boolean gt wale lee oi ilalsie El faire une boucle pour ajouter les l ments de mani re automatique au UC ene ade ahh EE Elek DEE E Label lb new Label ior Contente e EE k ae Ta keane ue Ie E rte Ole sate Gp EE ara CheckBox cb new CheckBox CON ame UOC REC ES RS ENTER EN ONU cb IsChecked boolArray cpt Glog Gorge EE SSS Eege Chin Mores oe AGEN Glo Vionnet Olivier HES SO Valais juin 2008 46 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 200000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE Nf VALAIS Hes so WALLIS EE Se i MMM A E EE EK EE EE EEEEEEEEKEEEEER 20000000000000000000000e 200000000000000000000000000000000e public void lean valu 7 7 WO me CMNO 5 2 3 temp Ce dossier contient les m mes fichiers d crits dans la partie g n ration automatique On y trouve 1 fichier et un dossier suppl mentaires Le fichier tnpDataSpecialWizardUC XmlFile xml est un fichier de donn es XML temporaire destin convertir les informations de taille des tableaux que l utilisateur a saisies pour pouvoir ensuite tre utilis es pour effectuer la transformation XSLT d
18. id 25 nameMember AmiDenfance true false true false false false false false String id 26 nameMember Nom Mouse Goofy Le chien H Duck Duck Duck sTrouvetou Picsou String id 27 nameMember Prenom Minnie Dingo Pluto A Rin Fifi Loulou G o Balthazar Vionnet Olivier HES SO Valais juin 2008 79 217 M 080800000000 605000000060 000606666060 6 5 8 8 8 8 6 8 8 8 8 8 8e VI VALAIS 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e Hes 50 TS LE D RE LRO RENE TER TESTER RES ES EEE Il y a 2 Personnes rentrer donc les valeurs sont s par es par un double pour les ids 20 23 Pour le tableau c est un tableau d Ami par Personne Un tableau dans un tableau il faut d limiter avec Pour Mickey on a bien les amis Minnie Dingo Pluto et Donald les amis Riri Fifi Loulou G o Balthazar 7 3 G n ration wizard Pour n importe quel web service dont il faut g n rer le client et que l on souhaite ne prendre qu une partie des op rations disponibles ou que l on souhaite utiliser des contr les sp ciaux pour les types Boolean ou des num rations 1l faut prendre le choix Wizard CT o G n ration Options Automatique Test 7 3 1 WCFCalculator Le premier choix qui s offre a l utilisateur est celui des op rations qu il souhaite utiliser en les cochant Une fois le choix termin il suffit d a
19. impossible de le faire lors de la transformation sans que a n entraine un chec de la transformation Ensuite il faut renseigner les valeurs pour le nom de la classe du code behind pour cette fen tre et indiquer le nom qui doit apparaitre dans le titre Template name core On rentre dans le contenu de la fen tre Il s agit de place l l ment root pour tout le contenu et d finir un Grid contenant 2 lignes La 1 ligne contiendra tous les UserControls pour les saisies de l utilisateur ainsi que l affichage du r sultat obtenu de la part du web service le tout dans un TabControl La 2 ligne contiendra les ventuels messages d erreur Template name operation Pour chaque op ration du web service qui doit tre trait ce template est appele Il s occupe de cr er des TabItem avec comme Header le nom de l op ration et qui contient un Scroll Viewer pour scroller verticalement si le contenu est trop grand et l int rieur un StackPanel vertical pour empiler les diff rents contr les que l on va mettre Tout en bas de ce StackPanel je place un bouton pour d clencher une action sa mission sera d interagir avec le web service Template match input et output Ce sont 2 templates interm diaires Ils sont pr sents uniquement pour pouvoir afficher un GroupBox afin de diff rencier la partie input de l output du web service Template match parametre Ce template s occupe a chaque fois d appeler le
20. l ments dans un Canvas se fait de mani re absolue Pour positionner l l ment il faut sp cifier les attributs Top et Left 0 0 tant le coin en haut gauche de la fen tre Dans le cas o ce n est pas des Canvas positionner par exemple des rectangles l emplacement est fait en utilisant les attributs Canvas Top et Canvas Left Si l un des attributs n est pas sp cifi il prend par d faut la valeur de 0 Canvas Background Light Cyan lt TextBlock Canvas Top 0 Canvas Left 0 Text Top Left 0 gt lt TextBlock Canvas Top 100 Canvas Left 20 Text Top 100 Left 20 gt lt Canvas gt Top Left 0 Top 100 Left 20 13 6 3 12 TabControl Ce contr le permet de g rer les l ments affich s a l cran par le biais d onglet Un tabControl contient des TabItem L attribut Header du Tabltem sert afficher le texte sur l onglet A l int rieur on peut soit se contenter d utiliser un Tabltem Content pour afficher du texte ou un contr le S il faut afficher plus de contenu 1l faudra se tourner vers un autre Layout comme le Canvas par exemple TabControl MES EE Us lt Tabltem Name tabliteml Header tablitemli gt Vionnet Olivier HES SO Valais juin 2008 137 217 TTT ee CR ARR EEE EEE 200000000000000O0C0O0C00CC00OCC0O0COCCLOLCCCCCOCCCO0OLOLOC00000000000000000000000000000000000e lt StackPanel gt lt Label gt texte ici lt Label gt lt StackPanel lt TabItem
21. lt StackPanel gt Vionnet Olivier HES SO Valais juin 2008 148 217 Dana GE Hee Co WALLIS eeeeoeoeeceo eceeeeecee eee eeeeeeece eo eee eeee eee eeeeeeeeeeeeeeeeeeeeee eee ee eee eeeceeeeeee ee ee 6 dir 2000000000000000C00OC00C00OCCCOCOCLOLOCO0OCCCCOCCOLOLOC00C000000000000000000000000000000000e f f j lt GroupBox gt SE EE lt GroupBox Header gt Group avec GroupName lt GroupBox Header gt lt StackPanel gt lt RadioButton GroupName rbgrp gt Yes lt RadioButton gt lt RadioButton GroupName rbgrp gt No lt RadioButton gt lt RadioButton GroupName rbgrp gt No opinion lt RadioButton gt lt StackPanel gt T CLoulobox Groupsex gt lt GroupBox Header gt Non group car dans diff rents containeurs lt GroupBox Header gt SeackPanel SLcackrPanel gt lt RadioButton Name nrb1 gt Yes lt RadioButton gt lt StackPanel gt lt seackPanel gt lt RadioButton Name nrb2 gt No lt RadioButton gt lt StackPanel gt lt StackPanel gt lt GroupBox gt lt StackPanel gt lt Grid gt WW Window Group par containeur Yes No No opinion Group avec GroupName Yes Mo No opinion Mon group car dans diff rents containeurs 13 6 7 6 Ajouter des l ments XAML depuis C Jusqu pr sent nous avons vu comment placer des l ments XAML Ceci suppose que l application ne changera pas d aspect tout au long de son ex cution Mais il se peut galement que suivant les c
22. lt wedl part name parameters element Ins tvilyHellaResponse gt lt hwsdl message 13 6 2 5 binding Le binding permet de sp cifier l encodage du message et le protocole de liaison pour toutes les op rations et messages d finis pour un port type donn Il y a 2 modes d op rations possibles RPC style et document style Dans le RPC style les messages d entr e et de sortie transporte les param tres d entr e et de sortie des appels aux proc dures tandis que dans un document style les messages transportent des documents connus du client et du service C est galement dans cette partie que l on sp cifie que la communication des messages doit se faire en utilisant SOAP quel protocole de transport doit tre utilis et quels sont les r gles d encodage utilis pour la s rialisation les diff rentes parties du message On trouve 2 possibilit s pour l encodage literal prend les types WSDL d fini dans le sch ma XML que l on utilise en g n ral pour le document style tandis que le SOAP encoding prends les d finitions abstraites du sch ma XML et les traduit en XML en utilisant les r gles d encodage de SOAP utilis en g n ral avec le RPC style Vionnet Olivier HES SO Valais juin 2008 125 217 Will Hes so WALLIS zs Soap binding permet d indiquer que la connexion est disponible par SOAP L attribut transport indique quel protocole va tre utilis pour la circulation des messages dans
23. nn HAEA A AEA bed Obj tBetHint Int32 id 30 nameMember iWins 42500 30000 50000 30000 30000 32000 30000 3 297783 1177807577720 700 12255257732 13772077 747 38 1t String id 10 nameMember sCityMame Int32 id 31 nameMember iLooses Basel Geneve Vienna Klagenturt Zurich Bern Innst 605 7955705512557 741 77257551559 5 33 75983744 105529 55 Obj tTeamInfo String id 12 nameMember sName Int32 id 32 nameMember iDraw KHN KOKA KT e He EC ER Ve RACH KN We e Switterland Portugal Austria Germany Romania Nel Siring id 13 nameMember sCountryHlag Decimal id 33 nameMember n verageYellowCards 212727272 2939 212037037 ee Pale Fae http feuro2008 dataaccess eu flags SWITZERL jpa ht Decimal id 34 nameMember nAverageRedCards Obj tTeamInfo String id 15 nameMember sName 0 33636363 0 4678890 0 46296206 0 41866666 0 485 Czech Republic Turkev Crostia Poland France ltaly Int33 id 35 nameMember iTotalBets String id 16 nameMember sCountryFlag 110 109 108 108 107 106 105 103 99 097 96 95 http feuro2008 dataaccess eu flags CZECH__ jpg ht String id 17 nameMember sResult eee REH AR nU HE MA AR nU U ER ME EE do String id 18 nameMember sScore Cee rete eee eee ee ee ee ee ee ee ee ee Int32 id 19 nameMember fellowCards OU
24. utilisateur quelles op rations 1l souhaite int grer au client La g n ration continue le traitement pour pr parer les diff rents UserControls et une fois termin l application demande a l utilisateur de choisir les UserControls qu il souhaite utiliser C est ici que l utilisateur pourra opter pour certains types des UserControls plus adapt s pour l affichage et l utilisation du client Une fois le choix fait l application termine la g n ration et affiche un bouton pour lancer l ex cutable cr 2 3 G n ration tests Nunit Cette fonctionnalit permet de g n rer un client destin tester le web service avec un grand nombre de donn es diff rentes sans devoir chaque fois rentrer ces donn es la main Cette fonctionnalit est utilis e pour les cas o 1l y a beaucoup de donn es tester et que l utilisation d un client graphique ou il faut rentrer chaque donn e la main prendrait trop de temps L application s occupe de construire le client en mode console et demande l utilisateur de rentrer la s rie de tests unitaires qu il souhaite effectuer Une fois les tests rentr s la g n ration de l application cliente est effectu e et les tests sont ex cut s en utilisant NUnit Le r sultat est affich sous forme de tableau en couleur de mani re identifier rapidement les erreurs qui se seraient produites 2 4 Configuration Cette fonctionnalit permet de param trer le g n
25. 09 03 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Modification pour le code utilisant le delegate et dispatcher pour afficher un texte dans le statusbar Maintenant il n y a plus de threads inutiles avant dans la fen tre xaml chaque type de modification tait fait en utilisant un thread Lorsqu une fonction prend du temps tre trait e elle est contenue dans un thread et l affichage est modifi au travers d un delegate contenu dans la fen tre xaml objet pass en param tre Nettement mieux Modification de la gestion des erreurs lors de la g n ration automatique Avant un try catch global enregistrait l erreur et le stack tait renvoy Maintenant chaque traitement parse est entour d un try catch En bas du programme un textbloc empile les erreurs avec le message d erreur ainsi que le Vionnet Olivier HES SO Valais juin 2008 champ qui a lev l exception S1 l op ration est contenue dans une ligne de code avec d autres op rations le try catch est effectu avant la ligne de code La ligne de code reste n anmoins trait es et g n rera une erreur qui sera prise dans le try catch global C est la solution la plus simple que a trouv e pour r gler ce probl me sans devoir repartir a 0 avec les templates Mis en place la partie test a fonctionne mais le traitement est fait sur une ancienne version du code tir de la
26. 13 3 9 SandCastle amp DocProject 2008 SandCastle et DocProject permettent de g n rer une documentation de code bas e sur les commentaires contenus dans les fichiers C du projet La documentation est produite sous la forme d un fichier chm et permet de trouver plus rapidement des informations sur une classe ou une m thode qu en consultant un document Word A noter que la prise en charge de la documentation pour les fichiers XSLT n existe pas et c est pourquoi cette documentation a t mise dans le rapport Site officiels http www codeplex com DocProject http www codeplex com Sandcastle Au moment de la r alisation de ce rapport SandCastle a t retir de codeplex com https blogs msdn com sandcastle Pour installation d faut commencer par installer SandCastle puis DocProject Pour cr er une documentation 2 cas possibles e Sila solution documenter contient d j un projet DocProject il n y a rien de particulier a effectuer A chaque fois qu une modification dans le projet de l application est faite et qu un build est lanc la documentation sera remise jour Vu que cela peut prendre de 5 a 10 minutes pour construire ou reconstruire la documentation il est pr f rable soit de mettre la g n ration de la documentation une fois que le projet est termin ou de lancer les builds en s lectionnant uniquement le projet de l application et ainsi la documentation ne sera pas bui
27. 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS EE i M A E EE EE EE EEEEEEEEKEEEEER bh EE bh E EEEEEEAEKEEEKEEKAR 200000000000000000000000000000000e Bien que cette application puisse tre utilis e pour de nombreux web services et simplifie la vie du d veloppeur elle n est pas suffisamment bonne pour devenir LA r f rence incontournable que tous les d veloppeurs voudront poss der 11 Evolution future de l application Si le projet devrait tre repris apr s ce travail de dipl me il faudrait se pencher sur les points suivants pour am liorer l application e R soudre la limitation de la profondeur des types de tableaux personnalis s L id al serait d arriver g rer jusqu 5 niveaux de profondeur le 5 niveau n ayant que des types primitifs complexe nums ou tableau d nums ce qui permettrait de traiter la majorit des cas e R soudre le probl me pouvant survenir avec des objets nuls et la fa on d afficher une valeur nulle e Pouvoir choisir le binding par exemple du SOAP 1 1 ou SOAP 1 2 e Remplacer les TextBoxs servant a l dition de code par la possibilit d diter les fichiers en utilisant un diteur par d faut choisi par l utilisateur a peut tre notepad ou Visual Studio par exemple e R soudre le probl me pour les UserControls sp ciaux dans la partie wizard de la saisie des tailles des t
28. Impl ment type Enum et tb Enum Corrections de divers bugs Modification UserControls Cr ation d un exemple concret Nouvelle version de la partie test Impl menter test avec utilisation de Nun tests et exemple Partie wizard Cr ation du code Refactoring Correction de bugs Tests SandCastle Documentation Vionnet Olivier HES SO Valais juin 2008 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 24 hr 18 hr 34 hr 4 hr 4 hr 4 hr 2 76 jours 6 hr 8 hr 8 1 hr 8 hr 6 hr 6 jours 36 hr 12 hr 6 63 jours 53 hr 48 hr 18 hr 12 hr 6 hr 72 hr 107 217 200000000000 0000000000000000000000000000000000000000000000000000000000000000000000e 000000000000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e L000000000000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e Jeu 13 03 08 Dim 16 03 08 Sam 22 03 08 Dim 30 03 08 Dim 30 03 08 Jeu 03 04 08 Ven 04 04 08 Ven 04 04 08 Ven 04 04 08 Sam 05 04 08 Ven 11 04 08 Sam 12 04 08 Sam 12 04 08 Sam 12 04 08 Ven 25 04 08 Sam 26 04 08 Sam 26 04 08 Sam 10 05 08 Sam 24 05 08 Ven 30 05 08 Dim 01 06 08 Dim
29. ListBoxItem gt lt ListBoxItem gt Item 7 lt ListBoxItem gt lt histBoxltem gt ltem 8 lt listBoxltem gt lt ListBoxItem gt Item 9 lt ListBoxItem gt lt histBoxltem gt ltem 10 lt listBoxiltem lt 7 hist box lt StackPanel Cri Dans l exemple fourni par Microsoft la m thode PrintText est appel e chaque changement de s lection Pour r cup rer l l ment s lectionn qui est un Vionnet Olivier HES SO Valais juin 2008 147 217 TTT Hes so Wai 00000000000000000000000000000000000000000000000000000000000000000000000000000000009 20000000000000000000000000000000000000000000000000000000000000000000000000000000400e ListBoxItem l argument sender est cast en ListBox puis l appel la m thode SelectedItem dont le r sultat est cast en ListBoxItem void PrintText object sender SelectionChangedEventArgs args ListBoxItem lbi sender as ListBox SelectedItem as ListBoxItem tb Text Voumselected TE bi C Oon enee O Erna i a Une version en n utilisant pas de cast avec le as void PrintText object sender SelectionChangedEventArgs args ListBox lb ListBox sender haeseBoxitem IDI Lct Box Comi lbsseleceedi rem tb Text Vour selected br sContenn LOstrimng je 3 13 6 7 4 ComboBox Ce contr le permet d afficher une liste d roulante de s lection Il reprend le m me syst me que le ListBox pour afficher des l ments dans la liste ComboBoxltem Les attrib
30. System System Collections Generic System Ling System Tex lt entry name msbuildPath value C WIKDOWS Microsoft HET Framework v3 5msbhuild exe gt lt entry name svoutilPath value C Program Files Microsoft SDE s Windows v 0A Bin svoutil exe gt lt entry neme appHameGeneratedClient value App gt lt entry name reserredKeyword value abstract event new struct as explicit null switch hase extern o lt entry neame classHameClient value ServiceSoapClient ServiceSoap gt centry neme datagMLFileHame value dataFile xml gt lt entry name fFinalOutputDirectory value c 4tempi finalOutputi gt lt entry name consoleTest Assembly value S stem System CoLlections Generic System Ling System Text 75 lt entry name cspr0o XMLFileHame value csprojFile xml gt centry nane windowHameGeneratedClient value Windowi gt lt entry name urlWebService value http www ejse com WeatherServrice Service asm WSDL gt centry name appeMLFileHame value appFile xml gt Entry name nunitCsprojRef value nunit framework Version 2 4 7 0 Culture neutral PublickeyToke Entry name nunitCsprojAssembly value System System Core 3 5 Srstem Runtime Serialization 3 0 5 lt entry neame serializationChoiz value Auto gt entry neme namespaceGeneratedClient value WheaterExi gt lt root Attention le namespace d fini dans l onglet Path de l application est utilis
31. WcfService64 Enum wcfs64 string Enum1 WefService65 Custom wcfs65 Custom Enum1 WcfService66 Custom wcfs66 Custom koum Custom2 Enuml WefService67 Enum1 wefs67 Enum1 WefService68 Custom wcfs68 Custom Enum1 WefService69 Custom wcfs69 Custom Custom2 koum WefService70 Custom wefs70 Custom string Custom string Custom3 string Custom string Custom string Custom3 string 6 2 WS Internet 6 2 1 Acceleration Unit Convertor Convertir une valeur dans une certaine unit d acc l ration dans une autre Source http www webservicex net WCF ServiceDetails aspx SID 53 WSDL http www webservicex net ConvertAcceleration asmx wsdl Exemple Convertir 50 centimeterPersquaresecond en decimeterPersquaresecond R sultat attendu 5 Rapport d erreur Erreur SvcUtil binding http get et post erreur non fatale le binding soap fonctionne Vionnet Olivier HES SO Valais juin 2008 50 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE Ah AL EEEEEEEEEEEEUEEKEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEUZEEZEEETIIEEEEEUEUEEEUEEEEEER Ah A EEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEETIEUEEUEEEEEEEEEEUUEEEEEEEEEERT WALLIS oeeeeeeeeeeegeeeeeeeeeeeeee 0000000000000000000000000000000000000000000000 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e f f f f ff f f
32. Windows Media M PresentationCore Iw System Windows Media Imaging Je PresentationFramework M System Windows Navigation M System Runtime Serialization M System Windows Shapes M System ServiceModel lw System Collections Ajouter une assembly Nom Ajouter une assembly Cet onglet permet de g rer les assemblies qui doivent tre utilis es dans le code behind des fichiers App et Window ainsi que dans le fichier csproj il faut r f rencer les assemblies Pour enlever un assembly il suffit de le d cocher et dans la m me colonne de cliquer sur le bouton Mettre a jour l assembly dispara t ce moment et de cliquer sur Sauver pour que le changement soit r ellement pris en compte Pour ajouter un assembly entrez le nom de l assembly cliquez sur Mettre a jour puis sur Sauver Vionnet Olivier HES SO Valais juin 2008 74 217 TTT Hes SO WALLIS rt 200000000000 OCOCOOOCLOCCOCOOCOOCOCLLOLOCCLOCLLOCCCOLOCCOLCCCC0CCRC00C0C0CCCLC00000000000000000e 7 1 3 Nunit tests Assemblies BE Configuration de l application o DI sl Path Auto Client Assemblies Nunit Tests Assemblies Load Restore ObjectClass TestClass Csproj Actuellement utilis s Actuellement utilis s Actuellement utilis s da ide do System Collections Generic 7 System Collections Generic System Core 3 5 M System Ling Je System Ling M System Runtime Serialization 3 0 L System Text
33. e CommonGeneration E Class vg LO Class Windows l SYCTool a svcg FileGeneration Class Class t C C SeaA4 ke 8 en of filg j XmlDataGeneration Class GC F a xdg CustomClassList g Krees l 4 or Fcc Class K 2 La BE BEE erg E aP customClassList l Fields ge apphameGeneratedClient d app MLFileMName biw cscPath csproj MLFileWarne dataxMLFileMarne execPath FinalQutputDirectory gener ationFolderName rsbuildSenerationFilePath msbuildPath namespaceseneratedClient operationsList tempFolderName userControlFolderMame a windowNameSeneratedClient SOOO OS Properties SS ExecPath El Methods z createUserContral z GenerateClient r generatelt z msBuildit GE Une fois le traitement commun termin le traitement se poursuit dans GenerateClient pour construire l application Vionnet Olivier HES SO Valais juin 2008 6 217 3 3 Generation wizard rod a parametersList Es OperationsList Y x WebServiceOperation SL a operationsList Class j aP operationsList aP operationslit A WizardWindow A Class Window EditUc Window ES Class Fields E Wee OperationWizardWindow bw E Fiels E i ui FEH erName d dataXMLFileName Opeth E Methods ui dert arrayListUserControl g button _vizardGeneratjon_ a BeModified a arrayListUserControlModified a bw_doWork 4 roBeM
34. juin 2008 31 217 I VALAIS secccccccccccccc cece cece eee e eee eee ee eee eee eee 666680866666 0066662000000 0 0 Hes so Waits sessssssssssssssssssssssssssssssssessssssssssossssssosssssssssssssssssssssssssssoss 20000000000000000000000000000000000000000000000000000000000000000000000000000000e gt lt StackPanel gt lt Scrollyviewercr gt lt Tabltem gt Dans cette deuxi me partie il y a le TabControl qui va contenir autant de TabItem qu il y a d op rations Pour chaque Tabltem on trouve un ScrollViewer pour scroller verticalement s il y a trop d l ments puis un StackPanel qui va empiler le contenu Un GroupBox s occupe de regrouper les l ments pour la partie input contenant de nouveau un StackPanel qui contient les UserControls et un autre GroupBox pour regrouper les l ments de la partie output Finalement un bouton pour lancer l ex cution du traitement ICI les 3 autres op rations dans le m me style que le tabltem ci dessus lt TabControl lt ScrollViewer Grid Row 1 Name scrollViewerMsgError gt lt StackPanel Grid Row 1 CanVerticallyScroll True gt lt TextBlock Name textBlockError TextWrapping WrapWithOverflow gt lt StackPanel gt lt ScrollViewer gt lt Grid lt Window gt Pour terminer la fen tre la fin du TabControl et ensuite la place destin e afficher les messages d erreur pouvant survenir lors de l utilisation du web service Code behind usi
35. l ments balises par rapport au contenu du fichier XML name id donnera lt id gt lt xsl attribute gt On trouve en g n ral cet l ment dans un xsl element ou apr s avoir d clar une balise en dur dans le XSLT un TD pour une sortie HTML Il permet de mettre a la balise des attributs Name permet de d finir le nom de l attribut A l int rieur de la balise on trouve soit un l ment text ou value of lt xsl template match gt lt xsl ror each selecc node gt lt xsl element name id gt Vionnet Olivier HES SO Valais juin 2008 150 217 Hes s0 PAZ EEE EEE EEE WW P TER TE ER EE SR EE IT RTE PIE EE RS este lt xsl attribute name height gt lt xsl value of select height gt lt xsl Lext px e E SE EE test EES lt xsl for each gt lt xsl template gt Ce qui donnera par exemple comme sortie lt al EE EE lt xsl if gt Permet de faire un test Si le test renvoie une liste d l ments non vide le contenu du if est utilis Il n existe pas de else L exemple suivant prend tous les enfants du n ud root et affiche une virgule entre chacun Le test s occupe de contr ler que pour mettre une virgule le n ud courant ne soit pas le dernier Tr s pratique pour cr er le code d une fonction avec plusieurs arguments s par s par une virgule lt xsl template match gt lt xsl for each select node gt lt xsl value of select id
36. me place m me si la fen tre est redimensionn e Canvas lt Label Canvas Left 0 Canvas Top 0 Name labell gt Left O Top 0 Label lt Canvas gt 13 6 3 6 StackPanel Les l ments sont dispos s par d faut verticalement au milieu du StackPanel L ordre d affichage est d termin par l ordre de d claration dans le code XAML OU d clar 1 affich Il est possible de changer l alignement vertical et horizontal du StackPanel pour pas qu il prenne toute la place stretch en modifiant les param tres HorizontalAlignment et Vertical Alignment Dans l exemple suivant dans l objet Window le Grid contient le StackPanel dans lequel on change le layout HorizontalAlignment Left Center Vionnet Olivier HES SO Valais juin 2008 130 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEIEEEEEEEEEEIEUEEEIEEEEEEE 2000000000000000000000000000000000000000000000000000000000000000000000000000000006e 7 VALAIS OO OROO0000000000000000000000000000000000000000000000000000000000000000000000000 Hes so WALLIS SSCSHSSSSSHSSSSSSHSSSSSSSSSHSSHSSHSSSHSSSHSSHSSSSHSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSESESESESES 2000000000000000C0O0OC0COCCOCRO0OCOCCROLCOCCCOCCCOLOLOCC0C00000000000000000000000000000000e Hes s0 yas 8 9 9 0 8 8 8 8 9 9 8 8 9 0 8 9 8 9 9 8 8 8 8 9 9 8 amp 8 9 9 9 8 8 8 9 9 8 8 8 8 9 9 9 8 8 8 9 8 8 8 8 9 9 8
37. q webservices globalweather index shtml wsdl http live capeclear com ccx GlobalWeather wsdl e Correction de derni re minute En testant l application Pas mal de modifications ont t faites Maintenant j utilise le BackGroundWorker pour faire des traitements long et qui me permet tout de m me de mettre jour la partie UserInterface tout en ne bloquant pas l application C est nettement plus simple utiliser je ne m occupe plus de savoir si je dois tre sur un thread UI ou non pour mettre jour UI les m thodes progressChanged et runWorkerCompleted sont sur le thread UI Tous les fichiers de l application sont maintenant dans des dossiers Il ne reste plus que app et Window les l ments par d faut pour lancer l application qui sont a la racine du projet G n ration de code Une nouvelle classe CommonGeneration a t cr e Elle permet de regrouper a une place le traitement commun a la g n ration automatique Wizard et Nunit cr ation des dossiers pour la g n ration en cours g n ration proxy et config transformation proxy en dll r cup ration des op rations du web service et r cup ration des types sp ciaux Vionnet Olivier HES SO Valais juin 2008 203 217 Transformation XSLT Template pour la cr ation des UserControls maintenant il n y a plus qu un jeu de template pour la g n ration automatique et wizard La g n ration du code cs de la fen tre s
38. rateur Son contenu est divis en 4 parties 1 tout ce qui concerne les dossiers et chemin d acc s aux diff rents outils utilis s par l application ainsi que les noms que diff rents fichiers doivent prendre et finalement url du WSDL du web service 2 Les assemblies qui doivent tre utilis es lors d une g n ration automatique ou wizard Les assemblies qui doivent tre utilis es lors d une g n ration pour des tests NUnit La possibilit de sauver les param tres de l application et de charger une nouvelle configuration sauv e pratique si l on d veloppe plusieurs web services et que l on souhaite travailler en parall le 3 me geome 2 5 Rapport d erreur Lors d une g n ration il est possible de rencontrer des erreurs Cette fonctionnalit permet de consulter le fichier de logs pour la derni re g n ration effectu e sur les erreurs qui seraient survenues 2 6 Lancement d une application g n r e Dans le cas d une g n ration r ussie cette fonctionnalit affiche un bouton permettant de lancer le client sans devoir parcourir l arborescence de fichiers la recherche du dernier client g n r Vionnet Olivier HES SO Valais juin 2008 4 217 Hes so wails ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEUEEUEEEIEEEEEEEEEEIEUEEEIEEEEEERE 3 Architecture de l application 3 1 Generation commune Fs S CTool Gi 20000000000000000000000000000000000000
39. ration de l application ensuite modifier la g n ration des fichiers qui finale avec msbuild posent probl mes Plantage de l application finale lors de l utilisation Je me suis de nouveau fait avoir a venait du fait que soit le fichier de configuration exe config n tait pas avec l ex cutable ou qu il portait un mauvais nom Vionnet Olivier HES SO Valais juin 2008 168 217 weg GE WE GE Hes so J tat IESEL VAIS EE Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 17 Woche 15 02 2008 21 02 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden G n ration automatique du fichier csproj les noms sont mis dynamiquement ainsi que les r f rences Fen tre de configuration les assemblies r f rences peuvent maintenant tre mises et modifi es Debug de l application par rapport aux diff rents changements dans les noms de fichiers namespace lorsque l on les change dans la fen tre de configuration Impl ment les types standards Impl ment les types costums Impl mente les types complex Test sur les diff rents bindings WSHttpBinding BasicBinding netTcpBinding et WS Dual http bindings dual pose probl me Prochaine tape discut en s ance e Modifier le code pour viter les bugs pouvant survenir lors d une reg
40. set string T Prenom get set string Un objet Personne est compos de l ge nom pr nom et de son genre un type Enum Il a galement un tableau d objet de type Ami Ce tableau pourra avoir une taille diff rente suivant les objets Personne une personne pouvant avoir ami alors qu une autre personne aurait 3 Amis Un objet Ami est compos de son nom et pr nom ainsi qu un Boolean indiquant si cet ami est un ami d enfance 7 1 Configuration de l application Avant de lancer une g n ration il faut commencer par param trer le g n rateur en se rendant dans la partie option Elle est compos e de 4 parties Vionnet Olivier HES SO Valais juin 2008 11217 Hes SO VALAIS seseeseeeeeeeeeeeseeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeeseeseeseeeeeseeeeeeeeseeesess RE EE EE 7 1 1 Path Cet onglet permet de d finir les chemins d acc s aux diff rents outils utilis s les noms et chemins des dossiers les noms des fichiers utilis s la fa on de s rialiser les objets sans oublier l url du WSDL Pour sauver les modifications cliquez sur Sauver BE Configuration de l application OI x Path Auto Client Assemblies Nunit Tests Assemblies Load Restore SDK CSC ExE C WINDOWS Microsoft NET Framework w3 5 csc exe svcutil exe c Prog ram Files Microsoft SDKS Windows v6 DA Bin sycutilexe mesbuild exe CUWINDOWS Microsoft NET Framework w3 5 msbuild exe c temp3 finalQutput
41. 01 06 08 Dim 16 03 08 Sam 22 03 08 Sam 29 03 08 Dim 30 03 08 Dim 30 03 08 Jeu 03 04 08 Dim 06 04 08 Ven 04 04 08 Sam 05 04 08 Dim 06 04 08 Ven 11 04 08 Sam 12 04 08 Sam 26 04 08 Ven 25 04 08 Sam 26 04 08 Sam 10 05 08 Sam 10 05 08 Sam 24 05 08 Ven 30 05 08 Sam 31 05 08 Dim 01 06 08 Dim 22 06 08 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 24 hr 18 hr 34 hr 4 hr 4 hr 4 hr 23 hr 6 hr 8 hr 9 hr 8 hr 6 hr 48 hr 36 hr 12 hr 53 hr 53 hr 48 hr 18 hr 12 hr 6 hr 72 hr eeeeeeeeoeoeoeeeoeoeoeeeeoeeeeeoeoeeeceee eo ees eeeeeeeeeeeeeeeeseeeeee eee eeeeeeeeeeeeeeeeeeee ee Hes so Wai 00000000000000000000000000000000000000000000000000000000000000000000000000000000009 ALESSE EFFZEFZEFEFAFFFFFFEFEFEFTEFFEF SEFF FFFE FEF EFF FS FEFEETFTEFETFEF FEFEFE F EFEFEF ESE FEEFEE FSFEE E 13 3 Outils utilis s 13 3 1 Visual Studio 2005 Le projet ayant commenc en septembre 2007 Visual Studio 2008 n tait pas encore disponible c est pourquoi at utilis Visual Studio 2005 avec installation du patch dotNetFx35setup exe pour prendre en charge le framework 3 0 les diff rences entre la version 3 0 et 3 5 ne posant pas de probl me au niveau des web services ceci afin de pouvoir cr er des web services avec les connaissances apprises en cours D autre part les exemples fournis dans le sdk utilisent cette ver
42. 0200 809 costum contient 3 l ments custom UE RE SE EE Pour l entr e 1 custom2 contient 2 l ments 1 1533532 2 4 8 Et l int rieur on trouve le tableau de double dont les valeurs sont s par es par un double point virgule Pour assurer mes arri res quant aux bugs je d veloppe en parall le toute une s rie de web services pour tester et je teste galement fr quemment les l ments consid r s comme bon car avec la g n ration de code une petite modification peut poser beaucoup de probl mes en cascade donc 1l faut que je puisse d tecter les probl mes au plus tot avant que a ne se transforme en montagne Pour la cr ation des web services j ai mis de c t VS 2005 et je d veloppe maintenant avec VS 2008 en utilisant le template WCF Service Application pour rester sur la ligne WCF compos d une interface ServiceContract et des classes de donn es DataCotnract et une classe Service contenant le traitement des op rations C est pratique a utiliser a va assez vite monter et par rapport a avant o je modifiais un web service au fur et mesure des tests je peux r utiliser facilement pour retester Vu que j tais bloqu avec les tableaux custom j ai profit de faire quelques pauses sur cette partie en regardant comment faire pour utiliser des Usercontrols Pour les utiliser 1l faut avoir une r f rence pour y avoir acc s Cette r f rence est faite dans l
43. 2 LA 6 regen COI IM E 2 Fonctionnalit s de Uapnplteaton 3 EE 3 pep CI ae E E 4 GE CTI RATIONAL OS E 4 2A ee ET e e 4 Sen EEN 4 2 6 Lancement d une application g n r e 4 ACTUELS de eet 5 3 1 G n ration Commune 5 Sel CCC AOL Ee asec sas da eee da idees Dao de red 6 SS CC CAO E DEE 7 ebe ECH 8 Jo CONMOULAMOM Cl EE 9 3 6 Documentation sur contenu des Classes CH 9 3 7 Documentation sur contenu des fichiers de transformation 0c0eeeeeeeeeees 9 3 7 1 OSCAR a 10 3 7 1 1 Ue nn a ae cn 10 3 7 1 2 UC Kami OO a on En ee tb a 11 2 CD OR A E E Uecantenednenawes E mete 20 21 EE Ee 20 3 12 2 Manifest nunit ENEE ee 20 3 7 3 De 20 eT T H RE 20 3 7 4 1 bY Saas op A 2a een eine rare ee ene reer ne ner rere 21 3 7 4 2 Wizard Window XANES Oop tar eur 22 3 7 5 EE 22 3 7 5 1 AllWindow xaml cs 2 xsit 22 OZ KS dee 25 192 Test UnitODjectClass Ee 25 S quence des traitements de appltceaton 26 4 1 R cup ration des informations provenant du WD 26 4 2 G n rer du code pour la g n ration automatgue 27 4 3 G n rer du code pour la g n ration Wizard 28 4 4 G n rer du code pour la g n ration test Nunit 30 ee 31 geheegt 31 gt 1e Window Eege 31 12 En Be ug 34 5 1 3 e e E 36 De Do IC MP CN 36 5 2 G n ration wizard avec Enum et Boolean ccccccccssssseeseeeeeeeeeeeeeeeeeeeaaaaans 36 WAR VY UO yah a amk AACS rse i EE E E E E essaeete nese 36 DD MM A
44. 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e W VALAIS SCSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSOSSSSHSSSHESSSSSSSSSSSSSSSSSESSESESSSSOSSESEEESO Hee Co WALLIS SSCSHSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSOSSSESSOSCOESSSSESSSEEEES 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e Garder un ceil sur les assemblies utiliser dans le fichier MyProgram cs Documentation d finitions pour CodeDom XSLT mise jour des r f rences chapitre 9 dans documentation e Etape 1 g n rer un client en mode console e Etape 2 Choix de m thode pour g n rer du code Prochaine tape e recherche d information sur XSLT pour C et apprentissage rapide du langage pour ensuite impl menter de le projet de test en cours e Cr er un fichier xml pour stocker les valeurs du web service e Cr er un template XSLT pour traiter les donn es Tester la g n ration et ex cuter le r sultat Total Probl mes rencontr s Solutions trouv es Probleme Losungen Description du probleme Beschreibung des Problems Parti sur une tr s mauvaise piste parser la main les fichiers cr s par svcutil Beaucoup de probl mes difficile long et au final pas terrible Stocker les chemins d acc s certaines dll ou programmes utilis s csc svcutil ainsi que pour les sorties Utiliser un resx n est pas le mieux Quelques probl
45. 8 9 8 9 Right Stretch default Re a VerticalAlignment Center Ve 278 Es F A Bottom SE SE Le Grid peut galement contenir plusieurs objets de type StackPanel comme le montre l exemple suivant lt StackPanel Name stackPanell Grid ColumnSpan 1 Grid RowSpan 1 HorizontalAlignment Left VerticalAlignment Top gt lt Label Height 23 Name labell1 Width 120 VerticalAlignment Top gt Label lt Label gt Button Height 23 Name buttonl Width 75 gt Button lt Button gt lt TextBox Height 21 Name textBox1l Width 120 Text TextBox gt lt StackPanel gt lt StackPanel Name StackPanel2 Grid ColumnSpan 1 Grid RowSpan 1 HorizontalAlignment right VerticalAlignment Top gt Vionnet Olivier HES SO Valais juin 2008 131 217 Zeck JK Hes so WALLIS ccccccccccccccccccec cece eee ee eee SSS SESS SOO SOOSSO ESO OSO OSES OOSOOSOOSOODOOOOOSOOEE lt StackPanel lt StackPanel Name StackPanel3 Grid ColumnSpan 1 Grid RowSpan 1 HorizontalAlignment Center VerticalAlignment Center gt lt StackPanel E Lorsque l on agrandit la fen tre les l ments restent coll s a leur position Il est possible de disposer l l ment relativement par rapport un autre l ment ou par rapport l l ment parent en utilisant la propri t Margin Le contenu de Margin fonctionne de la fa on suivante 1 distance entre le bord gauche de l l
46. 8 EES 000000000000 00000000000000OCCO0LOLOCCOCROCC0COCCOLO0CO0C0C0000000000000000000000000000000e M Window om ass 13 6 6 3 GroupBox Le GroupBox est un conteneur qui poss de une bordure et un header Le header est d fini en utilisant lt GroupBox Header gt et on y place un label par exemple lt StackPanel gt lt GroupBox Width 150 Height 52 gt lt GroupBox Header gt lt Label gt Boutons lt Label gt lt GroupBox Header gt Burton bouton 7 Burren lt GroupBox gt lt GroupBox Width 150 Height 101 gt lt GroupBox Header gt lt Label gt Label lt Label gt lt GroupBox Header gt lt Label gt label lt Label gt lt GroupBox gt lt StackPanel gt Boutons Label label 13 6 7 Button Checkbox ListBox amp RadioButton 13 6 7 1 Button Le bouton permet l utilisateur de d clencher l ex cution du code d termin dans l attribut Click 2 attributs int ressants de citer e Cursor permet de d finir comment doit s afficher le curseur de la souris lors d un survol du bouton e ClickMode permet de d terminer quand l action du bouton doit tre d clench e lors du click lors de rel chement du click ou lors du survol de la souris Alors que dans la version de Visual Studio 2005 avec le patch pour la prise en charge du framework 3 0 la cr ation de l v nement du click sur un bouton devait se coder totalement manuellement la version 2008 de VS permet de
47. 9 9 8 9 8 9 9 9 8 8 9 8 9 8 9 8 9 8 EES 20000000000000000000000000000000000000000000000000000000000000000000000000000000e Chaque for each n est ex cut qu une fois vu que le type actuellement trait n a pas de parent qui serait un tableau personnalis 1 tableau d objets personnalis s qui est le parent MN ti Cus rome Boolean amp lt xsl for each select uneDimension input gt Pubibre EE oel Values EE amp lt xsl for each select BooleanC amp gt returnValue amp lt xsl value of select nameElement amp gt IsChecked Sli KSI OSE OOS Eason les EE returnValue returnValue Substring 0 returnValue Length 2 Gle Zola E amp lt xsl for each gt return returnValue Gilt xsl Or cachsotr Le premier for each est ex cut une fois Ensuite pour chaque l ment du tableau parent la valeur du CheckBox est r cup r e stock e dans un String et s par e par un d limiteur Un test est effectue a chaque n ud pour savoir si c est le dernier et enlever le d limiteur de trop la fin du String 2 tableaux d objets personnalis s qui sont les parents lt l Gee CusromMe Cuseom li Pool amp lt xsl for each select deuxDimension input egt public Siring GgerUCvalue EE amp lt xsl for each select BooleanC2 amp gt returnValue amp lt xsl for sach select BooleanG7 i sot returnValue amp lt xsl value of select nameElement amp gt IsCheck
48. 9 9 8 ese 9 9 8 8 8 8 9 9 9 8 8 8 8 9 eee 8 eee ees e e Hes SO WALLIS 8 9 9 9 9 9 0 9 9 9 amp 9 9 9 8 9 9 8 8 9 9 9 9 8 9 8 9 9 8 8 9 9 8 9 8 9 9 9 8 9 8 9 9 8 8 9 9 8 9 8 8 9 8 8 9 8 8 9 9 8 8 9 8 8 8 9 8 8 9 Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 25 Woche 18 04 2008 24 04 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden e Cr ation de la partie affichage des tests Nunits j ai utilis l l ment ListView et GridView C est un peu trange ListView contient un GridView qui contient les donn es Je me suis bas sur 2 exemples pour construire mon affichage http www codeproject com KB miscctrl GridView_WPF aspx http msdn2 microsoft com fr fr library ms771778 aspx Je n ai pas pu utiliser le fichier de r sultat de Nunit tel quel il y a un probl me de binding a cause de n uds portant le m me nom qui sont imbriqu s J ai fait au final un fichier xml temporaire pour ne garder que les r sultats importants et a fonctionne A noter que les colonnes peuvent tre r arrang es par d faut e Chaque m thode de test repr sente une ligne Chacune des m thodes peut contenir plusieurs asserts mais Nunit ne renvoie qu une ligne pour tous les asserts d une m thode D s qu une assert est fauss
49. Ab AER 200000000000000000000000000000000000000000000000000000000000000000000000000e http www thinktecture com resourcearchive tools and software wscf wscf walkthrough Contrat de licence WSCF thinktecture WSCF WsContractFirst Licence Agreement Copyright The software the documentation and all other content of the distributed pack age if not otherwise stated 1s copyright 2003 2006 thinktecture http www thinktecture com All rights reserved The WizardControl control is copyright Tim Dawson http www divil co uk net controls wizardcontrol The WRM PropertyTree control is copyright Russell Morris http www codeproject com cs miscctrl propertytree asp Terms of Use Permission is hereby granted to use this software for both commercial and non commercial purposes without limitations and free of charge Permission 1s hereby granted to copy and distribute the software for non commercial purposes A commercial distribution is NOT allowed without prior written permission of the authors Warranty This software is supplied AS IS The authors disclaim all warranties ex pressed or implied including without limitation the warranties of merchant ability and of fitness for any purpose The authors assume no liability for di rect indirect incidental special exemplary or consequential damages which may result from the use of this software even 1f advised of the possibility of such damage Submissions The auth
50. C gt Rapport d erreurs Lancement application g n r e 2 1 G n ration automatique Cette fonctionnalit permet de g n rer sans intervention humaine un client pour un web service Cette option est utilis e pour obtenir tr s rapidement un client et pouvoir tester rapidement le web service Toutes les op rations trouv es sont impl ment es et les UserControls par d faut sont utilis s Lorsque la g n ration est achev e l application affiche dans la fen tre principale un bouton pour lancer l ex cutable cr Vionnet Olivier HES SO Valais juin 2008 3 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000000006000600 0006 00000000000000000000000000000000 Ah A EAR 00000000000000ve 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e 2 2 Generation wizard Cette fonctionnalit permet de g n rer un client en permettant a l utilisateur d effectuer des choix lors de la g n ration Cette fonctionnalit est utilis e pour les cas ou il y a beaucoup d op rations disponibles et qu on ne souhaite traiter que certaines ou encore pour utiliser d autres UserControls que les UserControls standards afin de simplifier l utilisation pour tester le web service Une fois la g n ration commenc e l application demande l
51. Custom wcfs35 Custom string Enum1 WefService36 Custom wcfs36 Custom string Enum1 Custom2 string Enum2 WefService37 Custom wefs37 Custom string Enuml WefService38 Custom wefs38 Custom string Custom2 string Enum1 WefService39 Custom wefs39 Custom string Custom2 string Custom3 string Enum1 WefService40 Custom wefs40 Custom string Custom2 string Custom3 string Enum1 WefService41 Custom wefs41 Custom string Custom2 string Enum1 WefService42 Custom wefs42 Custom string Custom2 string Custom3 string Enum WefService43 Enum1 wefs43 string Enum1 WefService44 Custom wcfs44 Custom string Enum1 WefService45 Custom wefs45 Custom string Enum1 Custom2 string Enum1 WefService46 Custom wefs46 Custom string Enuml WefService47 Custom wcefs47 Custom string Custom2 string Custom3 string Enuml WefService48 Custom wefs48 Custom string Custom2 string Custom3 string Enum1 WefService49 Custom wefs49 Custom string Custom2 string Custom3 string Enum1 WefService50 Custom wefs50 Custom string Custom2 string Enum1 WefServiceS1 Custom wefs51 Custom string Custom2 string Custom3 string Enum1 WefService52 Boolean wcfs52 Boolean Boolean Boolean wcfsS2A Boolean Boolean Double wcfs52B Int32 Double Boolean wcfs52C Boolean int wcfs52a1 int
52. L System Text JL System ServiceModel 3 0 M System ServiceModel ke System Runtime Serialization ke System Xml Ling 3 5 System Runtime Serialization ke System ServiceModel M System Data DataSetExtensions 3 5 Ajouter une assembly Ajouter une assembly M System Data ss ss M System Xm Mettre jour Mettre jour Ajouter une assembly Mettre jour Cet onglet permet de g rer les assemblies qui doivent tre utilis s lors de l utilisation de la g n ration des tests unitaires Le principe de fonctionnement est identique au point 7 1 2 Auto Client Assemblies 7 1 4 Load Restore Cet onglet permet de g rer les options sous forme de projet Il est possible de sauver la configuration actuelle et d en charger une autre voir de remettre tout a Zero BE Configuration de l application Path Auto Client Assemblies Wurt Tests Assemblies Load Restore Importer une configuration Choix de la configuration Charger Sauver la configuration actuelle Sauver Remise z ro Remise de tous les param tres par d faut Restore Vionnet Olivier HES SO Valais juin 2008 15 217 See eegeegegeegeeegegeeegegeegeeeeggeegegegegegegeegogpeeegegegeggegeeeeeeeeegeegeeeeeeegeeeegeeeegeeegeeee Hes so Ma ee ER EE Sauver la configuration actuelle Il suffit de cliquer sur le bouton Sauver pour qu un fichier xml contenant tout le contenu du fichier ApplicationSettings settings soit cr
53. Le for each EnumC s occupe pour chaque entr e du tableau parent de cr er le contenu du ComboBox S il y a 2 tableaux d objets personnalis s qui sont les parents CN Po Cu Concent ces ComooBoxs Cuscomi l gt Custom gt Enum gt amp lt xsl for each select deuxDimension input amp gt Priva eo Vee U deux cli xsl tor each select EnNnumC2 sgt amp lt xol for cache select TENUMC i Gor mene ane le OP e ee E A lic aea e a a E E ComboBoxItem cbi new ComboBoxItem Cli COMECh Geo vins waa A tone valine amp lt xsl value of select nameElement gt Items Add cbi ele xsl for eachsqr Cle xsl for cachegr Vionnet Olivier HES SO Valais juin 2008 15 217 Hee co DVALAIS LEE WW EE IT RTE PETER EE Se te tit xXSl For Ee EE M me op ration effectuer que pour 1 tableau la diff rence qu il faut traiter les 2 tableaux getUCValue S il n y a pas de tableau d objets personnalis s qui est parent HS Set EB EE amp lt xsl for each select zeroDimension input amp gt PUDE CEring g EE beer EE EE amp lt xsl for each select EnumC gt ComboBox Trem EE EE bem U6 COmeobexmccdlole Ee ele SEI EE EE TO L TEn EE Tor cachat Le xsl For Cho Il s agit simplement de r cup rer la valeur de l index s lectionn S il y a 1 tableau d objets personnalis s qui est parent get Customide Enun amp lt xsl for each select uneDi
54. NO OnO nO a a Int32 id 20 nameMember iBedCards EA AAA 70550520570 70 Ohi Hame ardi Vionnet Olivier HES SO Valais juin 2008 68 217 Hes so eeeeee eee seeeeeeee eee eeeeeeeeeeseeceeeee eee eeceeee ec eeeeeeeeeeeeeeeeeeeeeeeeeeeeseseeeee VALAIS 6 eeeegeegeegeegeeeeeeegegeeggeeeeeeegeeegegeegegeeeegeeeeegeeee 6 egeeegegeeeeeeeeg gegegeegeeee Exemple avec le premier match web service test le 3 juin Suisse R publique Tch que le 7 juin 18 00 Le match se d roule au stade Jackob Park a Bale contenance 425000 places Les informations sur le r sultat le score les cartons jaunes et rouges ne contiennent rien Au niveau des pronostics sur 108 personnes 24 personnes pensent que la Suisse va gagner 59 qu elle va perdre et 25 qu il y aura des prolongations La moyenne estim e des cartons jaunes est de 2 08 et de 0 36 pour les cartons rouges 6 2 17 Weather data R cup ration des donn es m t os N cessite d tre enregistr pour pouvoir utiliser ce service Pour chaque op ration il faut toujours renseigner les champs UserName et Password Source http www ejse com weather_data htm WSDL http www ejse com WeatherService Service asmx WSDL Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie J
55. PeSnom Jee leet 1 a Oi 4 Lael Vice Ss NCC e 6 amp CUS LION ES ES EN SEMI CINE CS MOT MENTION Lal Sie Iwi Oa Clee QE Lienen ee 1 Personne LIN STE a IC TeRErE ONE primitif match parametre type mode inputi Enum match parametre type mode inputl primitif match parametre type mode inputi primitif match parametre type mode inputl custom match parametre type mode inputl primitif match parametre type mode inputi primitif match parametre type mode inputi primitif match parametre type mode inputl Appel du WS et r cup ration du retour Vionnet Olivier HES SO Valais juin 2008 39 217 ss PML ANS GE ze Hes so NL ZE EE p dt dd dd ee 2000000000000000000OC0CCC0C0CLO0O0OCC0CLOL0CC0CCCOCCCOLOLOC00000000000000000000000000000000000e Persone Se Tr TRE GENS eee Illi Sime ere er le tree AI Le traitement qui reste faire est de transformer le retour de l op ration pour afficher les valeurs dans les diff rents UserControls traitement du retour WS J Custom P Pe Onne Iasi vos 0 eusisaytyos IOs TOOLS EI OT tee kt 0 a IO Lave oe IO COTE a Oss Per onne CUS yeS 10 lisemyos Il Jel meee a 0 2 Mrs eon EE Siig IL aS esi IN AO Once 6 al I f La siete LOC Counc I sci I oi j 7 eustom enum Ure st O var CROIS LS EM VOS IL Comins 1 OR E Roue rom ae ote ENEE SE ho Cusel yoo bO Nem w
56. SO Valais juin 2008 14 217 ITT Hes SO we GE Le code est calqu sur celui du template rootBoolean la diff rence qu il y aa la fin un tableau de Boolean a traiter au lieu d un simple type de Boolean rootEnum Ce template est destin la cr ation de UserControls sp cifiques pour un type qui est une num ration Au lieu d afficher un TextBox 1l affiche un ComboBox dont le contenu est rempli avec les diff rentes num rations du type initUC_ Pour pouvoir utiliser ce contr le dans la partie input 1l faut dans un premier temps initialiser les contr les et mettre le nom de chaque num ration S il n y a pas de tableau d objets personnalis s qui est parent Init du connu des Combobexs Enum amp lt xsl for each select zeroDimension input gt ES d EE Re Ne ete AMIE Ge Se obus mate te Go el ComboBoxItem cbi new ComboBoxItem EE EE UC on ORO ee Late E eeler amp lt xXS For Che S il y a 1 tableau d objets personnalis s qui est parent lt l init Cu Contenu ces ComooBoxs Custom gt Enum gt amp lt xsl for cach select uneDimension input gt nek e ee a e amp lt xsl for each select EnumC gt COMORES 0 ae EE 2 sche enum Era i l engi ComboBoxItem chi new ComboBoxItem Cla Content mums ILES EE A le amp lt xsl value of select nameElement gt Items Add cbi j elt xsl for cache lb xsl For lt Ccheor
57. Type lt ixs element lt xs element name Helo WorldResponse gt lt xs complex Type CS eq Uence lt xeitlement minOecurs U name Hello WorldReswlt nillable true type xs stnnz gt xs Sequence gt ixs complex Type lt lxs element xg element name Tly Hello se complex Type CS eq Uence lt xeielement minQecurs U name njourssemame type ent Xs Sequence gt ixs complex Type lt lxs element lt xs element name TvlyHello Response x complex Type lt XS SEQUENCEZ lt xs element minOccurs U name lvlyHello Result nillable true type gl Helio rs xs Sequence gt ixs complex Type lt lxs element lt lxs schema gt Vionnet Olivier HES SO Valais juin 2008 124 217 Hes so VALAIS J WALLIS ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEUEIEUEEEIEEEEEEEEEEIEUEEEIEEEEEERE 0000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e 2020000000 eeeeceae eee eee eeceee eee e eee e eee eee eee eee eee eeeeeeees ee eee eee eeseeeeeeeee ee eee 6 200000000000000O0C0OC0COCC0COCCCOCOCLROLCCOOCCCCCCOLOLOCOL0C0C0000000000000000000000000000000e Contenu xsd xsd2 lt xs schema elemeniFormDefauli qualified targeiNamespace http liechemas datacontract ore Z0040 Hello WorldExarmple gt lt xs complexType name Hello lt XS
58. VALAIS String id 13 nameMember CREDITSAVAILA Ghrinn ido 7 Paroebzerskber CTT String id 14 nameMember MESSAGE 6 2 13 Web Service XigniteTools Quelques outils mis disposition dans un web service Ce web service demande une licence pour tre utilis possibilit de tester gratuitement Source http preview xignite com xtools asmx WSDL http www xignite com xtools asmx WSDL Ce web service contient diff rentes op rations Jena test que ceux qui me paraissaient le plus int ressant Ping pour tester le temps de r ponse d une adresse IP WholsThat pour obtenir un whois d un serveur GetLastClosingDate pour obtenir le dernier jour avant la femeture Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application op ration Ping r ussie Vionnet Olivier HES SO Valais juin 2008 60 217 Hes so f ff fj j f j WWholsThat IsO penMarketDate f fj j seeeeeeeeoseeeeeeoeeeeseeseeeeeeeeeseseeeseeseeaeeeeeeeeeeeeeeeeeeeeeseeeeeeesceseeeeeeeseseeeeee d VALAIS SSOCSHSSHSSSSSSSSHSSSSSSSSHSSSHSSSSSSSHSSSSSSSSSHSSSSHSSSSHSSSSSHSSSSSSHSESSSSHESSESESSSSSSESESESE Wa WALLIS EE Output Obj PingResult String id 88 nameMember HostName GetLastClosingDate IsMarketOpenNow GetOpenMarketDate
59. WCFCalculator userControls DC Boolean_I_id7_B 5 xmins http schemas microsoft com winf 2006 xaml presentation xmins x http schemas microsoft com winf 2006 xaml gt Is Code CS lt ml version 1 0 encoding utf 8 7 gt lt xslistvlesheet version 1 0 xmins xsl http fa v org L999 XSL Transform xmins msxsl urnischemas microsoft comixelt exclude result prefixes msusl gt lt xsl output method xml indent yes gt lt xsl template match finishTranstorm gt using System using System Collections Generic using System Ling using System Text using System Windows using System Windows Controls Sauver La taille du tableau du 1 niveau est identique celui du contr le pr c dent tableau 1 niveau tant le tableau de Personnes Il faut ensuite sp cifier les tailles des tableaux de 2 niveau pour les tableaux d objets de type Ami Pour Mickey il y a 3 Amis Minnie Dingo et Pluto et pour Donald il y a 5 Amis Vionnet Olivier HES SO Valais juin 2008 85 217 E editUcWindow eles Template en cours d dition at UCBoolean_I_id BS es Code XAML lt xml version 1 0 encoding utf 8 gt lt xslistvlesheet version 1 0 xmilns xsl hthp www w3 org 1999 SL Transform xmins mexsl urnischemas microsoft comixelt exclude result prefixes mexsl gt lt xsloutput method xml indent yes gt lt xsl template match finishTranstorm gt lt I CDATAL
60. a n tandis que le n ud avec lid ap aura comme fr res pr c dents les n uds avec les id a5 et al Following Permet de trouver tous les n uds qui suivent les enfants du n ud courrant ne sont pas compris mais les enfants des autres n uds oui en utilisant following Moi nodeAl al Noeuds suivants modes a5 nodeB1 a6 Moi nodeA2 a2 Noeuds suivants nodeA2 a4 nodeB1 a5 nodeBl a6 Moi nodeA3 a3 Noeuds suivants nodeA2 a4 nodeBl a5 nodeBl a6 Moi nodeA2 a4 Noeuds suivants nodes a5 nodeB1 a6 Moi nodeBl a5 Noeuds suivants nodeBl a6 Moi nodeBl a6 Noeuds suivants Preceding Permet de trouver tous les n uds qui pr c dent le n ud courant en utilisant preceding Attention le parent grand parent et ainsi de suite n apparaissent pas Moi nodeAl al Noeuds pr c dents Moi nodeA2 a2 Noeuds pr c dents Mol gt nodeA a Noeuds pr c dents Vionnet Olivier HES SO Valais juin 2008 157 217 PAPER EEE WW EC RE ES EE EE Ses ete KE Hes SO WALLIS ZE 200000000000 OLOCC0COCCCC00LCOLO0C00000000000000000000000000000000000e Moi nodeA2 a4 Noeuds pr c dents nodeA2 a2 nodeA3 a3 Moi nodeB1 a5 Noeuds pr c dents nodeAl al nodeA2 a2 nodeks a3 nodeA2 a4 Moi nodeBl a6 Noeuds pr c dents nodeAl al nodeA2 a nodeA3 a3 nodeA2 a4 nodeBl ad
61. chaque objet cu contient un tableau de Custom2 et chaque l ment de ce tableau contient un tableau d Enum1 Je n ai pas de solution rapide permettant d am liorer le visuel Si c tait a refaire je pencherai plus pour faire une transformation XSLT pour cr er le code XAML de la fen tre et obtenir au final le m me type d affichage que celui que j obtiens pour l application g n r e c est dire qu chaque fois qu il n y a pas un type simple complex ou sp cial un GroupBox soit affich et les membres l int rieur Exemple wefse9 L Input Obj Custom Obj Custom Enumi id 3 nameMember Em Output Obj Custom Obj Custom Enumi id 6 nameMember Em 24h Vionnet Olivier HES SO Valais juin 2008 199 217 TTT DR Hes so WALLIS SSssssssssssssssssssssssssssssssssessssssssssssssesssssssssssssssssssssssssssssssss Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 25 Woche 16 05 2008 22 05 2008 D compte des heures hebdomadaires Deklaration Wochenstunden T che Aufgabe Heures Stunden e Point sur le refactoring Pas mal de modifications ont t faites Maintenant j utilise le BackGroundWorker pour faire des traitements long et qui me permet tout de m me de mettre jour la partie UserInterface tout en ne bloquant pas l application
62. comme nom pour le fichier xml Restaurer une configuration Pour restaurer une configuration il suffit de choisir dans la liste d roulante le fichier importer ces fichiers xml sont normalement stock s dans c temp3 config Remise z ro permet de remettre les param tres originaux de l application 7 2 G n ration automatique Pour n importe quel web service dont il faut g n rer le client de fa on automatique il faut prendre le choix Automatique te mil x G n ration Options Automatique Vionnet Olivier HES SO Valais juin 2008 76 217 TTT Hes so WALLIS see 7 2 1 WCFCalculator Lancer la g n ration en choisissant la version automatique Au fur et mesure de l avancement du traitement les informations sur ce qui se passe sont affich s dans la barre de status Si la g n ration c est bien d roul e l application doit afficher un bouton pour lancer l application g n r e windows JO G n ration Options Lancer l application g n r e G n ration termin e S1 la g n ration a chou e le rapport d erreur contiendra les informations sur les probl mes rencontr s Il ne reste plus qu lancer l application Poe add div mult soustr Double id 1 nameMember al Ze Double id 2 nameMember 32 Il suffit de choisir l op ration que l on souhaite essayer chaque op ration correspondant un onglet de rentrer
63. comportement fauss de l application g n r e Ces probl mes peuvent tr s vite devenir co teux en temps et plus la g n ration est complexe plus le risque est grand D autre part plus la g n ration est complexe et plus 1l y aura de chances que le changement d une condition de tests dans un template entra ne des erreurs ailleurs M me en ayant cr beaucoup de web services pour tester l application et utilis des web services trouv s sur Internet cela n a pas emp ch la d couverte de bugs tardivement dans des endroits que je consid rai comme bons Je n ai galement pas assez analys la g n ration de code avant de commencer cr er les templates Ja pay cette erreur en cours de projet lors que j ai t confront aux tableaux Vionnet Olivier HES SO Valais juin 2008 99 217 eeeeaee eee seeeeeeee eee eeeeeeeeeeseeceeeese eee eeceeceeeeeeeeeeeeeeeeeeeeeeseeeeeeeeceseseeeeee eeeeecee ee ecoeeeceeeeeeeeeeeeeeeceee eae eeseeeeeeeeceeeeeeeeee 0000000000000e 00000000e h A EE 7 VALAIS 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e Hes so WS EE de type d objets personnalis s Je n avais pas pr vu ce cas de figure et les templates cr s ne pouvaient pas tre simplement modifi s pour supporter ce genre de type Il a fallu repartir de z ro Mon manque d exp rience dans la cr ation d une application s est ressenti lors du d veloppement J ai
64. config lt nom exe gt exe config Recherche des diff rents moyens possibles bruteforce StreamWriter et codeDOM cart pas adapt Choix retenu XSLT gt peut produire tout comme code 163 217 autre moyen pour g n rer le code car txt en sortie lecture facile des templates Divers Diverses Prochaine tape Se mettre au XSLT g n rer fichier de donn es XML et un template XSLT pour produire le fichier permettant d utiliser le service web Vionnet Olivier HES SO Valais juin 2008 164 217 J tat IESEL Hes sS0o WALLIS EE OLSVAS SLE SDSS ASDA TOSSES ESSE SOLO SESE SOAS IOS HOD SORETSES OVS EE Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 15 Woche 01 02 2008 07 01 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Recherche d information sur XSLT et C Apprentissage du XSLT et XPath ainsi que documentation Compilation d un projet XAML avec msbuild en console a la main sur un projet existant Cr ation d un projet pour g n rer une application XAML Pr paration des fichiers codes n cessaires pour produire un projet sans cspro Reprendre tous les fichiers XAML C d un projet HelloWorld juste afficher un string dans le Window et transformer chaque fichier pour qu il puisse tre transform avec XSLT Pour le moment
65. cr er l v nement du click en double cliquant sur le contr le dans la fen tre de design et affiche la nouvelle m thode qui va tre ex cut e au click sur le bouton Le nom de la m thode doit correspondre celle d finie dans l attribut Click dans le fichier XAML Vionnet Olivier HES SO Valais juin 2008 146 217 I VALAIS cecccccccccccccc ccc cece eee e eee eee eee eee eee 0 Hes so WALLIS Ssssssosssssssssssssssssssscsssscsssssssossssoscssssssssosssssssssssssssssssssssses 20000000000000000000000000000000000000000000000000000000000000000000000000000000e Exemple de l action d un bouton dans le code behind EE EEN d this Close gt Cette action va provoquer la fermeture de la fen tre 13 6 7 2 CheckBox Le contr le CheckBox dispose de 2 tats non s lectionn et s lectionn en utilisant l attribut IsChecked dans le code XAML Gr ce l attribut IsThreeState true ce contr le peut afficher un 27 tat dit interm diaire Pour afficher directement cet tat IsChecked prend alors la valeur x Nu11 Dans l exemple fourni par Microsoft sur la gestion en lecture seule l utilisation du stade interm diaire peut tre int ressante dans le cas o le contenu ne correspond pas true ou false c est le cas lorsque l on regarde les propri t s pour un dossier qui contient la fois des fichiers qui sont en lecture seule et d autres qui peuvent tre modifi s Il est galement
66. d objets personnalis s qui est le parent lt l et Custom gt Boolean gt amp lt xsl for each select uneDimension output gt public void SertuUCValue Strimg Ser sue lt Paine ll wGl Cia leon Close 7 Siecle CmpArray SEE soli tae Sisiciiag NS Un SVSECM OE PANGS os LODE TOMS Re movebmptveneeres Boolean boolArray new Boolean tmpArray Length OMG CU Eeer ely alas boollArray Boolean Parse Empire son ine Cpe OU lt Output g n ration des contr les par rapport aux donn es gt elt ok noe cache cleer Po ilean EE Begin On a OA OISE NEC DANSE eege CheckBox cb new CheckBox Clr Nees su We EE cits le mm nde cb dstChecked boolArray cpt Co Content Yrbol i IN Siac creel well a era A E ley xsl or lt cch or lb xel For cachgi Le premier for each est ex cut une fois Ensuite la premi re chose est d effacer le contenu du StackPanel pour le cas o l on re oit une nouvelle r ponse du web service Le String est d compos en un tableau de Boolean Ensuite le for each BooleanC Output s occupe de cr er le contr le d y mettre la valeur et de l afficher dans le StackPanel et ce pour tous les l ments du tableau parent 2 tableaux d objets personnalis s qui sont les parents lt l et CUS OMR COL tome gt Boolean gt amp lt xsl for each select deuxDimension output amp gt public void SertuUCValue String S
67. d un TextBox je n avais qu une partie du texte sauv probl me de buffer Par d faut 1024 J ai mis la place la taille du contenu du TextBox Tourn un peu en rond jusqu ce que j aie compris comment fonctionne les ListBoxs pour r cup rer le contenu s lectionn un ToString par d faut donne le contenu mais galement le type Suite du travail Total S occuper des types complexes Avec le processus que j ai mis en place il y a un probl me je g n re des fichiers avant de demander des informations l utilisateur Ca va bien pour les types simples mais pour les complexes c est un probl me si l utilisateur choisi d afficher des CheckBoxs ou des ComboBoxs il faut les coder et leur nombre est d termin par la taille du tableau information que je n ai pas lorsque je g n re Demander cette information lors de la g n ration des fichiers ne me semble pas une bonne id e il est pr f rable que l utilisateur puisse avoir la vue d ensemble des param tres de l op ration pour d terminer ce qu il veut Donc il faut que je fasse de la modification de code lorsqu il va choisir un template sp ciale Voici ce que je pense faire Le code des fichiers que je vais g n rer va contenir du code XSLT qui ne sera pas transform lors de la premi re op ration de transformation Lorsque l utilisateur va choisir le template qu il souhaite utiliser J ouvre comme pour les types
68. d une ligne ces informations tant mises dans la d finition Width 10 Lorsque la fen tre est agrandie ou r tr cie la ligne ou colonne ne change pas de taille S1 l on souhaite ne pas mettre une taille fixe mais un ratio de taille 1l faut utiliser le syst me de fractionnement d cimal termin par un ast risque Ce syst me se base sur la taille de la ligne ou de la colonne et non pas sur le total de l espace disponible Width 1 0 occupe 100 de sa taille Width 2 0 occupe 200 de sa taille Width 0 5 occupe 50 de sa taille Dans une fen tre Windows contenant 9 cellules dont la largeur est de 93 pixels dans le volet d dition par d faut de la fen tre cela donne avec les diff rents Width pour la colonne du milieu les tailles suivantes Width 1 0 93 93 93 Width 2 0 70 139 70 Width 0 5 111 56 111 GridSplitter Il peut tre int ressant d offrir l utihisateur la possibilit de redimensionner la largeur d une colonne et c est la que le GridSplitter intervient Il met en place une zone entre 2 colonnes avec laquelle l utilisateur peut interagir On peut l utiliser par exemple pour un menu qui est sur la gauche et les informations sur la droite Si l arborescence du menu d passe la largeur de la colonne le texte ne sera pas affich mais l utilisateur pourra agrandir la zone pour tout afficher un exemple parlant avec le site MSDN le menu gauche pouvant pren
69. d fini M Window ME Some bold text in the paragraph Some advanced document features such as text that is not bold pagination and columns This topic provides an overview of flow documents and how to create them Flow documents are designed to optimize viewing and readability Rather than being set to one predefined layout flow documents dynamically adjust and retlow their content based on run time variables such as window size device resolution and optional user preferences In addition flow documents offer advanced document features such as pagination and columns This topic provides an overview of flow documents and how to create them Listltem i ListItem 2 Flow documents are designed to optimize Listitem 3 viewing and readability Rather than being set to one predefined layout flow documents dynamically adjust and reflow their content based on run time variables such as window size device resolution and optional user preterences In addition flow documents offer LO Ee E Vionnet Olivier HES SO Valais juin 2008 141 217 Hes soll wats GE BH Window Ceci est un texte qui est plac dans un TextBlock On peut m me faire plusieurs lignes de texte dedans On peut m me faire plusieurs lignes de texte ans Il est galement possible d afficher dans un canvas ou tout autre l ment de layout du texte avec le FlowDocument en utilisant un conteneur e FlowDocumentPageViewer pour un
70. dans la fen tre xaml peut tre double cliqu pour arriver directement dans la fen tre xaml cs avec la m thode d j crite 13 6 3 1 Quelques Informations g n rales Dans le code source d un fichier XAML on ne peut mettre que des objets de type UIElement donc pas possible d crire un hello world si ce n est pas un objet il faut passer par un Label par exemple A noter que XAML est sensible a la casse Chaque l ment d clar commence par une balise d ouverture dans laquelle on peut y mettre des propri t s et une balise fermante si l l ment ne contient pas d l ments enfants la balise de fermeture peut tre remplac e par gt dans la balise d ouverture Comme en XML l ordre de fermeture des l ments doit correspondre au sens inverse de leur ouverture la derni re balise ouverte tant ferm e en premier lt Balisel gt lt Balise2 gt lt Balise 3 gt lt Balise2 gt lt Balise1 gt Les propri t s des l ments XAML sont sp cifi es en utilisant dans la balise de l l ment un attribut Height par exemple avec sa valeur 23 lt habel Height 23 Margin 30 16 03 0 Name labell VerticalAlignment Top gt texte ici lt Label gt Pour certaines propri t s des l ments la syntaxe par attribut n est pas possible parce que la valeur ne peut pas tre crite comme un simple string La solution est alors d utiliser l l ment propri t Label H
71. dans le navigateur IExplorer Le WSDL est atteignable l adresse suivante http localhost 1999 Servicel svc wsdl 13 5 2 Client Dans Visual Studio cr er un nouveau projet WPF Application Dans le projet faire un Add Service Reference en utilisant l url du WSDL du web service http localhost 1999 Servicel svc wsdl VS s occupant d utiliser le Svcutil pour cr er le proxy et le fichier de configuration app config Cr er l interface graphique Simplement d poser les l ments XAML dans la fen tre Windowl Window1 xaml lt Window x Class WpfApplicationPersonne Windowl xmins http schemas microsoft com winfx 2006 xaml presentation AMS x htp Schemas mierocoru com wintx 2006 7 xem Title Windowl Height 300 Width 300 gt Grud lt Label Height 28 Name labell VerticalAlignment Top HorizontalAlignment Left Width 120 gt Nom lt Label gt lt Label Height 28 Name label3 VerticalAlignment Top HorizontalAlignment Right Width 120 gt Pr nom lt Label gt lt Label Height 28 Margin 0 51 0 0 Name label2 VerticalAlignment Top HorizontalAlignment Left Width 120 gt Age lt Label gt lt habel Heaght 28 HoriazontalAlignment Right Margin 0 51 70 0 Name label4 VerticalAlignment Top Width 120 gt Genre lt Label gt GE VerticalAlignment Top HorizontalAlignment Left Width 120 gt lt TEextBox Herght 23 Hori zontalAlignment Right Margin 0 22e 0 0 Name
72. dessus qui occupent plusieurs cellules lt Grid ShowGridLines true gt lt Grid RowDefinitions gt lt RowDefinition Name rowl gt lt RowDefinition Name row2 gt lt RowDefinition Name row3 gt lt Grid RowDefinitions gt Grid Co lumnmDerini tions lt ColumnDefinition Name col1 lt ColumnDefinition Name col3 lt ColumnDefinition Name col2 Cid ColumnDefinit ions I I gt lt Rectangle E rid Column i Crid cColumnspen 2 Margin 0 0 0 0 Name rectanglel Stroke Black Fill 800000FF gt Genel Vionnet Olivier HES SO Valais juin 2008 134 217 TTT DR Hes so wae sSSsssssscssssssssssssssssssssssssessssssssssssssssssssssssssssssssssssssssssssssss kb A EKEEEEKEEEEKEEEEEEEEEEEEEEEEAKEEEEEEEEEEEEEEEEEEEEEEEEEEEEUEEEEEEEEEEEEEEEETEEEEERT em Dans l l ment Rectangle Grid Column indique la colonne dans laquelle commence l l ment Rectangle Grid ColumnSpan indique combien de colonnes sont utilis es par l l ment Rectangle Si on avait voulu avoir toutes les colonnes de la 1 ligne occup e par l l ment Rectangle Grid Column aurait d prendre comme valeur 0 pour la 1 colonne et Grid ColumnSpan 3 vu que l on a 3 colonnes En ayant mis 0 dans la propri t Margin cela permet l l ment Rectangle d occuper toute la place de la cellule Width et Height Il est toujours possible de mettre la taille en pixel de la largeur d une colonne ou
73. donn es avec les namespaces et autres informations n cessaires pour construire l ex cutable Vionnet Olivier HES SO Valais juin 2008 171 217 em Construction du fichier csv KIT Hes so waits EE 1 ligne les noms des champs pr fix s avec I pour input O pour output OE pour le r sultat esp r Points virgule comme s parateur Nouvelle fen tre demandant si l utilisateur veut lancer le test ceci afin qu il puisse mettre les donn es tester dans le fichier csv Lancer les tests et affichage du r sultat Prochaine tape e Continuer la partie des tests e R soudre un bug de g n ration si la valeur de retour du web service est un type array la g n ration du code est totalement fausse e Modifier la gestion des erreurs des types saisis lors de l utilisation de l application g n r e e D velopper des web services simples pour tester la g n ration de l application e Tester l application avec des web services trouv s sur Internet Total Probl mes rencontr s Solutions trouv es Probleme Losungen Description du probl me Beschreibung des Problems Probl me de threads avec l affichage lors de la g n ration Lorsque le traitement est en cours le bouton de click reste enfonc et rien ne bouge tant que tout le traitement n a pas t enti rement fait 2 threads ne suffisent pas un pour le traitement et un pour actualis l affichage dans le status
74. g n r e automatiquement Afficher les op rations l utilisateur Il s lectionne celui ou ceux qu il souhaite utiliser Pr parer les templates des UserControls par d faut en tenant compte des options namespace et crire les fichiers Il me semble qu il est plus simple de tout crire d un coup et ensuite on garde que ceux qui ont t retenus Vionnet Olivier HES SO Valais juin 2008 193 217 WEE EE sy Total VALAIS Hes so Types primitifs Pour tous les types UC contenant un TextBox idem qu actuellement pour la partie g n ration automatique Boolean UC avec un CheckBox Enum UC avec un ListBox vide Types complexes Pour tous les types UC contenant un TextBox idem qu actuellement pour la partie g n ration automatique avec un d limiteur Boolean UC avec un TextBox pour la taille du tableau Une fois le chiffre rentr affichage des contr les CheckBox Enum UC avec un TextBox pour la taille du tableau Une fois le chiffre rentr affichage des contr les ListBox vide Remarque importante S il y a plusieurs types identiques 2 strings chacun aura son propre UserControl car il se peut tr s bien qu un soit dans un tableau d objet alors que l autre non Pour chaque op ration afficher toute la structure des donn es input et output Pour chaque type trouv afficher les informations du fichier dataFile xml id typ
75. gt coli testno Position last il SE SE SE lt xsl template gt lt xsl choose gt Cet l ment permet de faire un choix sur la transformation effectuer parmi plusieurs possibilit s cela fait penser au switch On peut mettre autant de possibilit s que l on souhaite en mettant la suite l l ment lt xsl when gt sans oublier de pr ciser dans l attribut test l expression tester et mettant le contenu de la transformation effectuer Il est galement possible de pr ciser une op ration par d faut effectuer en utiliser l l ment lt xsl otherwise gt lt xsl template match gt lt xsl for each select gt lt xsl value of select id gt xs lL Venoose lt xsl when test node id al gt AAAA lt xsl when gt lt xsl when test node id a2 gt BEBE lt xsl when lt xsl otherwise gt Cece lt xsl otherwise gt Aol choose lt xsl for each gt lt xsl template gt Vionnet Olivier HES SO Valais juin 2008 151 217 TTT Hes so Wai LtEtt 20000000000000000000000000000000000000000000000000000000000000000000000000000000400e Le r sultat de la transformation lt xsl variable gt Cet l ment permet de stocker un contenu Pour r cup rer la valeur 1l faut utiliser le nom de la variable pr c d du signe lt xsl variable name E valeurVarl Ee lte Ee KEE gt 13 6 8 2 XPath Il existe 2 moyens de d terminer d
76. id 2 nameMember fromPowerUnit watis Powers id 3 nameMember tofowerUnit kilowatts i Double id 4 nameMember 0 001 6 2 5 Speed em f j eeeeeeceeoeseee ees eee ee eeeceeeeeeeeeeeeeeeseeeeseeseeeeeeeeeeeeeee ese eee eeeeeeeee ee eee ee 6 6 Hes so WALLIS seececceccocccoccocccoccecococccoccococococeocecoceccococccccoccecccococosceoccoceooe R sultat g n ration wizard G n ration de l application r ussie Utilisation de l application r ussie ChangePowerUnit Input Double id 1 nameMember PowerValue Powers id 2 nameMember framPowerUnit watts Powers id 3 nameMember toPowerLnit kilowatts Output Double id 4 nameMember 0 001 Convertir une valeur dans une autre unit de vitesse Source http www webservicex net WCE ServiceDetails aspx SID 70 WSDL http www webservicex net ConvertSpeed asmx wsdi Exemple Convertir 1 m tre seconde metersPersecond en centim tre seconde centimetersPersecond R sultat attendu 100 Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne Converts peed Input Double id 1 nameMember speed SpeedUnit id 2 nameMember FromUnit metersPersecond SpeedUnit id 3 nameMember ToUnit centimetersPersecand Double id 4 nameMember 100 lt a e Q lt ai an a es
77. jours 24 hr 47 hr 5 5 jours 20 hr 24 hr 19 hr 1 5 hr 29 69 jours 11 5 hr 9 5 jours 106 217 Lun 28 01 08 Lun 28 01 08 Lun 28 01 08 Lun 28 01 08 Mar 29 01 08 Mer 30 01 08 Mer 30 01 08 Ven 01 02 08 Sam 02 02 08 Dim 03 02 08 Dim 03 02 08 Ven 15 02 08 Ven 22 02 08 Ven 22 02 08 Dim 24 02 08 Dim 02 03 08 Lun 10 03 08 Mar 11 03 08 Mar 11 03 08 Jeu 13 03 08 Lun 28 01 08 Lun 28 01 08 Mar 29 01 08 Mar 29 01 08 Mar 29 01 08 Dim 03 02 08 Mer 30 01 08 Sam 02 02 08 Dim 03 02 08 Mer 20 02 08 Dim 10 02 08 Mer 20 02 08 Dim 02 03 08 Dim 24 02 08 Dim 02 03 08 Sam 08 03 08 Lun 10 03 08 Sam 10 05 08 Mer 12 03 08 Sam 29 03 08 16 hr 10 hr 20 hr 8 hr 12 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 0 hr 78 hr 24 hr 24 hr 0 hr 0 hr 0 hr 0 hr 0 hr 2 hr 6 hr 4 hr 3 hr 1 hr 23 hr 4 hr 12 hr 7 hr 71 hr 24 hr 47 hr 44 hr 20 hr 24 hr 19 hr 0 hr 237 5 hr 11 5 hr 76 hr Hes so Wiis WALLIS 1 10 2 1 1 10 2 2 1 10 2 3 1 10 3 1 10 4 1 10 5 1 10 6 1 10 6 1 1 10 6 2 1 10 6 3 1 10 7 1 10 8 1 10 9 1 10 9 1 1 10 9 2 1 10 10 1 10 10 1 1 11 1 12 1 13 1 14 1 15 pseudo code trace Coder le pseudo code Debug et essais Wizard identifier les l ments a rendre param trable Gestion des tests exploration de nunit Expression essayer et regarder comment sont faits les l ments grid Web services sur le web tests
78. l objet est mis dans un nouvel objet du m me type et 1l sera trait par une autre partie du template lors d un nouveau passage Pour le cas des tableaux de types personnalis s une fois que le traitement rentre l int rieur 1l n en ressort plus pour les n uds enfants A l int rieur un for each s occupe de traiter les n uds enfants et utilise des xsl 1f pour appliquer le bon traitement effectuer suivant le type rencontr A noter qu chaque fois qu un tableau de types personnalis s il y a la cr ation d une liste pour pouvoir ensuite parcourir avec une boucle for le contenu du tableau au niveau du code C 3 7 5 2 Test ObjectClass cs xsit Ce fichier de transformation s occupe de cr er la classe qui contiendra les diff rents appels aux op rations du web service pour la g n ration des tests NUnit e Template match classe Ce template crit le client pour utiliser le web service e Template match classe operation Ce template crit une m thode pour acc der a une op ration du web service Ce template est r p t jusqu ce que toutes les op rations soient trait es e Template name returnTypeOutput Ce template est appel pour chaque m thode afin d y mettre le type que doit retourner la methode e Template name inputTypeFunctionParam Ce template s occupe d crire les param tres que la m thode attend et qui sont en fait les param tres utiliser pour l op ration du web service
79. le cspro Vionnet Olivier HES SO Valais juin 2008 30 217 I VALAIS ceecccccccccccccccc cece tee eee eee 6666600666666000066660000000 0 5 HeS SO wails GE 7 Transformation XSLT des fichiers Test ObjectClass Test UnitObjectClass et du cspro Effacer le contenu du statusBarltem de la fen tre TestWindow 9 Appel de la m thode saisieDesTests qui r initialise le contenu de la fen tre et affiche le contenu des 2 classes C pour les tests 10 La fen tre est pr te pour que l utilisateur saisisse les tests NUnits qui souhaite faire 11 L v nement du bouton s occupe de sauver les modifications faites dans pour les tests le fichier Test UnitObjectClass 12 Le backgroundWorker s occupe d appeler la m thode generateltForTest2 13 G n ration de l application 14 Sil y a eu une erreur apr s la g n ration le traitement s arr te et un message informe l utilisateur dans la fen tre principale Dans le cas contraire les tests sont ex cut s avec NUnit Une fois finie la fen tre de r sultat est affich e l utilisateur SS 5 Exemples de fichiers generes 5 1 Generation automatique Le web service WCFCalculator contient 4 op rations add addition div division mult multiplication et soustr soustraction Chaque op ration a en param tre 2 nombres de type Double et renvoie le r sultat galement de type Double 5 1 1 Window1 xaml amp xaml cs On trouve dans le dossier de g n ratio
80. les donn es pour tout le contenu du GroupBox Input et d appuyer sur le bouton G n rer pour obtenir soit le r sultat soit un message d erreur dans la partie du bas en blanc de l application 7 2 2 WCFPersonne Le d roulement pour g n rer le client de mani re automatique est identique WCFCalculator Vionnet Olivier HES SO Valais juin 2008 11217 TTT DR Hes S0 waius sSSsssssscssssssssssssssssssssssssessssssssssssssssssssssssssssssssssssssssssssssss eeeeeeoceeeeec ee eee eceeeeceeeeeceeeeeeee ese eeee eee eeeeeeseeeeeeeeeeeeeeeeeeeeeeseeeee ee 6 Le client g n r est le suivant _geiPersonne getArrayPersonne EE Int32 id 29 nameMember Age et Wees Int32 id 20 nameMember Age Genre id 30 nameMember Genre Genre id 21 nameMember Genre isd String id 31 nameMember Nom String id 22 nameMember Nom ee fe String id 32 nameMember Prenom String id 23 nameMember Prenom Output Obj Personnel Obj Ami Boolean id 34 nameMember 4miDenfances Obj Ami Boolean id 25 nameMember AmiDentance EEN rr String id 35 nameMember Nom String id 26 nameMember Nom ll EC String id 36 nameMember Prenom String id 27 nameMember Prenom lt eS Output La premi re chose qu il faut remarquer la partie input est identique la partie output ce qui est normal A l int rie
81. liste des usings namespace WCFPersonne userControls PuCl Te Partial e Ee Ce Vas NUS Comero il d EE e d Initialize oOmponrenti i Pubic Siri Sei Value String returnValue returnvValue a gt ETUI VEILS a USC MSC BORMES TENTE 0 Os ISClnsckecl ar IPSC Ve lWS a UVUSCNSC Eo Sess 0 le Etat az EE a VOC MSC cork Seisie 0 4 S ar returmValue TrelurnValues substring 0 returnvyalue Length 2 repurny alkie e Vionnet Olivier HES SO Valais juin 2008 43 217 Hes so VALAIS EE WW OOSSHONSHSONSDDS ORE RE EE SE OS EE EE RS Te Et returnValue M returnvValue gt Sule VEINS a WC REC Box Seles I 0 lsClveel scl R CENTS RUE ONE CROSS Nr Chicc hoc M LANIE Mes LOC a is lent ME CMACREC EE tui ea EE MCE ETES Eelere ROC eM Ve Iie t UWCCINSC lt cox Seles Il 4 WSC mac e 49 returnValue returnValue Substring 0 returnValue Length 2 returnVvalue WIW return returnValue public void cleanUGValue HE EE Il n y a qu une m thode pr sente qui sert r cup rer le contenu des diff rents contr les pr sents Le code a t g n r gr ce la transformation XSLT suivant ce que l utilisateur a saisi comme taille pour les diff rents tableaux 5 2 2 2 Output UC Genre O id12 ENU S xaml cs La diff rence entre un UserControl pour l input et l ouput r side dans le fait que pour output on ne conna t pas ce q
82. matique WSCF Web Services Contract First cr par la soci t thinktecture Ce plugin est destin tre int gr dans Visual Studio 2005 un ex cutable est galement disponible et permet de r aliser les op rations suivantes en suivant des wizards e G n rer le WSDL partir des d finitions metadata pour les donn es messages et les interfaces e G n rer le code C ou VB Net c t serveur e G n rer le code c t client Afin d avoir une meilleure id e de quoi est capable ce plugin j ai effectu un petit test avec un webservice que j avais cr pour un test ReservationService Vionnet Olivier HES SO Valais juin 2008 111 217 Hes so Vionnet Olivier HES SO Valais juin 2008 WA SE RAILS EISELE ISESE seins sels ss Program E Disponibilite E Class Class i Methods El Fields EL Main aP chambre_numero lt ae code B of personne_nombre SS EE l d 3 SCH oi prix ReseryationContractT ype E Class El Properties Sr Chambre_numero Methods ct Code av ReservationContract Reserver my Personne_nombre E E Prix i Methods ReservationContract E e Disponibilite Interface i Methods si ererer i F J ai cr un nouveau projet C Windows Application WPF sinon il n y aura pas d initialisation de la fen tre Windows nomm Test thinktecture et j a1 lanc la g n ration du client par le WSDL Solution Explorer Test_thinkt cture Si Re P Solutio
83. ment parent et le bord gauche de l l ment contenant l attribut Margin 2 distance entre le haut de l l ment parent et le haut de l l ment contenant l attribut Margin 3 distance entre le bord droite de l l ment parent et le bord droite de l l ment contenant l attribut Margin 4 distance entre le bas de l l ment parent et le bas de l l ment contenant l attribut Margin Exemple avec un StackPanel avec les propri t s suivantes de Margin Maroin 0 0 0 0 Margin 20 30 40 120 lt StackPanel Name stackPanell Margin 0 0 07 0 lt Label Height 23 Name label1 Width 120 VerticalAlignment Top gt babel lt abe l gt lt Button Height 23 Name buttonl Wicthi 7s PUCE On Button lt StackPanel Name stackPanell Margin 2 0 307407 20 lt Label Height 23 Name labell Width 120 VerticalAlignment Top gt E lt Button Herght 237 Name button1 Widths oS Button Button Vionnet Olivier HES SO Valais juin 2008 132 217 TTT CR A RER EEE EEE 20000000000000000000C0OCCC0COCCOCOCLOLOCOOCRCOCCCOLOLOCCL0C00000000000000000000000000000000e lt TextBox Height 21 lt TextBox Height 21 Name textBoxl Width 120 Name textBoxl Width 120 Ttext Texpeex gt Pest lexEeBox U lt Seackrance gt lt StackPanel gt Lorsqu on modifie la taille de la fen tre lors de l ex cution le contenu se d place toujours mais pren
84. mente un jeu de port types lt wsdl definitions name HelloWorldContractT ype target Namespace http tempur org lt wedlitypes lt Avedl types lt wedlimessage name Hello World lontract_ Hello World Inputlvlessage gt lt Aved messagze gt lt wedl message name Hello World Contract Hello World Outputllessage lt Avsedl message gt lt wedl message name Helo World Contract WhyHello Inputlvlessage gt lt Avedlimessage gt lt wedl message name Hello WorldContract_MWIyHelo Outputlvlessage gt lt Avedl message lt wsdl poriType name Helo WorldContract lt Avedl portlype lt wsdl binding name BasicHttpBinding HeloWordContract type trs Hello WorldContract gt Aved binding gt lt wsdl service name HeloWordContractT ype gt lt Avsdl service gt lt fAwedl definitions Vionnet Olivier HES SO Valais juin 2008 122 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEEE 2000000000000000000000000000000000000000000000000000000000000000000000000000000004e Hf VALAIS 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e Hes So WALLIS eeeeeoecea eo Ceeeeecee eee e eee eeeoe eee e eee e eee eee eee eee eeeeeeeeeees ee eee eeeeeeeeeeeeee eee ee 6 bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEEEEEEEEEAEEEUEEEAKEEEEEEEEEEEEEUEEEEEIEEEEEEEEEEEEEEETIERT Pour mieux comprendre prenons le cas d un web service qui expose 2 fonctionnalit s st
85. mes pour g n rer l ex cutable final qui utilise le code de MyProgram cs pour utiliser les m thodes du web service et faire en sorte qu il fonctionne lorsqu il est utilis MyProgram cs est g n r avec un StreamWriter chaque ligne est mise en utilisant un WriteLine Ca va tr s bien pour un test mais a va vite devenir un probl me pour crire de fa on dynamique les l ments de code et le fichier XAML Trouver un Vionnet Olivier HES SO Valais juin 2008 30h Description de la solution si trouv e Beschreibung der L sung wenn gefunden En ajoutant dans un projet C le fichier du proxy g n r J ai pu acc der aux m thodes expos es Ce qui m a amen penser que pour faire ceci en runtime il fallait juste trouver le moyen d int grer le proxy et c est pourquoi j ai fait une dll avec le proxy pour pouvoir utiliser Finalement opt pour un fichier settings A noter qu il faut mettre pour chaque entr e le scope en User sinon impossible de sauver un changement de valeur pour une entr e La g n ration a t trouv e apr s plusieurs tests Le probl me du plantage lors de l utilisation la galement trouv apr s pas mal d essais Je pensai que la dll tait incluse dans l exe Et non il faut qu elle soit dans le m me dossier que l exe L utilisation du fichier de configuration config Pour que l exe l utilise il faut qu il porte le nom de l exe
86. n ration Mon avis Bien que l utilisation de WSCF est s duisante et permettrait d avancer plus rapidement dans mon travail de dipl me je n y suis pas tr s favorable Vionnet Olivier HES SO Valais juin 2008 114 217 wu GE WE GE Hes so VALAIS WALLIS eeeeaee eee seeeceeee se eeeeeeeeeeeeeeeceeeese eee eeceeeese eeeeeeeceeeeeeeeeeeeseeeeeeeeceseseeeeee eeeeecee ee ecoeeeceeeeeeeeeeeeeeeceee eae eeseeeeeeeeceeeeeeeeee 0000000000000e 00000000e h A EE ab A AE EEEEEEEEKEKEAEEEAEEEEEAEEAKEEEAEEEEKEEEKEAKEEAEEKEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAKEER ab A EEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEKEEEEEAEKEEKEAEEEEEEEEEEEEEIEEEEEEEEEEEEEEEEEEEEEEEER 20000000000000000000v0e 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e Ne pas l utiliser permet de rester libre sur le futur de l application et de ce que l on veut en faire une fois le travail termin Ensuite vient le probl me de la r utilisation des l ments fournis par WSCF dans un projet final Il serait bien que l on puisse facilement r cup rer les portions de code ou l entier du code afin de pouvoir les int grer dans une autre application que celle g n r e Or il y a des r f rences sp ciales qui sont faites pour WSCF afin de pouvoir communiquer avec le WSDL entre autres Cela voudrait dire qu il faudra galement int grer au projet final ces r f rences ce qui n est peut tre pas la meilleure solution Cette soluti
87. n ration 2 g n rations sans fermer l application e Chaque g n ration doit tre mise dans un dossier s par il y aura toujours le dossier de sortie standard dans lequel je vais crire le nouveau dossier et mettre tous les fichiers e Configuration de l application avec un fichier externe pouvoir charger un fichier qui va s occuper de modifier le contenu de la fen tre de configuration e Fichier log de g n ration doit pouvoir r cup rer les messages d erreur qui surviennent lors de la g n ration de l application outils de g n ration tels que svcutil msbuild Vionnet Olivier HES SO Valais juin 2008 169 217 Cat IESEL Hes so WALLIS rend pnt EE E E EE EE sy e Systeme de test de web service donner l utilisateur un fichier contenant la structure permettant de rentrer des donn es a injecter ensuite dans le web service et crire le r sultat S ance avec Michael Schumacher Total 47h Probl mes rencontr s Solutions trouv es Probleme Losungen Description du probl me Description de la solution si trouv e Beschreibung des Problems Beschreibung der L sung wenn gefunden WS Dual http bindings duplex La g n ration du Laiss de c t ce cas je g re les 3 types les plus code pour ce binding ne fonctionne pas La structure courant de binding pour ce qui est de la g n ration du code est diff rente par rapport au binding automatique standard l envoi des infor
88. nombre de cartons jaunes et rouges le score et le r sultat Objet tBetHint Information sur les pronostiques Contient le nombre de personnes qui ont mis un pronostic sur la victoire d faite ou match nulle la moyenne de carte jaune et rouge Vionnet Olivier HES SO Valais juin 2008 66 217 oe TTT 5 He S SO wails HR ARR qu aura ce match et le total des gens qui ont pronostiqu Au lancement de l application l affichage est le suivant j tGameCard BetHints Alisames u DateTime id 22 nameMember dtCard Input Output E Obj tGamesBetHints String id 23 nameMember sPlayerName Obj tGamesinfo Int32 id 3 nameMember ild Ee Oo E Boolean id 24 namettember bYellowCard String id 4 nameMember sDescription sid Boolean id 25 nameMember bRedCard DateTime id 5 nameMember dPlayDate Obj tGoal Ir DateTime id 27 nameMember dtGoal DateTime id 6 nameMember tPlayTime Ir String id 28 nameMember sPlayerName String id 8 nameMember sStaciumName Obj tBetHint Int32 id 30 nameMember iWins Int32 id 9 nameMember iSeatsCapacity O oo Int32 id 31 nameMember iLooses String id 10 nameMember sCityName fF fa Int32 id 32 nameMember iDraw String id 12 nameMember sName Decimal id 33 nameMember nAverageyellowCards String id 13 nameMember sCountryFlag Decimal id 34 nameMember nAv
89. notre cas SOAP HTTP Soap operation indique la connexion une op ration L attribut soapAction indique le type de header pour identifier le service HTTP L attribut de style indique de fa on g n rale le format des messages SOAP Dans notre cas document sp cifie que les demandes et les r ponses seront des documents XML Soap body indique comment les parties logiques d un message apparaissent dans l l ment soap body L attribut use indique si les parties du message sont cod es avec des r gles d encodage comme valeur encoded et l attribut encodingStyle doit tre sp cifi ou s il d finit le sch ma concret du message dans ce cas la valeur sera literal lt wedl binding name BasicHtipBinding HelloWorldContract type tns Hello World ontract gt soap binding transport http lschemas 2onlsoap orgscap ittp gt lt wsdl operation name Hello Word lt soap operation soap Achon http ternpur ore Hello World lontract Hello World style docment gt lt wsdl input lt soap hody use literal rs lt hwedl input lt wsdl outpui lt soap hody use hteral gt lt hwedloutpui lt hwsdl operation lt wsdl operation name lil Hells gt lt soap operation soap cton http litermpun ors Hello World ontractl Hello style document gt lt wsdl inpui lt soap hody use literal gt lt hwedl input lt wsdl output lt soap hody use hteral gt lt hwedl ouip
90. partie g n ration automatique Pas une tr s bonne id e car a me fait maintenant 2 endroits diff rents modifier lorsque je d couvre des bugs de g n ration mais en contre partie a permet d avoir quelque chose montrer sur comment je compte faire les tests G n ration automatique D couverte de 2 probl mes qui sont en plus ou moins corrig s Tableau de type costum En testant le web service CDYNE http ws cdyne com SpellChecker check asmx j ai constat que mon application ne traite pas les tableaux de type costum Apr s pas mal d essais a fonctionne pour les cas o le tableau est en sortie en param tres d entr e pas encapsul dans une classe C est assez difficile de faire les modifications dans les templates xslt par rapport aux diff rents l ments qu il faut traiter Je ne sais pas Si j arriverai traiter les cas imbriqu s un tableau dans un tableau par exemple de mani re r cursive sans que a g n re d autres erreurs 173 217 em Si j arrive trouver une solution qui fonctionne il faudra encore faire les modifications dans la partie test Probl me de binding Il peut y avoir plusieurs fa ons d utiliser un web service binding Jusqu a pr sent je n avais qu un moyen d fini dans le fichier de configuration Avec le web service CDYNE il y en a 3 diff rents ce qui pose quelques probl mes lorsque j utilise l application g n r e il y a une erre
91. pass du temps chercher comment r soudre des probl mes courants tels que le fait de ne pas avoir une application qui reste fig e lors d un long traitement Ce manque d exp rience a galement affect l architecture et de l ergonomie de l application notamment pour la partie wizard qui n est pas assez intuitive et efficace De plus je n ai pas assez pens a l utilisateur final l exemple tant l utilisation de TextBoxs pour l dition du code Si le travail tait refaire je m y prendrai diff remment Je commencerai comme je Ia fait par tudier le XAML et le XSLT en faisant des tests puis tudier et comprendre le fonctionnement des web services Je prendrai plus de temps sur ce que l on peut faire comme traitement et ainsi viter d arriver vers la fin du projet et de remarquer qu un cas de figure comme les web services avec tat ne soit pas support Ensuite je ferai une recherche exhaustive des web services se trouvant sur le web Cela permettrait d viter de d couvrir tardivement des types de donn es et de devoir tenter des les int grer aux templates d j existants Cr er des web services pour tester plus facilement les diff rents types et structures de donn es possibles et r fl chir plus en d tail sur la fa on de cr er ces web services pour pouvoir tester plus facilement l application charger chaque fois un web service le tester et passer au suivant prenant beaucoup de temp
92. poser un l ment Image dans la fen tre de design et dans l attribut Source dans la fen tre de propri t s lectionner l image appliquer lt WrapPanel Name wrapPanell gt SEENEN SUN lt WrapPanel gt 13 6 6 2 Border L l ment Border permet de mettre une bordure autour d un autre contr le par exemple un bouton Ce bouton est mis entre les balises d ouverture et de fermeture de l l ment Border Il ne peut contenir qu un enfant donc pas possible de mettre 2 boutons dans un Border Pour contourner cette limitation il suffit de mettre un Layout dans le Border et ce Layout pourra contenir autant d enfants que n cessaire lt WrapPanel Name wrapPanell gt lt Border Height 100 Name border1 Width 200 Background Aquamarine gt lt Canvas Height 100 Name canvasl Width 200 gt lt Button Canvas Left 36 Canvas Top 19 Height 23 Name buttonl hr 7S Button Burton lt Button Canvas Left 92 Canvas Top 71 Height 23 Name button2 Wadth 75 Bukton lt Eeer lt Canvas gt lt Border gt lt WrapPanel gt Vionnet Olivier HES SO Valais juin 2008 145 217 ee em ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEIEUEEEIEEEEEEEEEEIEUEEEIEEEEEERE eg NALAIS 66006006005b666006665056060046060056000666066066606006606606668606000606666660606060066 ee Hes so WALLIS 0 9 9 9 8 0 8 8 9 8 9 9 8 9 8 9 8 8 9 9 9 9 8 8 8 9 9 8 8 9
93. pour chaque fichier il y a un fichier xml qui ne contient qu un n ud root et un fichier XSLT qui contient en dur le code XAML ou C L objectif est de pouvoir transformer chacun de ses fichiers et de voir s il y a des probl mes dans le XSLT puis faire la main un msbuild Prochaine tape e Modifier chaque fichier XSLT pour pouvoir g n rer du code selon le fichier XML contenant les donn es avec les informations provenant du web service de la calculatrice e G n rer pour chaque op ration un cran tabcontrol contenant pour chaque param tre d entr e et le param tre de sortie les l ments XAML un label et un textbox et un bouton pour lancer une action e Modifier le fichier XSLT qui contient le code source pour utiliser la fen tre et r aliser l action concat ner du texte et l afficher e Modifications pour pouvoir interagir avec le web service mettre le proxy Vionnet Olivier HES SO Valais juin 2008 165 217 ee em ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE WM EE ze Hee Co TT ESS ET PS RQ e e EE et modifier le code d action e Se pencher sur les l ments devant tre dynamique et mettre en place une fen tre permettant de configurer de fa on basique l application parent chemins d acc s aux outils et enfants nom namespace de la nouvelle application e Se pencher sur le fichier csproj indispensable msbuild pour g n r
94. puis faire une r paration http 207 46 236 188 MSDN ShowPost aspx PostID 249 1702 amp SiteID 1 e D sinstaller AddOn Studio for WOW qui demande une version RTM de VS 2008 Les versions RTM et beta sont incompatibles et refaire une r paration de la beta http www codeplex com WarcraftAddOnStudio WorkItem View aspx W orkItemId 724 Ces 2 solutions n ayant pas r solu le probleme a d sinstall tout ce qui tait en version beta framework Visual Studio MSDN library et install la version finale de Visual Studio 2008 Finalement la cr ation de nouveaux projets a fonctionn mais un autre probleme est survenu impossible de faire un drag amp drop depuis la toolbox Impossible galement de compiler sans obtenir dans la fen tre de design le message d erreur suivant Vionnet Olivier HES SO Valais juin 2008 108 217 6 eeeegeeegegeeeegeeeeeeeeeeeeeeeeeeegeeeeeegeegeeegeeeeegpeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee es NALAIS EE ee Hes so WALLIS aeeeeegeeeeegeeeg eeeegeeee ee ERR 0000000080000000000000000000000 mi paee p bh A EEEEEEEEEEEEEEEEEEEEEEEEEEEKEEAEEEEEEEEAKEEEEEEEEEEEEEEEEEEEUEEEEIIEEEIEEEEEEEEEEEEER La solution a t trouv e sur le forum MSDN http forums microsoft com MSDN ShowPost aspx PostID 2633726 amp SiteID 1 e Sortir de Visual Studio e Se rendre dans le r pertoire USERPROFILE AppData Local Microsoft VisualStudio 9 0 e Effacer tous les fichiers portants l extension TBD par
95. quel que soit le type Si c est un objet qu il faut passer en param tre J cris tel quel l objet Pour chaque param tre le type et le nom est crit e Template name inputTypeWSParam M me op ration que inputTypeFunctionParam la diff rence que ce template est juste utilis pour poser les param tres de l op ration dans son appel 3 7 5 3 Test _UnitObjectClass cs xsit Vionnet Olivier HES SO Valais juin 2008 25 217 Vionnet Olivier HES SO Valais juin 2008 W VALAIS SCSSSOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSCESESEECSSESOSSEESSESEEO Hee Co WALLIS rena pent EE E E bb de di Sede dp Sethe dy EE 20000000000000000000000000000000000000000000000e 200000000000000000000000000000000e Ce fichier de transformation s occupe de cr er la classe qui contiendra les diff rents tests unitaires que l utilisateur pourra saisir Au niveau des templates le template match nunitObjectClassAssembly ajoute les assemblies n cessaires et le template match namespace permet de sp cifier le nom du namespace utilise ainsi que le nom de la classe de tests 4 Sequence des traitements de l application 4 1 R cup ration des informations provenant du WSDL Window1 CommonGener SVCTool DLLTool My Tool ation 1 generatelt 2 createGenerationFolderName 3 proxyAndConfigGeneration 4 ReportProgress 5 ReportProgress 6 p
96. rations de statistiques Source http www webservicex net WCE ServiceDetails aspx SID 1 1 WSDL http www webservicex net Statistics asmx wsdl Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne Probleme de g n ration du fichier XAML pour l interface utilisateur Le nom de certains types contiennent amp amp Double amp amp au lieu de Double Ca donne comme r sultat que la construction des GroupBoxs s effectue mal Le type devrait tre connu mais comme il y a amp amp la fin il est consid r comme n tant pas un type standard et cela entraine la cr ation de GroupBox alors que a ne devrait tre qu uniquement un userControl et ces GroupBoxs en plus ne sont jamais referm s ce qui donne une erreur lors de la g n ration avec msbuild A noter que sous Visual Studio lors de la creation d un client manuellement lors de l ajout de la r f rence il n arrive pas a ajouter la r f rence du service ce qui est normal vu le probl me R sultat g n ration automatique G n ration de l application chec Utilisation de l application chec 6 2 8 Mortgage Web service Combien une hypoth que co te par mois Source http www webservicex net WCF ServiceDetails aspx SID 13 WSDL http www webservicex net mortgage asmx wsdi Exemple Un pr t de 10 000 pour une dur e de 5 ans un taux de 4 5 avec une taxe annuelle de 250
97. simples une nouvelle fen tre et j affiche le code des 2 fichiers Je rajoute des champs de saisie suppl mentaire la taille du tableau par exemple L utilisateur rentre les informations valide et l application va s occuper de refaire une transformation pour impl menter le code n cessaire pour arriver au final dans le fichier XAML avoir le bon nombre de contr les et dans le fichier CS le code pour traiter les saisies et les m thodes pour interroger l UserControl L utilisateur peut galement directement modifier les fichiers en supprimant le code XSLT et en modifiant les codes pour arriver au m me r sultat 24h Vionnet Olivier HES SO Valais juin 2008 196 217 WEE EE VALAIS WALLIS Hes so ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEEEIEEEEEERE 0000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e eeeeeeeae oe eeeecee ee eee eeeeeee eee eee e eee eee e eee eeeeeeeeeeseee ee eee eeee eee eeeeeeee eee 6 6 bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEKEEEEEEEEAEEUEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David 27 2 05 2008 8 05 2008 Semaine Woche D compte des heures hebdomadaires Deklaration Wochenstunden Tache A
98. structure d un document WSDL Cr ation d un client consommant un web service Recherche sur les outils permettant de r cup rer les informations d un web service XAML apprentissage des diff rents l ments qui le constituent de loin pas fini Divers Diverses Je pensai que l apprentissage de XAML irait tr s vite mais ce n est pas le cas Ca prend pas mal de temps de lire la documentation et de comprendre et de coder des exemples pour illustrer les diff rentes fonctionnalit s Vionnet Olivier HES SO Valais juin 2008 160 217 TTT DR Hes so WALLIS Sssssssssssssssssssssssssssssssesssssssesssscssssssssossossessssssssssssssssssssoss kb A EKEEEEKEEEEKEEEEEEEEEEEEEEEEAKEEEEEEEEEEEEEEEEEEEEEEEEEEEEUEEEEEEEEEEEEEEEETEEEEERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 38 13 Woche 23 01 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Continu et termin la recherche sur les diff rents l ments de XAML 42h Continu et termin la recherche sur les web services et le WSDL Documentation sur les diff rentes recherches et modification du fichier Probl mes rencontr s Solutions trouv es Probleme Losungen Description du Description de la solution si trouv e probleme Beschreibung der L sung wenn gefunden Beschreibung des Problems
99. tait pr voir qu il y aurait un probl me informatique c est chose faite Bloc d alimentation grill ventilateur de la carte graphique out et en r paration Cela aurait pu tre pire je croise les doigts pour que ce soit les seuls probl mes de ce type rencontr s durant ce projet Planning pr vu pour la semaine prochaine e Modification de l utilisation des UserControls J ai d j commenc regarder le code pour voir comment je vais changer la cr ation des UserControls pour avoir un UC par type et par input ouput pour la g n ration automatique au final a ne fera pas de diff rence dans l utilisation mais a sera d j un probl me plus ou moins r solu Vionnet Olivier HES SO Valais juin 2008 184 217 Hes so Total VALAIS EE WALLIS SeSSSOSERSORSOLSRSE IRAN EKESY DSSES RECS AE LS SS SE ET CONES WORSE Een Ed Reese SEE ORS lorsque j attaquerai la partie Wizard Il semblerait que ce soit plus simple modifier que ce que je pensai en planifiant A suivre Temps estim 12h Cr ation de 1 ou 2 exemples concrets de web service par rapport a l informatique de gestion afin de mieux pouvoir expliquer le fonctionnement du client g n r et tre moins abstrait que les services WCF de test que j ai d velopp Je pense faire un service simple de gestion de vente de livres avec une petite base de donn es contenant les tables Article Client commande et d tail de commande Pour
100. tbl 1 v th 1 0 a lgl 1 1 C th 1 0 ae 1 2 tbl 1 1 tbl 1 3 e ae w tb 1 4 tbl 1 31 String id 17 nameMember Nom tbl 1 4 ws_Mousenws_ Goofy we Le chienk ws Duck ws Duck ws_ I String id 8 nameMember Nom String id 18 nameMember Prenom en kr H Ducks Duck Duck Trouvetou Picsou fws Minnie sws Dinoo wes Plutok ws Din we P we Loulou String id 9 nameMember Prenom o Pluto Riri Fifi Loulou G o Balthazar Le traitement effectu par le web service est le suivant l ge retourn est n gatif tous les champs de type string sont pr fix s avec ws_ Le Genre est mis inconnu et les Booleans AmiDenfance sont invers s On constate que l application a mis le bon nombre de ComboBoxs pour le champ Genre ainsi que le bon nombre de CheckBoxs pour chaque entr e du tableau de Personnes 7 4 G n ration test NUnit Si l on souhaite tester une plus grande quantit de donn es sans devoir chaque fois devoir les rentrer depuis l interface graphique 1l faut prendre le choix Test Vionnet Olivier HES SO Valais juin 2008 89 217 d VALAIS SE Hes sO OR EE CHE o G n ration Options Automatique Wizard Rapport d erreur 7 4 1 WCFCalculator Apr s avoir lanc la g n ration des tests la premi re tape consiste pour l utilisateur de choisir quels op rations il souhaite tester B Choix des op rations a test
101. tec he Prenom vertico e re moo Wid i oE EE VerticalAlignment Top HorizontalAlignment Left Width 120 gt lt TEextBox Heirghti 23 HorizontalAlvgnment Raght Margin 0 79 0 0 Name rert BO genre VerticalAli gumene lop Widen 120 E lt Label Height 28 HorizontalAlignment Left Margin 0 0 0 74 Name label5 VerticalAlignment Bottom Width 120 gt Nom WS lt Label gt lt Label Height 28 HorizontalAlignment Right Margin 0 0 0 74 Name label7 VerticalAlignment Bottom Width 120 gt Pr nom WS lt Label gt lt Label Height 28 HorizontalAlignment Left Margin 0 0 0 23 Name label6 VerticalAlignment Bottom Width 120 gt Age WS lt Label gt lt Label Herght 2Z8 HorizontalAlionmenrt Right Margin 0O 0 0 23 Name label8 VerticalAlignment Bottom Width 120 gt Genre WS lt Label gt lt TExtBox Height 2 HorazontalAliagnment Lert Margqrun 0 0 0 51 Name ro moms VerticalAlignmentr Botrem Widrh 120 7 lt TextBox Height 22 HorizontalAlignment Right Margin 0 0 0 51 Name textBox prenomWS VerticalAlignment Bottom Width 120 gt EE ER nee Lene alae exe sone es VerticalAlignment Bottom Width 120 gt EE Ernie LS EE EE og ee E EE E VerticalAlignment Bottom Width 120 gt lt Bubeon Margin EE Cm Civek Vhietonl eilwek Seare BUTON E lt Window gt Windowl xaml cs using oy tem using System Collections Generic Vionnet Olivier H
102. template inserElement pour ajouter un UserControl puis fait un apply templates pour rechercher d autres param tres et finalement regarde si c tait le dernier l ment et si ce n est pas le petit fils du n ud input pour refermer le StackPanel et le GroupBox Template name insertElement C est dans ce template que les UserControls sont crits en se basant sur le type pour choisir quel UserControl doit tre mis Le choix est affin Vionnet Olivier HES SO Valais juin 2008 21 217 eeeeaeeeeoeseeeeeeeeeeeeeeeeeeeeeseeceeeeseeeeeeeeceeeeeeeeeeeeee ee eeeeeeseeeeeeeeeseseeeeee D e GC h A EE ab A AE EEEEEEEEKEKEAEEEAEEEEEAEEAKEEEAEEEEKEEEKEAKEEAEEKEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAKEER ab A EEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEKEEEEEAEKEEKEAEEEEEEEEEEEEEIEEEEEEEEEEEEEEEEEEEEEEEER bh A KEE bh A EKEEEEEEEEEKEA 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e Hes so VALAIS WALLIS eeeeaee eee seeeeeeee eee eeeeeeeeeeseeceeeese eee eeceeceeeeeeeeeeeeeeeeeeeeeeseeeeeeeeceseseeeeee eeeeecee ee ecoeeeceeeeeeeeeeeeeeeceee eae eeseeeeeeeeceeeeeeeeee 0000000000000e 00000000e h A EE ab A AE EEEEEEEEKEKEAEEEAEEEEEAEEAKEEEAEEEEKEEEKEAKEEAEEKEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAKEER ab A EEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEKEEEEEAEKEEKEAEEEEEEEEEEEEEIEEEEEEEEEEEEEEEEEEEEEEEER 20000000000000000000v0e 0000000e 000000000ece Kb A EAR 200000000000000000000000000000000e suivant que l UserControl mettre
103. test mettre en place le choix de l op ration tester pr parer le projet d application de test cr er une classe qui utilise le web service une m thode pour l appel et de quoi pouvoir acc der aux variables Cr er une classe de test classe vierge L utilisateur aura un grand TextBlock pour rentrer le code des tests Construction du projet de test et lancement de l application en utilisant NUnit avec la console Traiter le fichier de r sultat de NUnit pour les tests et afficher le r sultat dans un Grid creuser le datacontext pour mettre les donn es directement dans le Grid Ca fait un moment que je n ai pas retouch cette partie donc il y aura norm ment de choses impl menter Temps estim 48h A ce stade les l ments ci dessus devraient tre termin s pour d but mai Wizard Choisir la ou les op rations que l on souhaite traiter Choix de l UserControl utiliser pour chaque type diff rent entre l input et l outpu Traitement de web service avec state envoi de donn es x fois puis demande d un retour de la part du web service Temps estim le reste du temps voir Pour la prochaine s ance a d pend de comment j ai avanc J en saurai plus a la mi avril et J enverrai un mail 28h Vionnet Olivier HES SO Valais juin 2008 182 217 na GE Hes So WALLIS eeeeeeeae oe eeeecee ee eee eeeeeee eee eee e eee eee e eee eeeeeeeeeeseee ee eee eeee eee eeeeeee
104. un retour EEN EECH d TEY initialiser les l ments d output et nettoyage du contenu uc To eleanve value s Siete eyes Ce a Ier Vionnet Olivier HES SO Valais juin 2008 R cup ration des donn es saisies primitif match parametre type mode inputl EE a primitif match parametre type mode inputl Double str 2 Double Parse uc 2 JgeLUCValue Appel du WS et r cup ration du retour ENER tea EE EE WS SE ENEE ene es aoe Ih SE et Ee le recour du WS cans la fen tre 33 217 I VALAIS ceeccccccccccccc cece cette eee eee eee e eee eet eee ee eset sees eens sseeeesseeseeesee Hes so wais oeSosscsssscsssscssssssssssssssessssssssssssssossssssssssssssssssssssssssssssssssss 20000000000000000000000000000000000000000000000000000000000000000000000000000000e UCBs SE Uca lue erT catch Exception exl textBlockError Text exl Message n n cextcBlockarror text exl Source Ynni tex BlockError texte exl EE ICT se trouve les 3 autres op rations Le principe est le m me Le traitement qui doit tre r alis pour la 1 op ration addition Tout le traitement est effectu dans un try catch pour r cup rer les ventuelles erreurs qui pourraient survenir Si c est le cas le TextBlock en bas de la fen tre sera rempli La 1 tape est de nettoyer le contenu de l UserControl qui s occupe d afficher la valeur de re
105. 00000000000000000 c 200000000000000000000000ce 000000000000000ece Kb A EAR 200000000000000000000000000000000e 8 Limitation de l application 8 1 Profondeur des tableaux de type personnalis Alors que l application supporte diff rents niveaux d objets personnalis s ce n est pas le cas lorsque ces objets sont des tableaux de type personnalis Je n ai pas r ussi coder les parties de template pour ce genre de tableaux afin qu ils puissent tre appel s avec un apply template et donc supporter n importe quel niveau de profondeur J ai d cid de limiter le nombre de niveaux pouvant tre trait en n appliquant pas de template lorsque la transformation commence le traitement d un tableau de type personnalis D s que le traitement rentre dans cette partie 1l ne peut plus en sortir l int rieur les templates sont crits chaque fois pour les diff rents types et ainsi de suite pour le contenu du prochain tableau de type personnalis Le tableau ci dessous permet de voir les limites de profondeur des types d s qu un tableau personnalis nomm Custom est traite 2 eme 3 eme Current 1 niveau niveau niveau Custom Complex S yO Custom Custom Primitif Custom Custom Complexe oS Custom Custom Primitif Custom Custom Complexe oo 8 2 Web service avec tat L application ne peut g rer que des web services sans tats Un web service avec tat serai
106. 000000000000000000000000000000000000000000000000000000000000000000000000e ER Ser Ue EE SeuUOyahwe Suma hs 5 2 2 userControls Ce dossier contient tous les UserControls qui sont utilis s par l application g n r e Contrairement a la g n ration automatique chaque type a son propre UserControl Le code pour les UserControls standards avec un TextBox tant identiques ceux utilis s pour la g n ration commune je ne mv attarderai pas Par contre il est int ressant de regarder le contenu CH des UserControls sp ciaux pour ce web service 5 2 2 1 Input UC Genre I id3 ENU _ S xaml cs Cet UserControl est contenu dans un tableau de Personne qui a une taille de 2 liste des usings 4 namespace WCFPersonne userControls omen Weis a aaa ck PODC oo e UC a EE String enumStrArray Enum GetNames typeof Genre panle Gern eF Er ENUT O e ze C EE EE WKS I La premi re chose que l on remarque c est la pr sence dans le namespace d une r f rence WcfServicel Cette r f rence est importante ici car sans elle il ne serait pas possible de conna tre le type num r Genre Lors de l initialisation de l UserControl il faut appeler une m thode charg e de cr er les contr les ComboBox EG e a tor Wake EE EE ComboBoxItem cbi new ComboBoxItem Clon COMmuem enum EE ch amie UCC ON OBO E cause lem Dk reelle for NOTE r NO Tee enum Peer Ne enorme
107. 00000000000000000000000000000000000000000000000e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000000000000000000000000L000000000000000000000000000000000000000000000000000e Si l on se trouve dans le n ud qui contient la valeur reprendre le select prend comme information nn attribute Si c est la valeur d un attribut du n ud ou d faut r cup rer on utilise puis le nom de l attribut parent Cela s lectionne le p re du n ud courant 13 6 8 3 Tester des expressions XSLT offre la possibilit de tester des expressions afin de ne traiter que les n uds qui contiennent une certaine valeur La syntaxe est compos e du nom du n ud suivi de l expression entre crochet 2 exemples pour un template ou un for each node arg Cherche un node qui a un attribut arg A noter qu il est possible de prendre que les n uds qui ne contiennent pas cet attribut en utilisant le mot cl not et le test entre accolade node not arg node exemple eee Pour chaque node trouv s il contient un n ud enfant nomm exemple dont la valeur est eee le test sera vrai lt xsl template match gt lt xsl for each select node exemple eee gt lt xsl value of select id gt C est vrai lt xsl for each gt lt xsl template gt R sultat EE lt node lt node lt node lt node lt node lt node Toot 13 6 8 4 Positi
108. 00000000000000000000000000000000000000000000e CR OA ete RER RER ES EEE SE AE EE rasane rese nanesen 2000000000000000000000000000000000000000000000e 200000000000000000000000000000000e Informer l utilisateur que l application va cr er les fichiers XAML et C Cr ation du fichier de donn es XML pour utiliser par la suite les transformations XSTL Ce fichier contient les diff rents assemblies n cessaires les informations sur l objet client qui doit tre cr et toutes les op rations disponibles contenant tous les types qui seront utilis s pour r aliser l op ration Cr ation de tous les UserControls en utilisant le fichier de donn es XML cr dans l tape 2 Cr ation du fichier de donn es XML pour le fichier App point d entr e de l application g n r e Cr ation du fichier de donn es XML pour le fichier cspro La m thode createFile de l objet FileGeneration s occupe de r aliser la transformation XSLT La transformation est faite pour obtenir les fichiers finaux pour App Window et cspro La m thode statique rewrite de MyTools permet de parcourir les fichiers cr s pour convertir les caract res sp ciaux de substitution utilis s lors de la transformation Informer l utilisateur que la g n ration de l application commence Si il y a eu une erreur dans le traitement informer l utilisateur G n ration de l application Informer l utilisateur sur le r sultat de la g n ration S1 l
109. 00000000000000000000000000000000000000000006e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e DLLTool WSParameter E f WebServiceOperation Class Class Class Class El Fields El Fields El Fields El Fields de reservedkeywordsarray a classClientharnie de cscPath a classNameclient a wsName sf operationName sf finalOutputDirectory se customClassList af wsPasition aP parametersList aW returnType af generationFolderName Du FinalQutputDirectory a wsType lt Properties a infos g generationFolderName El Properties Ee ClassclientName a namespaceGenerated lient gW namespaceGenerated lient a Wishame a Operation ame at pror di operationsList EN Muerte EN ReturnType a proxy FileNane a proxyDllPath CSS weType I Methods a svcutilPath g proxyFileName e Ce a bempFolderName El Methods Methods addParameters A8 urlWebServi a convertReservedwWords rg getParameters Le WSParameter 1 overload k l Methods r getClassesServicesInformation A OperationsList 2 g proxy ndeonfig ener ation getServicesInformations w proxyCsToDIl KW A re S CTool ge dk CommonGeneration gt Window l Class Class A suc A window gt i i Fields Fi z RES appNameGeneratedClient a bw appeMLFileN
110. 000000000000000000000000000600000e 0000000000ve 000000000000000e 20000000000000000000000000000000000000000000000000006e oe MA VALAIS 2 Hes so waus RER EEE NN 000000000000 000000000000000000000000000000000000000000000e 0000000000000e 0000000e http blog paranoidferret com index php 2007 06 29 creating buttons with xaml and csharp CheckBox Overview http msdn2 microsoft com en us library ms743611 VS 85 aspx ListBox Class http msdn2 microsoft com en us library system windows controls listbox aspx ComboBox Class http msdn2 microsoft com en us library system windows controls combobox aspx RadioButton Overview Pixel Snapping in WPF Applications http msdn2 microsoft com en us library aa970908 aspx Exemple sur la propri t ClipToBounds http wpfnetfx3 com files folders code snippets entry6490 aspx Visibility Enumeration http wpfnetfx3 com files folders code snippets entry6490 aspx WPF Layout The WrapPanel http blogs vbcity com xtab archive 2007 08 07 8583 aspx Little Boxes WPF s UniformGrid http blogs vbcity com xtab archive 2007 08 02 8569 aspx XAML StaticResource Markup Extension http msdn2 microsoft com en us library ms750950 VS 90 aspx XAML DynamicResource Markup Extension http msdn2 microsoft com en us library ms748942 VS 90 aspx XAML Binding http msdn2 microsoft com en us library ms750413 VS 90 aspx Start experimenting with XAML on your XP machine in under 15 min
111. 0000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000600006000600 0006 00000000000000000000000000000000 h A EAR vk A EKEEEEEEEEEKEEA 0000000e 000000000e0e Kb A EAR 200000000000000000000000000000000e 1 apply templates select output mode outputinit Application de diff rents templates dont le but est de effacer le message d erreur s il y a eu une utilisation pr c dente de l application nettoyer le contenu des contr les de saisie dans les UserControls D clarer pour chaque type standard une variable ce sont ces variables de type String qui sont pass s la fin chaque UserControl pour afficher le r sultat de l utilisation du web service 2 apply templates select input mode input R cup ration des saisies de l utilisateur et cr ation des diff rents objets pour obtenir tous les l ments n cessaires qui seront pass s en param tres pour l utilisation de l op ration 3 Ecrire la ligne qui appelle op ration et r cup re le retour A la gauche du signe gal le template nomm outputmode2 s occupe de cr er l objet que l op ration retourne A la droite du signe gal la m thode de l op ration pour le client est appel e et les param tres passer sont trait s par le template nomm mode2 lt xsl call template name outputmode2 gt lt xsl value of select clientName gt lt xsl value of select operatio
112. 000000000000000000000e Il est galement possible mettre des contr les sp cifiques pour le ToolBar dans un ToolBarPanel qui seront affich s apr s avoir cliqu sur la fl che la fin du contr le ToolBar Il faut galement pr ciser l attribut ToolBar OverflowMode avec comme propri t Always pour que les contr les n apparaissent pas s il y a assez de place dans la fen tre pour tout afficher Dans le ToolBarPanel l attribut Orientation permet d afficher la s rie de contr le masqu de fa on horizontal ou vertical lt StackPanel gt lt ToolBar Band 1 BandIndex 1 gt Button Height 23 Name buttonl Width 25 gt A lt Button gt lt Button Height 23 Name button2 Width 25 gt B lt Button gt lt Button Height 23 Name button3 Width 25 gt C lt Button gt lt Button Height 23 Name button4 Width 25 gt D lt Button gt Button Heaght 23 Name suttons Width 25 gt E lt Buton lt Button Height 23 Name button6 Width 25 gt F lt Button gt lt ToolBarPanel Orientation Vertical ToolBar OverflowMode Always gt Button Height 23 Name button7 Width 25 gt W lt Button gt lt Button Height 23 Name button8 Width 25 gt X lt Button gt lt Button Height 23 Name button9 Width 25 gt Y lt Button gt Button Height 23 Name button10 Width 25 gt Z lt Button gt lt ToolBarPanel gt LoclBet lt StackPanel gt M Window PB Quelques attributs int ressants dans l l
113. 1 qui ne doivent pas appara tre pour le 1 L erreur provient de parce que je fais simplement un controle en utilisant contains id lt nbre gt Donc si je fais un contain 1d1 1d10 contient id1 et c est pourquoi j ai des templates qui appraissent Le probl me a t corrig en contr lant de la fa on suivante id lt nbre gt Vu que l id est toujours la fin du nom de fichier avant l extension le point Vionnet Olivier HES SO Valais juin 2008 200 217 Hes so VALAIS me permet d viter de prendre en compte 1d10 Remarque j ai galement du ajouter l option id lt nbre gt _ pour le cas ou il y a un UC sp cial a mettre il y a un underscore et du texte avant le point G n ration du proxy et config Ce n tait pas une tr s bonne id e de mettre ces 2 fichiers g n r s dans un dossier commun toutes les g n rations si le contact avec un web service choue l application va prendre le proxy et config qui s y trouve et au final a donnera un r sultat erron Ces 2 fichiers sont maintenant stock s dans le dossier temp propre a chaque g n ration Les entr es pour la cr ation et l utilisation du dossier svcutilFiles ont t supprim es Gestion des erreurs Le syst me est mal pens Lorsqu il y a une erreur grave par exemple l adresse du web service est fausse la g n ration du proxy ne se fait pas il y aura bien une entr e dans le Log des erreurs mais l application va
114. 2 2008 14 02 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Modification de tous les fichiers de g n ration de code le code est maintenant cr par rapport aux informations des fichiers XML provenant du web service Calculatrice Chaque op ration un tabitem Mise en place d une partie du fichier de configuration Le projet peut tre maintenant ex cut et g n r l application finale sans intervention manuelle mis appart la compilation du projet XAML avec msbuild Prochaine tape Le fichier csproj doit pouvoir tre g n r de fa on automatique crit en dur dans le xslt avec certains champs pouvant tre modifi par les param tres de configuration Terminer la partie configuration Pouvoir mettre les assemblies que l on souhaite utiliser puis debugger s assurer que les changements faits sont utilis s dans l application lors de la g n ration de l application finale Impl menter pour la g n ration tous les types standard Impl menter pour la g n ration les types costum par exemple une classe Personne Total 24h Probl mes rencontr s Solutions trouv es Probleme Losungen Description du probl me Description de la solution si trouv e Beschreibung des Problems Beschreibung der L sung wenn gefunden Beaucoup de temps pris pour trouver toutes les S appuyer sur les erreurs signaler par msbuild pour erreurs qui emp chent la g n
115. 2 System Web Services 2 System dm 2 Thinktecture Tools Web Services Extensions Mess Ca App Copflg GG Disponibilite cs GI TReservation ontractT ype cs Kl ReservationContractType wsdl GEI ReserverCompletedEvent rgs cs GI ReserverCompletedEventHandler cs GEI Test_thinkbecturePraxy cs Ensuite j ai cod ma fen tre d affichage et fait un simple run pour voir si le client arrive communiquer avec le web service et s il re oit une r ponse Code cs pour la fen tre d affichage Hale se ace EE lt summary gt 7 7 Saercacerom loge for Wandowl am EE HESE public partial class Window System Windows window ReservationContractType rect Eeer baten d init Eet public void clickIt object sender EventArgs ei rct new ReservationContractType Disponibilite d rct Reserver DateTime Parse this textBoxl Text true DateTime Parse this textBox2 Text true Int32 Parse this lextBox3 Text true EE ECH EE di hambre numero lt Content di Personne Ee rad CONTENT ea Vionnet Olivier HES SO Valais juin 2008 113 217 R sultat de l affichage M jest_thinktecture 02 10 2006 Arriv e D part 15 10 2006 Reserver Code 1208223655 Num chambre Personne prix Au final tout semble fonctionner et de mani re assez simple Je note toutefois une diff rence dans les param tres pass s la m thode Reserver par rapport a la version du client dont
116. 217 Dana GE Hes s0 WALLIS ZE 200000000000 COCCOCOCC0CLOLCC0CCOOCCCOLOLOC00C00000000000000000000000000000000e 7 Manuel d utilisation de l application Pour expliquer comment utiliser l application je vais utiliser 2 web services dont les wsdl sont atteignables l adresse http localhost 1999 Servicel svc wsdi WCFCalculator Ce web service contient 4 op rations e double add double al double a2 e double div double al double a2 e double mult double al double a2 e double soustr double al double a2 WCFPersonne Ce web service contient 2 op rations e Personne getPersonne Personne p e Personne getArrayPersonne Personne p Ci dessous le diagramme de classe gt Personne aal 1Servicel Genre E Interface Class Enum oY genre i Methods El Fields gt gt masculin SW getdrrapfersaine Personnel fa Personnel aP age int EI oS gebere i erronea p Personne a nom string INCONNU d ae prenom string v sesdmis Amil El Properties Ge Tervita aA Age get set EL ink Seryicel a T Genre get set Genre Class a Mom get set string Eok Prenom get set string E Methods d oS get rravPersonnefPersonne pi Personnel reg getPersonne Personne pl Personne F _ Ami E Class El Fields og sesAmis Ami ae amiCenfance bool CC ae nom string a a prenom string Properties Si AmiDentance get set bool zb Mom 4 get
117. 9 9 9 9 8 9 8 9 8 8 9 9 8 8 9 Instabilit de l quipe de projet 1 Le risque se situe principalement sur la transmission des connaissances acquises durant ce travail Afin de r duire au maximum cette perte le rapport devra tre le plus complet possible et offrir aux futurs d veloppeurs une solution agr able pour trouver rapidement les informations recherch es par exemple ce que fait une classe ou une m thode Vionnet Olivier HES SO Valais juin 2008 104 217 Hes so Code WBS l 1 1 1 1 1 1 2 124 1 2 2 1 2 3 1 2 4 1 2 4 1 1 2 4 2 1 2 4 3 1 2 4 4 1 2 4 5 1 2 4 6 1 3 1 3 1 122 200000000000 00000000000000000ORC0COCOCOCOCCCCORCC00CL0CC00000000000000000000000000000e PLAIS RO ES SO ER ER ER ER D ER RE RW EE 13 2 3 MS Project Date de d but du projet Ven 24 08 07 Date de fin du projet Dim 22 06 08 Details du projet Tache ae Dur e eege Projet WSDL amp XAML 67 94 jours 89 06 jours Ven 24 08 07 Pr Projet 3 jours 3 jours Ven 24 08 07 Tests divers pour identifier les besoins 24 hr 24 hr Ven 24 08 07 Mise en route du Projet 3 19 jours 11 19 jours Mar 16 10 07 S ance d but projet 1 5 hr 1 5 hr Mar 16 10 07 Etablissement Cahier des charges blog 12 hr 12 hr Dim 21 10 07 Etablissement Fichier de suivi de projet MS Project 4 hr 4 hr Mar 30 10 07 Mise en place des outils pc maison jour 9 jours Mer 31 10 07 Installation Framework 3 5 1 hr 0 33 hr Mer 31 10 07 Mise en
118. AIS Hes so WALLIS 00000000 0600000600660066000006000060006000006 0000 0CC Ceo CORO COCO CO OOOO CCC OCSOOCCS bh A EE Ah EEEEEEEEEEKEEEKEER bh A EE 000000000ee Kb A EAR 200000000000000000000000000000000e noe lancestor contains name 1 Ee Cette modification n a pas t faite car le probleme a t identifi tardivement et que modifier un template XSLT peut provoquer d autres dysfonctionnement ensuite dans la g n ration et il aurait fallu refaire tous les tests ce qui repr sente de nombreuses heures pour tout retester 9 2 Code pour les tests NUnits Les assemblies sont crits en dur 9 3 Comportement de NUnit NUnit se comporte de fa on trange lorsqu il y a beaucoup de tests Il semble se bloquer Je ne pense pas que le probl me vienne de mon application ou du code que je mets si c est le cas a ne devrait soit pas g n rer soit mettre une erreur dans le rapport de NUnit mais certainement pas traiter correctement les 2 premieres fois puis bloquer ensuite 9 4 Differents clients dans le code g n r Pour certains web services il y a une partie des op rations qui utilise un certain client et le reste des op rations un autre client Pour la g n ration automatique les 2 sont crits Pour la g n ration wizard m me si un des clients n est pas utilis il est tout de m me crit Ca ne g ne pas l utilisation et a fonctionne correctement mais c est une ligne de code inutile 9 5 D
119. Boolean Complex ez Fig aP filg A iy generateUCTuning_Boolean_Simpled DE pesa SEN rg generateUCTuning Dooleap _Simple1 CustomClass L CustomClassList FileGeneration 5 w generateUCTuning_Boolean_Simplez Class We Class rg generateUCTuning_Enum_Complexd rg generateUCTuning_Enum_ Complex Fields i l Fields r generateUCTuning_Enum_ Complex nf Ene a FinalGutputDirectory generateUCTuning Enum Simplen a className 54 gen rationFolderMame generateUCTuning Enum Simple a namespace ae mWriter w generateUCTuning Enum Simple 5 specialClass a my athOoc generatexmlAppFile El Properties vg mx elfrans generatesmlCsprojFile EEN ane a relativePath rg generatesmiDataFile EN Namespace af tempFolderName rg generatexmlbunit sprojFile CS SpecialClass gW userControlFolderNarme generatexmiStdUicrile TEE E Methods M eege w addClassMember D ss S Customclass FileGeneration rg getClassMember Les 3 diff rentes g n rations ont une partie commune pour r cup rer et traiter les informations du WSDL A la fin du traitement de la m thode generatelt un switch permet de poursuivre le traitement sp cifique de chaque g n ration Vionnet Olivier HES SO Valais juin 2008 5 217 Hes so WA GE RAILS PESTE DS SSSR RSR ST IR STATS SR SLE EISELE 3 2 G n ration automatique d Se a d en A d A WSParameter I a parametersList WebServiceOperation E DLLTool E Class Class Class e OperationsList 2 Windowl
120. DL peut tre compil dans un langage de programmation pour g n rer les l ments interm diaires et rendre de fa on plus transparente l utilisation du web service c est le proxy Cela permet au d veloppeur d avoir tous les l ments en local et de pouvoir simplement appeler une m thode tr s simplement dans son code Publication des services UDDI Pour pouvoir informer le monde de l existence du web service 1l faut l enregistrer dans un catalogue de mani re standardis e gr ce P UDDI et c est cette m me place que les utilisateurs iront rechercher le web service qu ils recherchent A noter que ce n est pas obligatoire 13 6 1 1 SOAP SOAP d finit comment organiser les informations en utilisant le XML pour qu elles puissent tre chang es Il utilise des messages pour changer des informations qui sont utilis es comme enveloppe constitu e d un header optionnel et d un corps C est dans cette enveloppe que l application s occupe de mettre les informations devant tre chang es entre le client et le service 13 6 1 2 structure d un document WSDL Les sp cifications du WSDL sont en g n ral compos es d une partie concr te bindings services et ports et d une partie abstraite types messages op rations port types On parle d abstrait parce qu il n y a jamais un lien concret ou un encodage sp cifique pour la construction ou une d finition pour un service qui impl
121. E Hes so WALLIS r EE d dr ki ir EE dee LD dni So bende 200000000000 COLOC00CCOOCCO0COC0LOLOCC0OCROC0CCCOLOC0OCOL0C00000000000000000000000000000000e Lorsqu il y a beaucoup de texte afficher les contr les pr sent s ci dessus risquent de ne pas tre suffisants C est la qu intervient le Flow Document Le Flow Document permet de reformater le contenu par rapport la taille d une fen tre de la r solution du mat riel sur lequel tourne l application ainsi que d autres environnements De plus 1l embarque des fonctionnalit s pr d finies incluant la recherche des modes d affichage pour am liorer la lecture et la possibilit de changer la taille et la fonte du texte Voici un exemple qui prend pour base un exemple ainsi que le texte provenant du site MSDN http msdn2 microsoft com fr fr library aa970909 VS 90 aspx lt FlowDocumentReader xmlns http schemas microsoft com winfx 2006 xaml presentation Mins lt Wttp Ssehemas micros Or com wantx 20067 zam T lt FlowDocument gt Boro ograph lt Bold gt Some bold text in the paragraph lt Bold gt SOMme text that 1s mot bold lt Paragraph gt BlockUlContainer gt Image Source Col lines jpg gt lt BlockUIContainer gt EE Flow documents are designed to optimize viewing and readability Rather than being set to one predefined layout flow documents dynamically adjust and reflow their content based on run time variables such as wind
122. E EE EE EE EEEKEEEEEKEEEEEEEEEEEAKEEEEEEEEEAKEEA Kb A EAR 200000000000000000000000000000000e CodeAssignStatement codeAssignAge new CodeAssignStatement fieldRefAge new CodeArgumentReferenceExpression cpdl1 Name ParamCtor Statements Add codeAssignName ParamCtor Statements Add codeAssignAge j ajoute le constructeur ama classe codeClass Members Add ParamCtor Le code qui sera g n r le constructeur avec paramtres public Humain string nom int age le MES MONT BAS TRE GENE CE 13 4 2 3 XSLT Le XSLT est un langage de template qui permet de cr er n importe quel type de texte XML ou HTML Vu que les codes sources sont du texte XSLT peut tre utilis pour les produire m me le XAML qui est au final du XML En utilisant le XSLT on simplifie d une certaine mani re la vie du d veloppeur et la maintenance future de l application Ceci parce qu il est plus simple que codeDOM pour diter ou rechercher un l ment dans le contenu Il y a galement une vision plus parlante lorsque l on consulte le fichier XML qui contient les donn es et le fichier XSLT contenant la structure utilis e pour cr er le nouveau document ce qui permet de savoir plus rapidement quoi correspond une partie du code ou pour identifier un probl me Cependant tout n est pas parfait Alors que codeDOM peut produire diff rents langages de code depuis un fichier ce ne sera pas le cas avec le XSLT il faudra
123. EEEEEEEEEEEEEEEEEKEEEEEAEKEEKEAEEEEEEEEEEEEEIEEEEEEEEEEEEEEEEEEEEEEEER bh A KEE bh A EKEEEEEEEEEKEA 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e donn es XML le template crira le bon nombre de contr les en respectant la taille des tableaux fournis 3 7 1 2 UC xaml_cs xslt Ce fichier de transformation s occupe de g n rer le code C du UserControl Pour pouvoir utiliser ce fichier de transformation aussi bien pour la g n ration automatique que wizard et que cela reste compatible ensuite avec le fichier de transformation AllWindow_xaml_cs2 xslt les m thodes des UserControls sont identiques De plus pour obtenir ou inscrire une valeur se fait toujours avec un String le code de traitement de l UserControl s occupant de transformer si n cessaire le String pour remplir et afficher correctement les contr les Pour chaque UserControl il y a toujours les m mes m thodes pr sentes get UCValue qui permet de r cup rer la valeur du contr le setUCValue String str qui permet d affecter une valeur au contr le cleanUCValue qui permet d effacer le contenu du contr le Pour la cr ation des UserControls sp cifiques Boolean ou Enum il y a toujours 2 transformations La premi re transformation permet de configurer le nom de classe et namespace tandis que la deuxi me transformation s occupe d impl menter les diff rentes m thodes avec le code de traitement appropri suivant que le
124. EEN une boucle pour ajouter les l ments de mani re automatique au UC 0 a LE ARC ke lence rio ue PIRE Eeer lb new Label US Comeeine Elek Hike a ae AH Sige lt eeivel well Chia helen a Acc le rotin tenir CRAIG ie NICE See ya ela CheckBox coh mew Checkbox Slo Nein MWCO MSC Bop EE ae ae 7 ecb lsChecked boolArray eptir s Co nten A Eeler ota reel wie le TR Gt xel For eachsgqer lt xsl for cachigqu Le principe est le m me que le traitement avec un tableau mais un peu plus complexe Je commence par cr er une liste de Boolean nomm e boolList dans laquelle je mets toutes valeurs trouv es dans le String pass en param tre Dans une autre liste de type int nomm e cptListi je mets pour chaque entr e du 1 tableau la taille de chaque 2 tableau contenu ce qui me permet lors de la mise en place des l ments de savoir combien je dois prendre d l ments de boolList pour chaque entr e du 1 tableau cleanUCValue Cette m thode est uniquement pr sente parce que par d faut quel que soit l UserControl utilis J appelle toujours cette m thode Dans ce cas de figure la m thode ne fait rien rootBooleanArray Ce template est destin a la cr ation de UserControls sp cifiques pour le type de tableau de Boolean Au lieu d afficher un TextBox il affiche une s rie de CheckBoxs suivant ce ou aura indiqu l utilisateur Vionnet Olivier HES
125. EIEEEEEERE 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e M VALAIS SSCSHOSSSSSSSSSSSHSSSOSSSSSSSSSSHSSSSSSSSSSSSSSSSSSHSSSHSSSSSSSSSSSSSESSSSESSEOOESOSESESESE Hes so WALLIS 0000000000 0000000006000000000000006 0005050005 00000000 00 COSCO COCO COCO OO OOO COSS bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEKEEEEEEEEAEEUEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 29 Woche 9 05 2008 15 05 2008 D compte des heures hebdomadaires Deklaration Wochenstunden T che Aufgabe Heures Stunden Partie wizard termin e et d but du refactoring Ce n est pas parfait et comme j aurai voulu que ce soit voir ci dessous le point modification pour une version 2 Apr s avoir fait une s rie de tests tout semble fonctionner correctement Au final on peut utiliser les UserControls standards qui ne n cessitent aucune dition Pour les types Boolean Boolean Enum et Enum il y a la possibilit d utiliser un UserControl sp cial Pour les Booleans il est compos de CheckBox et pour les Enums de ComboBox A noter que le contenu des ComboBox est initialis lors de l ex cution de l application g n r e Ces UCs sp ciaux doivent tre dit s et sauv s pour la partie Input rentrer les tailles des tableaux d objets dont ils sont membres cec
126. ES SO Valais juin 2008 120 217 VI VALAIS ceeccccccccccccccccc cess 8 8 8 8 8 8 8 9 ee eee 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 eseeeeeseeseeseeseeeees Hes so waus EE Using vs rem kame using SVs Gem Ten using System Windows using System Windows Controls using System Windows Data using System Windows Documents using System Windows Inout using System Windows Media using System Windows Media Imaging using System Windows Navigation using System Windows Shapes Using WorApplicartonrPersonme sorv1ceRerterencel namespace WpfApplicationPersonne lt summary gt Sabercacerom loge for Wandowl am 7 7 Summa 7 publace partial class Wandowl Window public Window ga ell omponent I ServicelClient client new ServicelClient PLivetes EE Ee EE Personne p new Personne DENON cere meu Wee Sskicsinom tex BOX Prenom s Lexie EE LEE EE P ee E ype a Genre EE Text Personne ps client getPersonne p Ee PWS Nom EE IP renomi e ext Pllc Prenom EME BOK BCS TEE ONS Nes WO Sic Cine L REPORITEMEONS ook Ns EES La r f rence ServiceReferencel est sp cifi e dans la liste des assemblies et l objet client est cr L action du bouton contient la r cup ration du contenu des diff rents TextBoxs pour remplir l objet Personne puis la m thode getPersonne du client est appel ee et le retour est stock dans un nouvel objet Personne dont les membres sont
127. ES SO Valais juin 2008 45 217 eeeeaee eee eeeeeeee eee eeeeeeeeeeseeceeeese eee eeceeceeeeeeeeeeceeeeeeeeeeeeseeeeeeeeceseseeeee 1 VALAIS SSCSHOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSESSSSSSSSeeSeSeseseeeoseoeseseeoeseeeeeoeeeseeeeeeesce Hes so WALLIS SCSHSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSESSSSOSSSSESCEOSESSSESSEEEES 2000000000000000000000000000000L000000000000000000000000000000000000000000000000000e Le tableau de Personnes est parcouru Pour chaque entr e 1l faut spliter le contenu pour avoir le tableau d Amis La taille du tableau d Amis est stock e dans la liste d int Chaque entr e du tableau d Amis est convertie en Boolean et stock dans la liste de Boolean Les deux listes sont transform es en tableau Il ne reste plus qu cr er les contr les Pour chaque entr e du tableau de Personne un Label est cr puis le contenu du tableau est mis en mettant le bon nombre de CheckBoxs liste des usings namespace WCFPersonne userControls PUY Ve partia l elie AU EE onra Ponle Kee ERT InitializeComponent pubic voril EE UC Ee Steng ceeine i wel ett CIE se Qi ioe pi 107 List lt Boolean gt boolList new List lt Boolean gt Steet EE ie as a ce es Solis ise Sic alate ats a an SYStem StringsoplitoOptions RemovekEmptyEnrries Liste int cpoblList ls mew List Horn ena tei le I a Seer EE EE Sering KEE rene isl De mew soit aie NN
128. Enfant Parent Enfant nodeA3 Parent BALANT Parent Enfant Parent Enfant Parent Enfant Sortie Enfant Parent root Enfant Parent nodeAl Vionnet Olivier HES SO Valais juin 2008 ab A EEEEEEEEEEKEEEEKEEEEEEEEEEEEEEEEEKEEEEKEEEKEAEEEEKEEEEEEEUEEEEEEEEEEEEEEEEEEEEEEEEER VALAIS 6 eegeegeegegegeeeeeeeeegeegeegeeeegeeegegeegeeeeegeegegpepegeegeegeeegeeegeeeegegeeegegeegegegeeeeeee 000000000000000000000000000000000000000000000000000000000000000000000000000000000e WALLIS ia pth he Bee kt Fe hata tats ttt Byte lend dE tei kit ti deny sh EE Ee de EE 200000000000000000000000000000000000000000000000000000000000000000000000000000000e nodeAl al nodeA 2 Lei nodeA3 nodeA 2 nodeBl nodeBl Descendant Permet de trouver tous les descendants du n ud courant Dans ce cas galement une boucle for each est int ressant pour parcourir les n uds et le select prendra la valeur descendant nodeAl al nodeA 2 a3 nodeA3 nodeA2 nodeBl nodeBl Parent Permet de trouver le parent du n ud courant en utilisant parent nodeAl al nodeA2 a2 al 155 217 ab A EEEEEEEEEEKEEEEKEEEEEEEEEEEEEEEEEKEEEEKEEEKEAEEEEKEEEEEEEUEEEEEEEEEEEEEEEEEEEEEEEEER VALAIS c000000000000000000000000000000000000000000000000000000000000000000000000000000006e Enfant Parent nodeAl BALANT Parent Coot Enfant Parent Coot Enfant Parent Coor Enfant Parent Coor n
129. G Lo O lt Lei is juin 2008 R sultat g n ration wizard G n ration de application r ussie Utilisation de l application r ussie Convertspeed Input Double id 1 nameMember speed SpeedUnit id 2 nameMember FromUnit metersPersecond SpeedUnit id 3 nameMember ToUnit centimetersPersecond Output Double id 4 nameMember 100 G n rer 53 217 IelTTOT RG Hes So waus RE 2000000000000000CO0C0OCCC0COCRO0OC0COCCLROLCOOCCCCCCOLOCOCC0C00000000000000000000000000000000e 6 2 6 Real Time Market Data Web service permettant de r cup rer des informations de la bourse Source http www webservicex net WCF ServiceDetails aspx SID 7 WSDL http www webservicex net RealTimeMarketData asmx wsdl Le web service ne semble pas bien fonctionner Par exemple en utilisant l op ration Quote qui partir d un symbole permet de r cup rer le nom du symbole la date les actions et les prix j obtiens le message d erreur suivant System Web Services Protocols SoapException Server was unable to process request gt System Exception Error occured please try again later If problem exist contact support webservicex net at RealTimeQuote RealTimeMarketData Quote String Symbol End of inner exception stack trace Ja galement test le web service en cr ant un client la main dans Visual Studio et j a1 obtenu le m me mess
130. KEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEUEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e M VALAIS SCSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHOSSHESHSSSESSESSHSSSSSSSSSESESEOSSOSSHOSSESEESS Hes so WALLIS SSCSHSSSSSHSSSSSSHSSHSSSSSSSSSSSSSSHSSSHSHSHSSSSHSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSESSSESESESESES 20000000000000O0O0C00OC0OCCC0OCCO0O0OC0LOLCOCOCOCCCO0LOC0OCC0C000000000000000000000000000000000e NALAIS HHG Hes so WALLIS ccccccccccccccccccc ER EE RRE eee eee e eee eee eee see cette eee eee eee necceneeeeseees Le 2 probl me concerne les fichiers XAML et XAML cs de chaque Usercontrol Pour pouvoir les utiliser dans l application finale 1l faut que je les aie disposition J utilise un fichier de base XSLT et je regarde quels sont les types que l application va rencontrer Pour chaque type standard je g n re un fichier XAML et XAML cs Pour viter les probl mes de namespace du code XAML par rapport ceux du stylesheet les balises du Usercontrol sont converties en amp gt et amp lt afin que le contenu ne soit pas interpr t et une fois g n r je remplace chaque occurrence par lt ou gt les fichiers des Usercontrols sont stock s dans un dossier Usercontrols et le fichier csproj est mis jour pour inclure les Usercontrols qui vont tre utilis s Au niveau de la g n ration des fichiers de code cela implique deux changemen
131. L Ja effectu des recherches sur Google MSDN Online et Codezone Community afin de trouver quels sont produits open source ou commercial actuellement disponible et r pondant de pr s ou de loin a objectif g n ral de ce travail de diplome 13 4 1 1 Visual Studio 2005 Par d faut VS 2005 ne supporte pas le XAML II faut installer Microsoft NET framework 3 0 Windows SDK pour la documentation exemples et outils de d veloppement et finalement Visual Studio 2005 extensions pour int grer les nouvelles fonctionnalites de WPF Windows Presentation Foundation et WCF Windows Communication Foundation dans Visual Studio En consultant les diff rents types de projet possible une nouvelle entr e nomm e NET Framework 3 0 est disponible mais rien n est pr vu concernant la generation d un client graphique en ne fournissant que le WSDL Dans les autres types de projet il n y a galement rien de pr vu 13 4 1 2 Visual Studio 2008 Cette nouvelle version de VS n cessite la nouvelle version du framework net 3 5 et entre autres nouveaut s elle b n ficie d un designer XAML nomm cider En consultant sur le site de MSDN propos des nouveaut s apport es par le nouvel environnement de d veloppement et le nouveau framework rien ne permet de dire qu il y a des outils permettant de r aliser mon objectif 13 4 1 3 Programmes et plugins tiers Je n ai trouv qu un seul projet r pondant une partie de ma probl
132. L amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David 21 14 03 2008 27 03 2008 Semaine Woche D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Red veloppement du code pseudo code et trace Je n ai pas encore fini cette partie J ai termin sous r serve la partie input et je travaille sur la partie output Une fois termin e aurai encore des tests de code suppl mentaires faire pour la partie tableau costum pour tre certain que a passe 2 niveaux J ai pass beaucoup de temps sur le probl me des tableaux de type costum et je ne SUIS pas arriv trouver une solution qui fonctionne quel que soit le nombre de tableau costum imbriqu du style Personnel contenant Chien et ainsi de suite J ai des probl mes pour savoir pour le 1 niveau combien j ai d l ments dans le tableau et ensuite pour chaque sous niveau afin de pouvoir parcourir l ensemble et mettre les bonnes valeurs au bon endroit pour les enfants si ce sont des types primitifs ou complexes par rapport a leur profondeur quel est le d limiteur de s paration qui doit tre utilis pour recr er un tableau si c est un simple tableau le d limiteur est un tableau 2 dimension le d limiteur est et ainsi de suite De plus il y a galement des problemes de d roulement de code par exemple un bout de trait
133. Pour le scroll utiliser un Scroll Viewer qui englobe tout ce qui doit pouvoir tre scroll http msdn2 microsoft com en us library system windows controls stackpanel canverticallyscroll aspx 13 8 8 Divers Quand utiliser de SvcUtil exe http forums microsoft com MSDN ShowPost aspx PostID 13 86361 amp Site D 1 Outil Web Services Description Language Tool Wsdl exe http msdn2 microsoft com fr fr library 7h3 ystb6 aspx Vionnet Olivier HES SO Valais juin 2008 211217 Hee co CE RE Titi tise titre EPP EEE DE PEN POESIE OI ET Commentaire sur le fait que le Add Service Reference sous VS invoque SvcUtil exe http forums microsoft com MSDN ShowPost aspx PostID 1026797 amp SiteID 1 Mon premier service WCF consommateur part IT http www c21 fr code aspx IDCode 667 svcutil exe busted in Beta2 http blog rolpdog com 2007 07 svcutilexe busted in beta2 html 13 9 Remerciements Un grand merci David Russo et Michael Schumacher pour le suivi de ce travail de dipl me Vionnet Olivier HES SO Valais juin 2008 212 217 Kb A EEEEKEEEEEEKEEEE c000000000000000e 200000000000000000000000000000000000000000000000e VALAIS sessssecseessocesesseeeseeesesssesseeeseeeeeseseesesesesseesescesseseseessesecesese Hes s0 2000000000 0000000000000000000OO0OC0OC0O0OCOCOO0ORO0CCC0000000000000000000000000000006e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e 14 Table des mati res l
134. Quelques probl mes Apr s quelques recherches sur Internet et r paration finallement tout a t avec la beta de d sinstall et la version finale a t install e Visual Studio 2008 http 207 46 236 188 MSDN ShowPost aspx PostID 249 1702 amp SiteID 1 Impossible de cr er http www codeplex com WarcraftAddOnStudio WorkItem un nouveau projet View aspx WorkItemId 724 Dans la version Ca vient du fait d avoir eu la beta 2 install e sur le pc Il a fallu se rendre dans finale de VS USERPROFILE AppData Local Microsoft VisualStudio 9 0 impossible d utiliser pour effacer tous les fichiers portants l extension TBD ce qui a permit de r initialiser des l ments XAML la toolbox drag et drop http forums microsoft com MSDN ShowPost aspx PostID 2633726 amp SiteID 1 Divers Diverses Je pensai que l apprentissage de XAML irait tr s vite mais ce n est pas le cas Ca prend pas mal de temps de lire la documentation et de comprendre et de coder des exemples pour illustrer les diff rentes fonctionnalit s Vionnet Olivier HES SO Valais juin 2008 161 217 Hes so PEER EEE i OUAIS RE RE RE TES EE EE tes ter Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 14 Woche 27 01 2008 31 01 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Cr ation d
135. R oo ee 97 10 Evaluation e e area da arte mister 98 11 Evolution future CEL ap PICA ON siegscisinexsieesssaswendsntesereerpsecchnotanaaasesesasswaeedenssseceusseees 99 12 Cone E E EE E eee A S 99 13 EE 101 13 1 IR E 101 EAA EE 101 LT E A A 101 RS NE 101 EA e Fe 101 Ka VV arse eaeessane nt E E E E 101 EA AN 102 13 1 7 CodeDom Code Document Object Model 102 13 1 8 XSLT EXtensible Stylesheet Language ccc ceeeeesssessesseesseeeeeeeens 102 13 2 Gestion de projet ss 102 ES CAMES EE 102 13 2 2 Analyse des risques se 102 e KEE 105 Ee Be E e EE 108 KS AE OO BO Be ae ee Cr 108 SM ISU SO Z JO DEA on 108 13 3 3 Visual Studio 2008 Professional oissieccsccassesavsdencessnassesanssaneeasawsusepueaabecisndess 109 eod NS AR A A A A 109 IK POR EE e E ne enn ee 109 Ke NO E E E E E E A E EEE N 109 13 3 Microsolt Expression 2 0 Deli E 109 KS Se H Be E me ee ee ne E T EEE A A E A 110 13 3 9 SandCasle amp DocProject 2008 A a 110 13 4 CHOTE E sn E 111 13 4 1 Comment r cup rer les informations du WSDL 111 A SAS RO oe ee 111 A2 Visual SCO TE 111 L Programmes et plugins DIEER iergendee iesse e teg 111 ISLE Parser le Ee WSDL 2 de in 115 kee 115 EE e tee E E 115 14 2 Comment Se E 116 EE eege 116 5 5987 ee DON a ree err tte 116 Me EE E NE 117 BAZA CHOK nn ne ee ne ee ee 117 13 43 COMmmMent Creer e Ee EE 117 13 44 COMMENT Cr er d s tests UNILAILES 0csscccc desesesscsencsswseseonssansaasevenseossds
136. SC e a eee E A ERA 42 32 241 e 42 522 OR E 44 5 2 3 EE 47 EE 47 ON CODES a 47 Vionnet Olivier HES SO Valais juin 2008 213 217 Kb A EEEEKEEEEEEKEEEE c000000000000000e 200000000000000000000000000000000000000000000000e n Hes So waits fitness DEER 50 6 2 1 Acceleration Unit Convertor ss 50 6 2 2 PES SS I a a 51 6 2 3 Metric E 52 6 2 4 BONE E E E E A A E E E A E AT 32 6 2 5 PPC Eed 53 6 2 6 Real Time Market Data ix ssssscctacsascantuewesocnsontbasiontwendessetnbedwaddendswasaedecessansdact 54 6 2 7 E E 55 6 2 8 Mortgage Web service 55 6 2 9 Stock Quote s ensnsssssse ss eceennnnsssss css eeennnnnessssse 56 0210 Currency Conve MO oats ae ed et ont 57 6 2 11 Global Weather 57 6212 IPZLOCAHON EE 59 6 2 13 Web Service Aigentelools 60 6 2 14 Services de go olocaltsatnon 63 6 2 15 Amazon web services sisi 63 6 2 16 Euro 2008 Football Championships 000ssseeenesseeeessssssssssssssreeerrreesesssssssss 64 6 2 17 Weather Calais cccsacedscacssdedeaddisanssdsiacnnnaarstsenstabenssedeaesendseadaandarsdanestabesasadetaneeend 69 7 Manuel d utilisation de anpleaton 71 Tk Coniburanon de Tree E 71 Talal A apse E E E 72 7 1 1 1 SDE e E oe ee eee 73 7 1 1 2 PORE a E E E E T 73 EN Ke E 73 7 1 1 4 PP IC A OD ME 73 Aes Auto Chent Assemblies sessies ssi E oN 74 Lla Namit TESTS le 75 7 1 4 Load EE 75 Tel AON aO al Ue a E E AR 76 Trk EE 11 722 CP OR a nn a 7 3 G n ration wizand cee ecccc
137. SEQUENCe gt lt xe element minOccurs 0 name Jours nillable true fpe xs stnng lt xs element minOccurs 0 name Jourssemame type emt xs Sequence gt ixs complex Type lt xsielement name Hello nillable true type tns Hella lt j xs schemaz 13 6 2 4 message La d finition des messages se base sur ce qui a t d fini dans le Type et permet de d finir les donn es pour une op ration Chaque message peut contenir une ou plusieurs donn es On peut comparer ces donn es aux parametres d une fonction Il fait le lien entre le nom utilis pour le message dans le portType et l l ment auquel il correspond dans le sch ma L attribut name du message est unique par rapport a tous les autres messages d finis L attribut name du part est unique pour toutes les parties qui composent le message il peut y avoir plusieurs parts constituant 1 message lt wsdl message name Hello World Contract Hello World Inputhlessage gt wedl part name parameters element ns Hello World lt hwsdl message lt wsdl message name HelloWorldContract_ Hello World Outputllessage lt wsdl part name parameters element ins Hello WorldResponse i gt lt Avsdl message lt wsdl messagse name Helo World lontract_ Melo Inputlvlessage lt wsdl part name parameters element tns ll Hello lt hwsdl message lt wsdl message name Helo World Contract_MiyHelo Cutputlvlessage
138. SET public void cleanUCyvyalue Vionnet Olivier HES SO Valais juin 2008 U renr DO To IS ite Wei 35 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEIUEEEEEEEEEIEUEEEIEEEEEERE 0000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e eeeeeeeaceo Cees eecee eee e eee eeeeo eee eeeee eee eeeee eee eeeeeeeeeeeesee eee eeeeeeseeceeeeeeee ee ee 6 2000000000000000000OC0CCC0COCCC0O0OCCROL0CCOOCRCCCCOLOLOC00C00000000000000000000000000000000e ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000000006000600 0006 00000000000000000000000000000000 Ah A EAR 00000000000000ve 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e 5 1 3 temp Ce dossier contient le proxy en version C et WCFCalculator config qui est dans ce cas pr cis le fichier de configuration de l application ces 2 fichiers provenant de l utilisation de Svcutil qui les a g n r s Le fichier tmpDataUCXmlFile xml est un fichier temporaire de donn es XML pour la cr ation des UserControls et est cras plusieurs fois lors d une g n ration chaque UserControl cr n cessitant un fichier de donn es XML l g rement modifi Exemple pour le
139. SSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSeesSesesessesesseseeesoessesseece Fi 1 VALAIS 000000000000 000000000000000000000000000000000000000000000000000000000000000000000e IHI Hes so WALLIS zs GetLastClosingDate Output Obj TradingDay String id amp nameMember Date 6 2 2008 Boolean id 7 nameMember Open valeur 0 Boolean id 8 nameMember Holiday T valeur 0 Boolean id 9 nameMember EarlyClose valeur 0 OutcomeTypes id 10 nameMember Outcome SUCCESS Va String id 11 nameMember Message ad String id 12 nameMember Identity Double id 13 nameMember Delay 6 2 14 Services de g olocalisation Service payant n a pu tre que g n r Source http www w service fr servicesList aspx WSDL http www w service fr GeoGraphy Localization asmx WSDL R sultat g n ration automatique G n ration de l application chec Ce web service contient un tableau de type XmlAttribute System Xml XmlAttribute Ce type n est pas impl mente dans l application ce qui provoque une erreur de g n ration 6 2 15 Amazon web services Source http aws amazon com WSDL http www amazon com gp redirect html ref sc fe c 0 12738641 10 location ht tp webservices amazon com AWSECommerceService A WSECommerceService wsdl 3f amp token 1B53B9A 1D3B078A3877A5645 12482 AE82DCB7FC2 Je n ai test que 2 op rations du web service m
140. String wcfs52a2 string Double wcfs52a3 Double Double wcfs52D Double String wcfs52E String Boolean wcfsS2D Boolean WefService53 Custom wefs53 Custom Boolean int Vionnet Olivier HES SO Valais juin 2008 49 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE Ah AL EEEEEEEEEEEEUEEKEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEUZEEZEEETIIEEEEEUEUEEEUEEEEEER Ah A EEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEETIEUEEUEEEEEEEEEEUUEEEEEEEEEERT WALLIS oeeeeeeeeeeegeeeeeeeeeeeeee 0000000000000000000000000000000000000000000000 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e 54 55 56 57 58 59 60 6l 62 63 64 65 66 67 68 69 70 VI VALAIS Hes s0 WefService54 Custom wefs54 Custom Boolean Boolean WefService55 Custom wefs55 Custom Enum1 Enum1 WefService56 Custom wcfsS6 Custom Boolean Boolean Custom2 Boolean Boolean WefService57 Boolean wcfs57 Boolean WefService58 Custom wcfs58 Boolean Custom Boolean WefService59 Custom wcfsS9 Boolean Custom Boolean Custom2 Boolean WefService60 Boolean wcfs60 Boolean WefService61 Custom wcfs61 Custom WBoolean WefService62 Custom wcfs62 Custom Boolean Custom2 Boolean WefService63 Custom wcfs63 Custom Boolean Custom Boolean Custom3 Boolean
141. Window Cas o une assert contient une erreur Dans test add Assert Greater 20 objC add 9 2 est remplac par Assert Greater 10 objC add 9 2 M JestResultWindow Les tests ont t r alis s jusqu ce qu une erreur est arriv e Vionnet Olivier HES SO Valais juin 2008 191 217 eege egeegegegegeeegegeeegegegeeegegegegegeegegeegegegegeegegeegeggeegeeeeeeeeegeegeeegeeeegeeeeeegeeegeeeee 2000000000000000000000000000000000000000000000000000000000000000000000000000000006e Hes so Wiis RER RER EE Emplacement du test qui a g n r une erreur Probl me trange Il y a quelque chose de bizarre En d finissant 4 m thodes de tests contenant chacun 6 asserts je peux ex cuter 2x les m mes tests Cliquer sur le bouton en utilisant les m mes codes de tests sans probl me particulier Le r sultat est affich rapidement A la 3 il y a un blocage au milieu de l envoi des donn es dans la fen tre console du web service qui affiche ce qu il re oit je n ai que la moiti des donn es qui arrive et rien de plus S1 je restart le web service et que je relance le test toujours sans avoir relanc une nouvelle g n ration a repasse de nouveau 2x Si je ne mets que 2 m thodes de tests la 3 ex cution passe sans probl me J ai galement test en utilisant Nunit en mode graphique en chargeant l ex cutable cr par mon application J ai galement le m me probl me Il bl
142. Window TestWindow GenerateTestS XmlDataGenera FileGeneration TestResultWin ervice tion dow 2 Choisir op ration 1 initWindow lt 3 button_testGeneration_Click gt 4 generateltForTest Q generateXm DataFile SE 6 generateXmINunitCsprojFile gt 7 createFile 3x 8 ReportProgress 9 saisieDesTests init affichage a 10 Saisir les tests 11 button_testGenerationExec_Click 12 generateltForTest2 18 msbuild Si aucune erreur continue le traitement 14 ReportProgress 15 Afficher r sultat Le traitement pour produire une application de tests est effectu par la classe GenerateTestService avec l aide de diff rentes classes Les interactions avec l utiisateur sont le travail de la classe TestWindow et le r sultat est affich dans TestResult Window 1 A la fin du traitement de CommonGeneration la fen tre Test Window est appel e et initialis e pour lister les diff rentes op rations disponibles 2 La fen tre est affich e et l utilisateur s lectionne les diff rentes op rations qu il souhaite tester 3 L v nement du bouton s occupe de r cup rer les op rations s lectionn es 4 Le BackgroundWorker lance la m thde generateltForTest de l objet GenerateTestService 5 Cr ation du fichier de donn es XML 6 Cr ation du fichier de donn es XML pour
143. a g n ration s est d roul e avec succ s afficher un bouton dans la fen tre principale permettant de lancer l application g n r e 4 3 G n rer du code pour la g n ration wizard ER eat Vatter Per fasses Hanks Pages EleGerertion Per fasses Hanks nine 3 2 Choisir ue 3 button wizard Generation Click generatek 5 Repot Progress D vuererzeimdl ot able Shrhelblbtntrgz j 1 reader O Report Progress 11 initlvindow 1 Chox LeerContrqlE fn Geert z ectl kb th Drop lountees Vionnet Olivier HES SO Valais juin 2008 18 munte N Si il Looe a pas eu d ereur sinon C afiche SES e 3 mebuild 20 sa et display 15 generat tz 16 GE Progress 28 217 Tools ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS EE i M A E E EE EE EE KEE 0000000e 000000000ce Kb A EAR 200000000000000000000000000000000e Le traitement pour produire une application wizard avec intervention de l utilisateur est du ressort de la classe GenerateWizardClient avec l aide de diff rentes classes Les interactions avec l utilisateur sont le travail des classes WizardWindow pour le choix des op rations et Operation WizardWindow pour le choix des UserControls Lorsque le traitement effectu par CommonGeneration est termin un objet GenerateClient est insta
144. a rencontr un probl me lors de l utilisation du web service au niveau du temps imparti pour recevoir une r ponse de la part du web service Le d lai d expiration est de 1 minute par d faut ce qui largement suffisant pour des web services en local et qui jusqu ce test l tait galement pour les web services distants Pour r soudre ce probl me 1l faudrait que l utilisateur puisse param trer dans le fichier de config les timeouts du binding et ainsi changer facilement les valeurs par d faut Lors du test le web service a galement t indisponible peut tre que ces deux probl mes sont li s Finalement Va tout de m me r ussi utiliser le web service pour les op rations qui ne concernent pas l Irak sans avoir modifi quoi que ce soit GetNineDayForecastInfo Pour un num ro postal donn donne la pr vision 9 jours Chaque pr vision de jour contient le nom du jour la date IconIndex qui je pense doit tre une information concernant une image la pr vision soleil pluie les temp ratures maximale et minimal le pourcentage de chances de pr cipitation Exemple avec New York je n ai mis que les 4 premiers jours Vionnet Olivier HES SO Valais juin 2008 69 217 DOUTE ETAT ETATS TTT Hes so WALLIS sccccccccccccccccccccccccc 8 9 8 9 8 8 0 9 5 8 8 8 9 9 8 8 9 9 5 8 8 8 0 0 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 0 8 9 8 8 8 8 9 8 0 0 8 so 1 jours 2 jour
145. aa IG f lasetyos Ii Cowie Suisses 00 fap ects REES SE Cube eege 1 EC NS ET OS OC Comme Ser E j recustom gt cutoni its bn gt eene la CSST Ls Sosa so Tole QE Siete LO ae Lg swig Er TE Siete MEME Ne OT shige EE eet Ayn a a yee IS ETS EM ON S Ee gS EE Coleen RE sce lo t E LS an a we oy ba La siete hse Coulis 1 Vionnet Olivier HES SO Valais juin 2008 40 217 DOC Hes SO WALLIS e 2 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 9 9 9 9 9 8 9 9 9 9 amp 9 9 9 9 9 9 9 9 9 9 9 Sie INS se ee Houston gt Colic S joes eae SEINE ems ME oS sion 7 HI LS t Sieve Ns Coulee shee I E Pi cuscon euro EE Site ie ar EE Mie LS t IST TR ENS COURENT Sie IG CEE SEC vie a LG t IIS ET ee LU Comins I SET OC Sti 17 t Tin woe he NC E tte 0 Cour EE Il SE SE EE See EE ar ak A IE MIE ET OS RO CouinEe Si b ere es 7 escalate 146 Enum EE ENEE Ee BE Eer HE EE EES as EE Afficher le retour du WS dans la fen tre Uea sceeUGy awe Sb ie UCT EZ serve yvaluc Ser Z jy DEMO ee wUC Va IWe Size als Uc l4 serve Value str 14 Vionnet Olivier HES SO Valais juin 2008 41 217 TTT Hes so cs 00000000000000000000000000000000000000000000000000000000000000000000000000000000009 2000000000
146. ableaux I faut viter que pour 2 UC enfants d un tableau parent 1l faille saisir lors de l dition de ces 2 UCs chaque fois la taille une fois saisie pour le 1 UC l autre devrait pouvoir b n ficier de l information e Iln yapas assez de choix pour personnaliser les contr les e Modifier la partie de cr ation des UserControls m thode generatelt de la classe GenerateWizardClient Il faudrait pouvoir rendre cette partie plus facilement modifiable et se pencher sur un syst me permettant a l utilisateur de pouvoir cr er ses propres UserControls et les mettre disposition de l application sans devoir modifier une ligne de code e Int grer l application Visual Studio sous forme d un Addin e D velopper un syst me automatique permettant de cr er des tests unitaires Cela doit comprendre la cr ation des objets l interaction avec le web service et le traitement du retour du web service ainsi que la g n ration des tests unitaires 12 Conclusion L analyse de risque que j ai faite au d but du projet a t trop optimiste Ja largement sous estim la complexit que repr sentait la g n ration de code pour cr er des fichiers C et XAML La moindre erreur de code dans un fichier g n r entra ne dans le meilleur des cas un chec lors de la compilation des fichiers et dans le pire des cas la compilation passera mais c est lors de l utilisation que les probl mes surviendront plantage ou
147. adifie d Ba 3 bw_progressChanged is2ndLviTbl d dataXMLFileName 2 bw_runWorkerCompleted Eu pstternSpeciallCName av finalOutputDirectory PORTIE A BETEN iiit d generationFolderName init Window 3 Mett a tempFolderName updateStatusBarltem of tempFolderName We 9 userControlFolderName vg ucFileName d userControlFolderName Methods E Methods 3 Button ward Och 2 button_wizardGeneration_Click Y button Booleandrray_TBLier_ Click F Ve F 2 bw _dowork button Jick a ch button_BooleanArray_TBL2eme_cClick S bw progressC i GeneratewWizardclient 2 button_BooleanArray 1 Ch ae 39 bw_runWorkerCompleted button_BooleanArray2_Click event selectUicedt DropDownClosed a gwc 3 button_Enum rray_TBLler_Click Res enn M gt amp Fels button_Enum rray_TBL2eme_Click 2 Kn a appNames tedChent ch a Operation WizardWindow Osiris or sense aY button_Enum rrayl_Chck Ps d appXMLFileName gt 8 updateStatusBarlbem gY button_Enum rray2_Clk af arrayListUserCantral 3 button_SauverFichiers_Click g bw 3 button_TBLier_Click a cscPath g9 button_TBLier_Enum_ Click g csprojXMLFileName aY button_TELZeme_Click vg customClassList d customClassList 3 button_TBL2eme_Enum_Click Ss aP dataXMLFileName a checkIsModifiedFile CustomClass IS Lag customClassList d execPath EditUcWindow Ce A finalOutputDirectory Class 3 initXamlwindow A8 generationF
148. affich s dans les TextBoxs R sultat de l utilisation du client BH Window Sel Pr nom Ag Nom WS Pr nom W5 ws Hitchcock ws Alfred Joseph Genre WS INCONNU Vionnet Olivier HES SO Valais juin 2008 121 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEEE 2000000000000000000000000000000000000000000000000000000000000000000000000000000004e Hf VALAIS 200000000000000000000000000000000000000000000000000000000000000000000000000000000e Hes So WALLIS SL a dE EE D D EE ddr Dh 2000000000000000CO0OCL0OCCC0COCCOCOCCROLCCLCRCOCCCOLOLOCC0C00000000000000000000000000000000e 13 6 Technologies utilis es 13 6 1 Web Services Un web service impl mente un moyen de communiquer un moyen de d crire les services expos s et un nom ainsi qu un r pertoire qui permet de publier sur un serveur de catalogue des web services Communication SOAP Dans les web services les interactions sont bas es sur le SOAP ce qui leur permet d changer des messages avec une norme standardis e en XML et de lire les messages XML et de les traduire en action effectuer Description des services WSDL Le WSDL permet de d crire les services de mani re standardis e En l utilisant cela permet de d finir l interface de programmation du web service qui est traduit en m thodes Chacune de ces m thodes peut prendre un message en entr e et retourner un autre message comme r ponse Le WS
149. affichage de type page Il affiche en bas un slider pour augmenter ou diminuer la taille du texte ainsi qu une petite navigation permettant de passer d une page l autre WW Window Ce Label afiche du texts FlowDocumentPageViewer contient un FlowDocument avec du texte a WW Window Ce Label afiche du texte er contient un d2de4 gt a a 1 D mb bb ee bb ee ee ee ee eee eee eee eee eee cl e FlowDocumentScrollViewer pour un affichage avec une scrollbar exemple un contrat de licence WW Window Ce Label afiche du texte FlowDocumentPageViewer contient un FlowDocument qe E swan ena teeta A Tissus maine 13 6 5 ToolBar 13 6 5 1 ToolBar ToolBarPanel et ToolBarTray En g n ral ces l ments s emboitent de la fa on suivante un ToolBarTray contient un ou plusieurs Toolbars qui peuvent contenir un ToolBarPanel Le ToolBar est un conteneur pour stocker des commandes ou des contr les la barre d outils dans office par exemple S1 la taille est plus petite que la taille totale n cessaire pour afficher tous les contr les les contr les restants peuvent tre appel s en cliquant sur la fl che a la fin du contr le Vionnet Olivier HES SO Valais juin 2008 142 217 oe VALAIS secccccccccccccccccc cece eee e eect eee eect eee eee eee s cesses ees eseeeseseeessseeeeeeees oe Hes so I WALLIS See EE Ee EES EE ee JL 2000000000000000000000000000000000000000000000000000000000000
150. age d erreur Je pense que l erreur vient du serveur Si les symboles que j ai utilis s n existent pas je pense que j aurai d recevoir un autre message Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application chec R sultat g n ration wizard G n ration de l application r ussie Utilisation de l application chec TopLists Book LastExecution LastExecutionByMillisecondsAfterMidNight LastExecutionByReferenceNumber LastExecutionByTime StatsSymbol Quote Input String id 83 nameMember Symbol CELL Output Obj QuoteList Obj Quote String id 86 nameMember Symbol String id 87 nameMember DateTime Decimal id 88 nameMember MatchedShares Double id 89 nameMember Price G n rer tem Web Services Protocols SospException Server was able to process request gt System Exception Error cured please try again later If problem exist contact Vionnet Olivier HES SO Valais juin 2008 54 217 Hes SO 200000000000 000000000CCCCOROCCOROCCOCCOCOCOCCCCOCCOCCOCLCLOCLC0C0CLC0C0CC0000000000000000000e 3 gt VALAIS e eeeeeeeceoeeoceoeeeooeoeeescoeeoeceeoeeeoeseeoeseeeeeees 6 gegegegeegeggeeeggegegggegggggegeggegeeeee WEE EE 6 2 7 Statistics Effectuer des op
151. aire du WSDL 2 0 une recommandation http www infog com news 2007 07 wsdl 2 recommendation Post sur le forum MSDN concernant le support WSDL 2 0 dans WCF 3 0 3 5 http forums microsoft com MSDN ShowPost aspx PostID 2243560 amp SiteID 1 Articles parlant du WSDL http searchsoa techtarget com tip 0 289483 sid26_gc1811272 00 html http www developer com services article php 10928 1602051 1 D finition du terme Namespace http en wikipedia org wiki Namespace http microsoft supinfo com def 12306 What Is Windows Communication Foundation http msdn2 microsoft com en us library ms73 1082 aspx Introduction Windows Communication Foundation http webman developpez com articles dotnet wcf intro Introduction Windows Communication Foundation http vincentlaine developpez com tuto dotnet wcf Programmez Hors S rie NET Octobre Novembre 2007 D finition du XAML http fr wikiped1a org wik1 XAML 13 8 2 Applications plugins permettant recuperer le contenu WSDL Feature Specifications for Visual Studio 2008 and NET Framework 3 5 http msdn2 microsoft com en us vstudio aa94885 1 aspx WSCE Web Services Contract First http www thinktecture com resourcearchive WSCE D mo sur le fonctionnement et les possibilit s du plugin Vionnet Olivier HES SO Valais juin 2008 206 217 VALAIS secccccccccccccccccc cece eee ee eee eee eect eee eee ones eesee ees eseseseseeessseeeeeeees Hes so WALLIS EE
152. ais a m a permis de constater qu il ne m est pas possible de traiter ce web service correctement Pour l op ration ItemSearch Il semblerait que le traitement soit beaucoup trop gros pour que mon application arrive traiter les op rations il est galement possible qu il y ait des bugs dans la g n ration du fichier XML arriver a une taille d passant les 10Go c est anormal Vionnet Olivier HES SO Valais juin 2008 63 217 VALAIS seeccccccccccccccccc cece eee eee eect eee cette eee esse esses eseeesesceessseeeeeeees Hes so WALLIS sccccccccccccccccccc cece cece cece eee eee e eee e ee eee eee e eee eee eee eee eceeNeeeseeeS Ah EAR 00000000000000ve 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e En g n rant l op ration help la cr ation du fichier de donn es XML c est bien pass e noter qu il y a tout de m me pr s de 250 l ments en comptant les objets et les types standards Par contre la g n ration de l application a chou e Le probl me survient a partir de la ligne 3633 du fichier C Je tente d acc der des objets qui n existent pas ces objets sont d clar s dans une boucle for En mettant en commentaire les lignes 3633 4074 puis en g n rant la main l ex cutable la g n ration a r ussi mais je ne sais pas si l utilisation fonctionne je Dn a pas compris comment fonctionne cette op ration Je pense que le probl me se situe dans le te
153. ais et de recherche de solutions fen tre XAML un probl me au niveau du code sur le net sans succ s at trouv la cause g n r certaines balises ont un attribut Pour avoir une fen tre il faut avoir une d claration CCGG suppl mentaire xmlns ce qui donne des erreurs dans ce style urls supprim s lors du build avec msbuild lt Window x Class WPFHello Windowl xmins xinlns x Title Windowl Height 300 Width 300 gt Il semblerait que le namespace xmins x et xmins influencent le XSLT et que dans les templates qui suivent il n y a pas d informations En essayant a trouv une solution qui semble tre la bonne Dans la d claration du stylesheet du fichier XSLT J ai rajout les r f rences qui sont utilis es par Window xmins x http schemas microsoft com Vionnet Olivier HES SO Valais juin 2008 166 217 Hes SO VALAIS ZE RE EE EE Jusqu a pr sent je n ai pas trouv d exemples sur la g n ration de code XAML win fx 2006 xaml xmins http schemas EES Ent winfx 2006 xaml presentation Pas beaucoup de choix que d essayer et de modifier les fichiers au fur et mesure que les probl mes arrivent Vionnet Olivier HES SO Valais juin 2008 167 217 Hes so Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 16 Woche 08 0
154. aitement qui doit tre effectu IServicel cs Contient 2 l ments Le premier est l interface contenant le ServiceContract C est ici qu il faut lister toutes les op rations que peut faire le web service un peu la mani re d un fichier h en cpp Chaque op ration doit tre pr c d e de l information OperationContract sinon l op ration ne sera pas disponible Le 2 l ment est optionnel Il s agit du DataContract qui d finit pour chaque classe personnalis e comment elle est structur e Chaque propri t doit tre pr c d e de l information DataMember afin qu elle puisse tre s rialis e Pour faciliter l utilisation modifier dans les propri t s du projet le port du serveur de d veloppement sur lequel on peut atteindre le WSDL J utilise par d faut le port 1999 Exemple Une op ration getPersonne prend comme param tre un objet Personne qui est transform par le web service avant de renvoyer l objet Personne Cet objet Personne contient un nom et pr nom de type string l ge de type int et son genre qui est un type Genre nume Service svc cs using System using oystem Colleceions Geneuuc sing EE no Using oyotem kuntime Serlalization using System ServiceModel sing oystem lexi namespace WcfServicel public class Servicel IServicel public Personne getPersonne Personne p Vionnet Olivier HES SO Valais juin 2008 118 217 Cat IESEL H
155. alais juin 2008 17 217 Hes so VALAIS EE ee P TER EE SE EE EE EES lt l et Custom gt Enum gt amp lt xsl for each select uneDimension output gt public void setUCValue String str See creins wie Clam teresa Cleeve O lt Poser les ComboBoxs dans le panel avec ses valeurs gt ComboBox cb null Mii olor cachi eelco Enum OUTPUT Cr Selten SVStem EE EE EE ORNE EE EE cb mew ComboBox ch Name T k l aaa ue o selleen aa e EE gt For aae a Og EE E N or een EE ComboBoxItem cbi new ComboBoxItem Chi Content enumSirArraylil co Ptems Add cbi gt BEE ic Co Items Steng Ek aere Ee ee Ee lt S lectionner le bon index gt ENEE Boolean isSet false while cpe Lle CDARA ake EE Coume le CDATA Camo camp 49E lisSet ComboBoxleem Cbi ComboBoxitem ic cetCitemat cpt EES EE EE LOS rng O Elo eraa EE ch SelectedIndex cpt isoet ele j CHE amp lt xsl for cachgi cle xsl or eae M me op ration que pr c demment sauf que l on a un tableau parent Apr s avoir enlev tous les contr les que pourrait avoir dans le StackPanel un objet de type ComboBox est cr pour viter d avoir par la suite un m me nom de variable dans une boucle Le nombre de ComboBox mettre est d termin par le String pass en param tre Cette information est obtenue en splitant le String pour en faire un ta
156. ans quel contexte emplacement on se trouve complete ou abr g e J utiliserai uniquement la version abr g e qui est la plus simple a utiliser Dans le cas d un fichier XML avec la structure suivante lt xm1l11 gt lt xm 2 gt Contenu dont il faut afficher les valeurs Sl 2 lt xml1 gt Pour parcourir on utilise un for each avec comme select xml1 xml2 Si l on rajoute maintenant entre xml1 et xml2 un nouveau niveau la recherche ne fonctionnera plus lt xml1 gt Jk L 5 gt lt xm 2 gt contenu dont il faut afficher les valeurs ne lt lt Sond 1 lt j cL Soit on sp cifie tous les n uds a parcourir xml1 xml1 5 xml2 soit on peut omettre un n ud celui du milieu xml1 xml2 On peut galement uniquement pr ciser le dernier n ud xml2 Attention toutefois dans ce dernier cas il s lectionnera tous les n uds portant le nom xml2 quel que soit la profondeur dans laquelle ils se trouvent En utilisant un value of on peut afficher le n ud courant ou d autres informations Voici quelques possibilit s Vionnet Olivier HES SO Valais juin 2008 152 217 Hes so root lt node id al height 50 gt a lt exemple gt eee lt exemple gt VALAIS WALLIS self eeeeaee eee seeeeceeee eee eeeeeeeeeeseeceeeese eee eeceeeeeeeeeeeeeeeeeeceeeeeeeeeeeeeeceseseeeee 000000000000000000000000000000000000000000000000000000000000000000000000000000006e 2000000000 0000000000000000000000000
157. arne cb af o Du SS is a pathExec cscPath vg xdg E Methods csprojxMLFileName Y Da customClassList mlDataGeneration data MLFileName Class FinalQutputDirectory OC Fields activateTopMenu 3 button_launchExec_ Click 2 bw utomatique_dowork aY bwautomatique_progressChanged 3 bwAutomatique_runvWorkerCompleted gw bwTest_doWork a bwTest_progressChanged gY bwTest_runworkerCompleted g bwwWizard_doWark P gener ationFolderName msbuildGenerationFilePath msbuildP ath namespaceGeneratedClient operationsList app ssembls rras csproj ssemblyarray dejaFaitarrayilist FinalQutputDirectory generationFolderWame im LR SSS SS SSERDEE el a et se O busi a dg a g bwwizard_pragressChanged proxyFileName 7 a namespaceGeneratedClient a bw Wizard _runvworkerCompleted tempFolderName g a nunitcsprojassembly array re initwindow co userControlFolderName ef nunitObjectClassAssembly 3 Menultem_Automatique_Click aE windowNameseneratedClient a nunitTestClassAssembly a menultem_RapportErreur_Click E Properties a tempFolder Name 3 Menultem_Test_Click n Gc Ei uniqueParani pt 3 Menultem_Wizard_Click 87 GenerationFolderMame Bu userControlFolderName ch SEH E Methods 8 aW windowAssemblyarray e Ne CommonGeneration SC PTE o generatelt rg generatesSpecialWizard mlUCFile bi updateStatusBarltem r generateUCTuning Boolean Come Window r generateUCTuning_ Boolean Complex 7 r generateUCTuning_
158. ation de diff rents objets n cessaires avec les donn es de l utilisateur afin d avoir disposition toutes les informations structur es comme l attend l op ration du web service traiter le retour du web service en d composant les objets en types standards pouvant tre affich dans l interface utilisateur S1 le d veloppeur souhaite tester le web service en utilisant diff rents jeux de valeurs 1l faudra qu il les teste un un ou bien qu il d veloppe un nouveau projet sp cifique pour le traitement qu il souhaite r aliser Au final le client demande du temps pour tre d velopp Si en plus le web service contient plusieurs op rations le temps s en trouve rallonge Vionnet Olivier HES SO Valais juin 2008 2 217 WALLIS GE ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 20000000000000000000000e 20000000000000000000000000000000000000000000000000000006e VALAIS Hes so WALLIS 0000000006 0000060066006000000600006000600000C 000000000000000000000000000000000 c 200000000000000000000000ce bh A EE bh ZE EEEEEEEERE Kb A EAR 200000000000000000000000000000000e C est pour r soudre ce probl me que ce travail de dipl me a t r alis Il faut offrir au d veloppeur un outil qui soit param trable et qui lui permette de cr er une application cliente rapidement pour tester le web service qu il a cr Cet outil doit s occuper de g n rer une application cliente en se basant sur le d
159. avec le binding SOAP pour traiter les cas HTTP et les param tres que je tente d envoyer sont des strings le traitement de r cup ration des types est juste mais la partie SOAP attend des param tres qui sont d un autre type Au final je me retrouve avec des param tres strings et je ne sais pas en quoi il faudrait les convertir La solution et encore plus vu que svcutil n arrive pas g n rer les parties HTTP c est de ne pas prendre en compte les bindings HTTP Le 2 probl me est plus ennuyeux Je suis encore tomb sur un type de donn es auquel je n avais pas pens les num rations C est ce qui fait planter la g n ration de code XAML A noter que l on peut avoir des Enum rations ou encore des tableaux d num ration Bref c est un gros morceau qui va prendre du temps impl menter et vu que l on approche de la fin a va tre short Ce que je vais faire Corriger le code de r cup ration des types pour prendre en charge les types Enum et Enum Etant donn qu un Enum peut prendre n importe quel nom il faut que je puisse faire la diff rence entre une num ration et un type custom Pour le fichier xml data si je rencontre un Enum il aura un attribut suppl mentaire specialClass not Enum ou Enun lt type id 2 name Enum1 nameMember En1 specialClass Enum gt Au niveau du template pour le XAML les changements devraient tre minimes donc je vais impl menter Enum et En
160. bar Lors de l ex cution 2 threads j obtiens l exception System InvalidOperationException thread non propri taire Vionnet Olivier HES SO Valais juin 2008 24h Description de la solution si trouv e Beschreibung der L sung wenn gefunden En consultant le blog de Simon Boigelot http www simonboigelot com post SystemInvalidOperationException thread non propri C3 A 9taire aspx at appris que dans WPF chaque thread qui cr e un objet est le propri taire Pour pouvoir faire une modification 1l faut pouvoir int ragir avec le thread qui a cr l interface C est l qu intervient le Dispatcher il permet d ajouter une op ration faire dans le thread Je me suis bas sur cet exemple pour r soudre le probleme et mettre a jour le statusbar 172 217 M NALAIS Hes s O WALLIS ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEEEIEEEEEERE 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e 2000000 000000000000000000000000000000000000000000000000000000000000000000000000000e 20000000 000000OCCO0OC0CCCOCCOCOCCROLOCCOOCCCOCCCOLOLOCC0C00000000000000000000000000000000e Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 19 Woche 29 02 2008
161. bleau et il est parcouru pour mettre chaque entr e le contr le A chaque fois il faut mettre les items du contr le puis l ajouter au StackPanel et finalement s lectionner le bon index A noter que le nom du ComboBox n est pas n cessaire au final a donne un string vide S il y a 2 tableaux d objets personnalis s qui sont les parents See ser Custom gt Custom gt Enum gt amp lt xsl for each select deuxDimension output amp gt public void setUCValue String str a creo epes Clon leleen C lose iy Vionnet Olivier HES SO Valais juin 2008 eeeeee eee seeeeeeeeeeeeeeeeeeeeeeeceeeee eee eeceeeeeeeeeeeseeeeeeeceeeeeeseeeeeeeeceseseeeee ES H WAART pa eS S0 waits BEER lt Poser les ComboBoxs dans le panel avec ses valeurs gt ComboBox co null EE Enume Soupe Sear ENEE EE ee ey VS Len otr ingo Plito ption ReMOvVehMp er E El mone alge ce aaah eles yO DATA nie ra ene MEME VE moine Label lb new Label Io Concent wrol RUE i A E Ee lue Ie Clava E ee Ne SE EE I na e Mocs EE Elte Ee Ehe SYSteM EE EE ENEE EE Koerech EE NU Re EE ON CDN SES Me EE EE cb new ComboBox ch Name MES leva ue lge ee cool ecrire 48 PRetiece tenu tmpzArray j tmp2Array Replace LOC Clie k 0 wit CDA T eelere ComboBoxItem cbi new ComboBoxItem Cou COnbeme enum o trArraylk eb Ttems Add cbi Itemcollecrron ic Ch Items Sica
162. bservicex net stockquote asmx wsdl Exemple Exemple avec DELL A noter que le r sultat re u est un string les donn es sont du XML Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie Vionnet Olivier HES SO Valais juin 2008 56 217 em ab AE EEEKEEEEEEKEEEEEEEEEERK eege eegeeg 2000000000000000000000000000C0000000000000000000e f F I LAIS EE e Hes so WALLIS 0000000000000 SOCSHSSSSSSSSSSSSSSSSSHSSHSSSSSSSOSSSSESESEES SSCSHOSSSSSSSOSSSSSSSOSSSESOEESES 2000000000000000000000000000000LO0O00000000000000000000e 000000000000000000000000000e String id 1 nameMember symbol DELL Output String id 2 nameMember lt StockQuotes gt lt Stock gt lt Symbol gt DELL lt Contenu de output lt StockQuotes gt lt Stock gt lt Symbol gt DELL lt Symbol gt lt Last gt 23 06 lt Last gt lt Date gt 5 3 0 2008 lt Date gt lt Time gt 4 00pm lt Time gt lt Change gt 1 25 lt Change gt lt Open gt 23 50 lt Open gt lt High gt 23 945 lt High gt lt Low gt 23 05 lt Low gt lt Volume gt 78497624 lt V olume gt lt MktCap gt 47 095B lt MktCap gt lt PreviousClose gt 2 1 8 1 lt PreviousClose gt lt Percentag eChange gt 5 73 lt PercentageChange gt lt AnnRange gt 18 13 30 77 lt AnnRange gt lt Earns gt 1 3 12 lt Earns gt lt P E g
163. cas pour l application g n r e 9 8 Choix des bindings Vionnet Olivier HES SO Valais juin 2008 97 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000000006000600 0006 00000000000000000000000000000000 Ah A EAR 200000000000000000e bh A EE 000000000ce Kb A EAR 200000000000000000000000000000000e Il y a 2 probl mes pour les bindings Le premier vient de l outil svcutil 11 envoie une erreur lorsqu il faut traiter des bindings de type http Vient ensuite le cas o il y a plusieurs bindings possibles SOAP 1 1 et SOAP 1 2 Par d faut l application ne prend en compte que le premier qu il trouve Rien n a t pr vu pour les cas ou il y aurait plusieurs bindings Il aurait fallu faire en sorte de demander a l utilisateur le binding qu il souhaite utiliser 10 Evaluation de l application Dans l ensemble l application r pond aux objectifs qui ont t fix s Elle permet de g n rer une application dont l interface utilisateur est compos e d l ments XAML ainsi que le code behind en C bas e sur la description WSDL de web services Il est possible de personnaliser le client g n r en choisissant les op rations du web service que l on souhaite int grer et pour certains types d utiliser un UserControl diff rent pour personnaliser
164. cccccccsasssseeccccceeccaaesseeecccceeccaaseeeeecceeessauaeeeeeceeeeesuaaeeees 80 7 3 1 WCFCalculator is 80 7 3 2 KE acces es RE EE 81 T et re CH E en 89 7 4 1 a kG e 90 7 4 2 ANCE POr ONE ne 93 G Eiman OS TAC aO e E E causes 95 8 1 Profondeur des tableaux de type personnalse 95 82 WED SEES avec E 95 Ca VCS PPPO r E E I E E 95 SA ee NUNG codes aa E 95 8 5 Retransformer un UserControl sp cial 96 8 6 Taille des tableaux dans un UserControl sp cal 96 8 7 TimeOut des r ponses du web service pour l application g n r e n 96 D Bo OI eet E 96 OA Generation de code CF in nn aE A T EEE a Ende Zeene 96 92 Codepourles CR Ra CC 97 ko COMBO MECS N E nner E ee re ee 97 94 Diff rents clients dams eegene 97 Do Droo e AUS A EE E AE E TOE A 97 Vionnet Olivier HES SO Valais juin 2008 214 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE 2000000000000000000000000000000000000000000000000000000000000000000000000000000006e e PERRET ee k ec Ss S O WALLIS oeeeeeeeeeeegeeeeeeeeeeeeee 0000000000000000000000000000000000000000000000 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e 9 6 Fen tre de s lection des op rations cc ceeeecccccccecccaesseeeccceeeeeeeseeeececeeeeeeaaeeeees 97 9 7 Fen tre de s lection des UserControls dans le wizard ccccceeeeccccceeeeeeeeeeees 97 Dor COU CES DI
165. connu du dictionnaire at une r ponse en retour sans erreur Je ne sais pas encore pourquoi a fait ceci si c est normal et si ce n est pas normal s il y a moyen de corriger Remise z ro des champs de sortie dans l application g n r e actuellement si j utilise plusieurs fois la m thode du web service les champs ne sont pas remis avec aucune valeur Je ne sais pas encore comment je vais r soudre ce probl me Prochaine tape Essayer de r soudre le plus rapidement les probl mes non r solus et tester avec d autres web service puis ensuite faire les modifications dans la partie test Total 39h Vionnet Olivier HES SO Valais juin 2008 174 217 KIT Hes so waits EE Dana GE Hes so WALLIS socccccccccccccsccessccosscccscccocececoscooscococsoso coscososoosoooessooososoeess bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEKEEEEEEEEAEEUEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 20 Woche 10 03 2008 13 03 2008 D compte des heures hebdomadaires Deklaration Wochenstunden T che Aufgabe Heures Stunden Suite la s ance du 10 avril voici le programme pr vu 1 Sortir quel serait les l ments rendre param trable dans la partie wizard qui ne le sont pas actuellement dans la g n ration automatique sans tomber dans la cr ation d un g n rat
166. continuer son traitement et d clencher une exception plus loin J ai modifi de fa on a stopper le traitement de l application lorsqu il y a des erreurs cl s l ou l erreur entraine un plantage plus loin dans application Dans certains cas je ne peux pas me baser sur les erreurs provenant d un traitement de processus par exemple le cas du svcutil si le web service contient des bindings http get ou post j ai des erreurs qui sont logg es mais la g n ration du proxy a tr s bien pu se passer correctement et ces erreurs n entrainent pas ensuite un plantage de l application Dans ce cas l erreur est not e mais n est pas consid r e comme tant fatale Am liorations Pour la g n ration automatique et Wizard si la g n ration r ussit J affiche dans la fen tre principale un bouton pour lancer l application g n r e il n appara t que sil y a l ex cutable qui a t trouv physiquement Suite du travail Continuer le refactoring Terminer de documenter tout le code il me reste encore une 60aines de m thodes constructeurs classes traiter sans compter la partie xslt J ai cette information parce que j ai modifi dans les propri t s du projet la partie build je g n re maintenant galement chaque build la documentation xml dans le dossier bin Debug Wpf ClientGen XML Il me reste encore contr ler la documentation des fichiers xslts Une fois finie je relanc
167. custom2 double custom string custom2 double string custom string custom2 double Boolean string custom string custom2 custom3 string custom string custom2 custom3 string int Boolean custom string custom2 custom3 string void retour string custom string custom2 string custom3 int custom string custom2 string custom3 int custom string custom2 string custom3 int custom string custom2 string custom3 string custom string custom2 string custom3 string custom string custom string custom3 string double custom string custom2 string custom3 string double string enum retour enum custom string enum custom string enum custom2 string enum2 custom string enum Le d l string custom2 string custom3 string enum string custom2 string custom3 string enum custom string custom2 string custom3 string enum string enum retour enum custom string enum custom string enum custom2 string enum custom string enum custom string custom2 string enum custom string custom2 string custom3 string enum custom string custom2 string custom3 string enum custom string custom string enum custom string custom2 string custom3 string enum e Sur une dur e aussi longue il
168. d faut ils sont cach s Red marrer Visual Studio et ouvrir une application WPF La toolbox sera r mitialis e automatiquement 13 3 3 Visual Studio 2008 Professional Au niveau de l installation rien de particulier signaler il suffit de suivre le wizard d installation Au pr alable il a fallu d sinstaller tout ce qui tait issu de la version beta de Visual Studio 13 3 4 MS Project La version 2003 a t utilis e Probl me rencontr Des probl mes pour sauver le fichier dans d autres formats par exemple en htm Cela vient du fait que Windows le SP 3 et que MS Project n avait que le SP 1 d install et certains formats sont bloqu s Pour r soudre le probl me Va d installer le SP 3 pour MS Project et ensuite j a1 pu sauver les fichiers dans le format que je souhaitais 13 3 5 SDK 6 0A et 6 0 Le kit de d veloppement qui contient svcutil Il est install en m me temps que Visual Studio 2008 13 3 6 Notepad Petit diteur de code source qui supporte diff rents langages et permet d avoir une meilleure vue des l ments que dans le traditionnel Notepad Site officiel http notepad plus sourceforge net fr site htm 13 3 7 Microsoft Expression 2 0 beta Cette solution permet de designer des crans l arrangement et le contenu faisant un peu penser Photoshop d Adobe Ce programme a t utilis dans l optique de d couvrir comment faire des tableaux avec diff rentes c
169. d Hes so tht FRS oe EE seg sse o Fachhochschule Westschwei 1sity of Applied Sciences Western en nd Travail de dipl me 2008 Fili re Informatique de gestion WSDL to XAML Etudiant Olivier Vionnet Professeur David Russo Michael Schumacher www hevs ch Hes so eeeeaee eee seeeeeeee eee eeeeeeeeeeseeceeeese eee eeceeceeeeeeeeeeeeeeeeeeeeeeseeeeeeeeceseseeeeee VALAIS 6 eeeegeegeegeegeeeeeeegegeeggeeeeeeegeeegegeegegeeeegeeeeegeeee 6 eeeeeeeegeegeeeg 6 egegeegeeeee eeece Sommaire OO ee ee eee ee eee 2 2 Fonctionnalit s de l application 888 3 MM 2 166 01216 AUN e e ene E a de 5 a sequence des traitements de U app Me 26 Du Co 11 9 sci Ee 31 DEE 47 T Manuel d utilisation de 1 ureegen eege 71 S AeA AOI EE eebe 95 2 Bop OU PRONG ISS E 96 10 Evaluation de Tappleatton 98 11 Bechtold 99 12 CON NS E 99 13 RSS E E PE E E E AE ETE E E O E PE E E 101 14 KE 213 1 Introduction Fin 2006 Microsoft a sorti la version 3 0 du framework Net suivi une ann e plus tard de la version 3 5 Dans la version 3 0 on note entre autres l arriv e de WPF Windows Presentation Foundation qui est le nouveau syst me destin l interface utilisateur qui utilise le langage de description XAML et WCF Windows Communication Foundation qui est le nouveau syst me oriente service pour communiquer entre differents composants applicatifs
170. d en compte les informations de la propri t Margin 13 6 3 7 DockPanel Le DockPanel permet de positionner les l ments enfants horizontalement ou verticalement Les l ments enfants utilisent la propri t DockPanel Dock pour se positionner a droite gauche haut ou bas A noter que la d claration des l ments dans le fichier XAML influence l affichage Grid lt DockPanel gt lt Border Name borderl DockPanel Dock Top gt lt Label Name labell gt Top lt Label gt lt Border gt lt Border Name border2 DockPanel Dock Left gt lt Label Name label2 gt left lt Label gt lt Border gt lt Border Name border3 DockPanel Dock Right gt lt Label Name label3 gt Right lt Label gt lt Border gt lt StackPanel Name border4 DockPanel Dock Bottom gt lt Label Name label4 gt Bottom lt Label gt lt Label Name label5 gt Bottom lt Label gt lt Label Name label6 gt Bottom lt Label gt lt StackPanel gt lt DockPanel gt lt Grid gt D claration Top Left Right Bottom D claration Top Bottom Left Right L el Ki Top Top left Right left Bottom Bottom Bottom Bottom Bottom Bottom LT LE Tout comme le StackPanel on peut sp cifier un alignement vertical ou horizontal 13 6 3 8 WrapPanel Le WrapPanel permet de poser des l ments dans un ordre de gauche droite par d faut Si la largeur n est pas suffisante les l ments
171. dda 2 Vionnet Olivier HES SO Valais juin 2008 91 217 Hes so Wiis so SSassssosssssssssssssscssssssessessssssssssssessssssssssssssssssssssssssessssssss Assert AreEFqual 6 objC add 4 Ee quick GO oly add Asc ert o eater O ob add 9 Test PULTE void tesi div NumeeObiectr oD rev NuncoObiecr or Mesert rretaual io Chi did MO FAUX CIM AsserL Arekqgqual EE Asc cert SNN Ob Chants MEN Test Suse EE Nuna tope cE ob new NummrObycer 2SS rt Ar liebe ICs ele RE Ee EE Ascites Acok Ee seconde EE io a Test Pare e E o E Numme byoece sobs C new Nuni beci Assert sAcenoucll 2 oby soustr 4 2 Assert hace EE Ascert Arekgqual l obJC soustr s Ip DE e 7 Le r sultat affich est le suivant W R sultat des tests unitaires S1 le r sultat para t trange 1l est possible d aller consulter le fichier de r sultat XML g n r par NUnit Il se trouve dans le dossier C temp3 finalOutput lt dossier de g n ration gt bin Release NunitResult xml Vionnet Olivier HES SO Valais juin 2008 92 217 y VALAIS SSCSHSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSESSSSSSSSSESHSSSESESSSESSESSESEeeeese em f se H f 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e se Hee Co WALLIS eeeeeoecea eo oe ee eeceeeeee eee eeeee eee eee e eee eee eee eee eeeeeeeeeeesee eee eeeeeseeeeeeee eee ee 6 ee d
172. de output1 LEON col CLS ECM lt xsl when test contains name and not name String and not name Double and not name Boolean and not name Single and not name Decimal and not name Into4 and not name Int32 and not name Intlo6 and not name Byte and not name UInt64 and not name UInt32 and not name UIntlo6 and not name SByte and not name DateTime and not name Object gt 7 7 Custom Ce test doit permettre d viter que le code de traitement qui suit soit crit car lorsque l on arrive la premi re fois dans cette partie il n y a jamais d anc tre qui est un tableau d objets personnalis s Tout le traitement pour les enfants se fait l int rieur Mais comme il y a des apply templates effectu s tot ou tard le traitement va s occuper des enfants du tableau personnalis Or ces enfants auront d j t trait s et il ne faut pas les retraiter une seconde fois Ce test doit permettre d viter ce probl me Le bug se situe sur la fa on de contr ler s il y a un anc tre qui est un tableau personnalis Il faudrait modifier comme suit EE Nor lconteins a Lame Klerus Vionnet Olivier HES SO Valais juin 2008 96 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEEEEEIEEEUEEUEEEEIER 00000000000000e 20000000000000000000000e 20000000000000000000000000e 0000000000000e 00000000e h A EE Nf VAL
173. deA2 id a4 gt lt nodeA2 gt mode lt nodeBl id a5 gt lt nodeBl gt lt nodeBl id a6 gt lt nodeBl gt root Le template XSLT suivant a t utilis lt xsl template match gt SIN root prends tous les n uds contenu dans root peu amporte leur position lt xsl for each select root gt lt Appliquer le template portant le nom pring gt lt xsl call template name print gt SE Ee GE lt xsl template gt lt xsl template name print gt lt Afficher le parent son nom et l attribut id le noeud en cours pour IMargument Parent eu a a a Ee Ee Ee Enfant lt l boucle pour parcourir tous les entants du noeud courant les petits enfants apparaissent parce que l on parcours ensuite chaque enfant gt lt xsl for each select VE lt xsl value of select name gt lt xsl value of select id gt lt xsl teri es irc Ses Cine lt xsl template gt Entre les diff rents exemples qui suivent seul l l ment soulign et surlign en jaune a t modifi ainsi que les textes crits en dur Parent et Enfant Child Permet de trouver les enfants du n ud courant Pour les afficher une boucle for each avec comme select child permet de r aliser cette op ration Vionnet Olivier HES SO Valais juin 2008 154 217 Hes so Sortie Parent Parent Enfant nodeA3 Parent Enfant Parent Enfant Parent Enfant Parent Enfant Parent
174. deDom ne conviendrait pas La preuve en code avec un exemple tir du site techheadbrothers com pour g n rer une m thode Creation d un constructeur avec parametres CodeConstructor ParamCtor mew CodeConsteructor ParamCtor Comments Add new System CodeDom CodeCommentStatement le constructeur avec paramtres J Aeti ination de i artrimoe d acces ParamCtor Attributes MemberAterububes Public Definition des parametres d entrees age et nom CodeParameterDeclarationExpression cpd new CodeParameterDeclarationExpression typeof string nom CodeParameterDeclarationExpression cpdl new CodeParameterDeclarationExpression typeof int age ParamCtor Parameters Add cpd ParamCtor Parameters Add cpdl Produit Tale ji ioes ioe Se ae aneao CodeFieldReferenceExpression fieldRefName new CodeFieldReferenceExpression new CodeThisReferenceExpression codeMemberName Name CodeFieldReferenceExpression fieldRefAge new CodeFieldReferenceExpression new CodeThisReferenceExpression codeMemberAge Name CodeAssignStatement codeAssignName new CodeAssignStatement fieldRefName new CodeArgumentReferenceExpression cpd Name Vionnet Olivier HES SO Valais juin 2008 116 217 a EEEEEEEEEEEEEEAEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEEETEEER Kb A E KEKEEAEEKEAEEAK 00000000000000e 2000000000 0000000000000e 2000000000 0000000000000000000000000000000000000000000006e VALAIS Hes so WALLIS EE eo ii MMM A E E
175. dernier UserControl cr lt xml version 1 0 encoding utf 8 gt STOOR Hame peere lac EE E nemer Ee CE O ou a or eer ed clee oe Nen Ue bouole Ou gt lt importUsing type gt lt data type Double gt SEH lt data gt lt GOO Ligne 3 Namespace et classeName sont destin s pour la cr ation du fichier C Ligne 4 Est uniquement sp cifi si l UserControl qui doit tre cr est un UC sp cial qui est destin a un type num r sinon le framework ne pourra pas construire l application car il ne conna tra pas ce que contient le type num r Ligne 5 Le type de donn es concern Le dernier fichier est le fichier Window xaml xsit un fichier temporaire de transformation qui est utilis pour cr er la fen tre Window de l application Il contient par rapport au template Window vam 2 xsit l information sur le namespace que les UserControls utilisent cette modification est faite en r crivant le fichier car c tait la solution la plus simple 5 1 4 Dossier bin et obj Ce dossier contient le r sultat du msbuild g n ration d une application en mode debug C est dans bin Release que l on trouve l ex cutable de l application la dll du proxy qui est utilis e par l application et le fichier de configuration config qui porte le m me nom que l application exe 5 2 Generation wizard avec Enum et Boolean Pour illustrer cette partie j ai pris le web servic
176. dre beaucoup de place en largeur on peut d placer la colonne pour afficher plus de texte Vionnet Olivier HES SO Valais juin 2008 135 217 P M AUS GE de Hee Co WALLIS eeeeeoecea eo Ceeeeecee ee ee eee eeee eee eee ee eee eeeeee eee eeeeeeeeeeeese eee eeee eee eee eee e eee ee 6 ee dr 20000000000000O0O0OC00C0COC0COCCOCOCCLROLCOOCRCOCCCOLOC0OCCL0C00000000000000000000000000000000e On peut mettre le GridSplitter directement dans la colonne qui suit celle que l on souhaite rendre redimensionnable mais le contenu de la colonne dans laquelle il se trouve peut se superposer Pour viter ceci soit il faut ajouter une colonne de la m me largeur que le GridSplitter entre les 2 colonnes et d y mettre le GridSplitter ou dans la colonne qui contient le GridSplitter mettre un Border avec un espace entre le d but de la colonne et le d but de l l ment lt Grid Grid ColumnDeri na trons ColiUmmiDerint Lom EE Column Definit E lt ColumnDefinition Widths T228 gt Crid Column Derinit ions lt GridSplitter Name GridSplitterl Grid Column 1 Margin 0 0 0 0 HorizontalAlignment Left Width 10 gt lt Label Height 23 Margin 0 0 0 0 Name labell VerticalAlignment Top gt Label too long lt Label gt lt Label Grid Column 2 Height 23 Margin 0 0 0 0 Name label2 VerticalAlignment Top gt Label who got lot of space lt Label gt lt 7 Cia Etat Initiale de la fen tre M Window Apr s avoir d plac le G
177. du proxy vont tre int gr es dans un client qui n est pas un client WCF Svcutil exe WCE a introduit ce nouvel outil pour g n rer un proxy Les fichiers classes et le fichier de configuration qui sont g n r s sont con us pour l infrastructure WCF Tout comme Wsdl exe il est possible d utiliser Svcutil exe en mode console 13 4 1 6 Solution retenue L utilisation de Svcutil a t retenue pour les raisons suivantes e Il g n re de mani re fiable les fichiers proxy et config certainement bien plus que si je parse moi m me le fichier WSDL e Il est possible de l utiliser en mode console donc je pourrai l appeler dans mon application pour g n rer au bon moment les fichiers dont a besoin e Je d veloppe une application qui utilise le framework 3 0 donc svcutil doit tre utilis Vionnet Olivier HES SO Valais juin 2008 115 217 TTT Hes so Wai 00000000000000000000000000000000000000000000000000000000000000000000000000000000009 2000000000000000000000000000000L000000000000000000000000000000000000000000000000000e e R duit sensiblement le temps et la complexit de la r cup ration des informations du WSDL 13 4 2 Comment g n rer du code Pour g n rer le code il y a 3 possibilit s utiliser le StreamWriter CodeDom et XSLT 13 4 2 1 StreamWriter Cette solution consiste crire au fur et mesure le code dans un fichier texte Cette m thode va tr s bien pour g n rer rapideme
178. e g n ration avec MSBuild Proxy Name nom du fichier proxy Url Web Service emplacement du WSDL du web service que l on souhaite utiliser Namespace Name nom de l espace de nom de l application g n r e App Name nom du fichier app xaml cs Window Name nom du fichier window xaml cs Type de serialisation choix de la fa on dont les objets doivent tre s rialis s AUTO pour laisser l application se d brouiller DataContract WCF XMLserializer pour les cas o les donn es re ues sont mal trait es par exemple ArrayOfString au lieu de String Vionnet Olivier HES SO Valais juin 2008 191217 VALAIS EE Hes so Witte GE 7 1 2 Auto Client Assemblies E Configuration de l application Path Auto Client Assemblies Nunit Tests Assemblies Load Restore App Window Csproj Actuellement utilis s Actuellement utilis s Actuellement utilis s lv System N T M System M System vj System ru lw System Collections Generic M System Core 3 5 M System Configuration M System Ling M System 2untime Serialization 3 0 FF System Data M System Text M System ServiceModel 3 0 M System Ling M System Windows M System xml Ling 3 5 Je System Windows lw System Windows Controls M System Data DataSetExtensions 3 5 Core reesei ne lw System Windows Data M System Data IT M System Windows Documents M System xml or Iw System Windows Input lw WindowsBase Iw System
179. e les tests des asserts suivants ne sont pas effectu s e Un exemple avec une calculatrice Op rations disponibles sur le web service double add double al double a2 double div double al double a2 double mult double al double a2 double soustr double al double a2 Choix des op rations tester Vionnet Olivier HES SO Valais juin 2008 189 217 M NALAIS zess Hes SO wg GE WW jestWindow Liste des operations lach Double Double gt Double We div Double Double gt Double mult Double Double Double soustr Double Double gt Double Continuer Code g n r automatiquement pour la classe Object s occupe de faire les appels au web service using System using System Collections Generic using System Linq using System Text using System ServiceModel using System Runtime Serialization namespace WPFHelloCCC i class NunitObject d static void Main string args d j Service Client client new Service Client public Double add Double str_1 Double str_2 Appel WS et renvoyer le r sultat return client add str_1 str_2 j public Double div Double str_4 Double str_5 Appel WS et renvoyer le r sultat return client div str 4 str 5 j public Double mult Double str_7 Double str_8 Appel WS et renvoyer le r sultat return client mult str_7 str_8 j public Double soustr Double str_10 Double str_11 Appel WS et renvoy
180. e nom du membre Il faut galement mettre pour chaque type les diff rents UserControls disponibles une liste qui va permettre de s lectionner l UserControl qui sera utilis Un bouton va permettre de lancer une fen tre pour afficher le code XAML et CS du contr le s lectionn pour pouvoir modifier le code Comment a se passe lorsque le type est dans un tableau d objets C est la que l utilisateur devra intervenir au niveau du code si l UserControl utilis n est pas le standard Il devra mettre autant de contr les que la contenance du tableau Une fois toutes les op rations effectu es cr er l application attention aux l ments mis dans les UserControls et que les assemblies ne sont pas pr sents dans le csprojet par exemple Il y aura certainement des probl mes qui vont surgir et auxquels je n ai pas pens s mais 1 me semble que mon id e tienne la route 24h Vionnet Olivier HES SO Valais juin 2008 194 217 Bo GE ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEEEIEEEEEERE y VALAIS SOCSHSSSSSSSHSSSHSSSSHSSSHSSSHSSSSSSSHSSSSHESSSHSSSSSSHSSSHSSSHSSSSSSESSESSSSESESSSSSESESEEEEESE Hes so WALLIS EE Se te Dh dr ki ir Be Sant shy bi Otol di D Se ont dee Soy So nh So onde kb A EKEEEEKEEEEKEEEEEEEEEEEEEEEEAKEEEEEEEEEEEEEEEEEEEEEEEEEEEEUEEEEEEEEEEEEEEEETEEEEERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur re
181. e WCFPersonne son architecture est d taill e dans la partie Manuel d utilisation de l application Les types qui sont des num rations ou Boolean utilisent des UserControls sp ciaux Pour cette g n ration j ai s lectionn uniquement l op ration getArrayPersonne qui prend en param tre un tableau de Personnes et retourne un tableau de Personnes modifi 5 2 1 Window1 xaml amp xaml cs On trouve dans le dossier de g n ration tous les fichiers de donn es XML pour construire l application les fichiers de code g n r s et le fichier csproj Vionnet Olivier HES SO Valais juin 2008 36 217 Hes so TUE EEE EEE EEE WW DE EC RE ES EE CET ER PETER EES Pour le fichier XAML de l affichage le principe est le m me que pour une g n ration automatique Des GroupBoxs symbolisent les objets personnalis s et l int rieur on y trouve les UserControls Au niveau du code CH il suit le m me principe qu une g n ration automatique Ce qui est int ressant de voir 1c1 sont la gestion des diff rents tableaux et comment cr er les objets n cessaires pour arriver la signature de l op ration du web service et la fa on dont est d compos le retour de l op ration pour l afficher Tout le traitement est effectu dans la m thode de l v nement du bouton La premi re chose qui est faite est l initialisation des variables String qui vont r cup rer les valeurs de retour du web service et l effacem
182. e XPath navigation dans les n uds et comment effectuer des tests 13 6 8 1 Les l ments importants du XSLT lt xsl template gt Avant de pouvoir commencer traiter le document XML 1l faut s lectionner la partie du document qui doit tre trait e La s lection s effectue par rapport un n ud c est la qu intervient l attribut match Pour s lectionner le root soit on sp cifie ou le nom du root Chaque fois qu il faut descendre dans un nom enfant on utilise node node2 gt lt root gt lt node gt lt node2 gt On peut galement demander s lectionner des l ments quel que soit leur emplacement element s lectionne tous les l ments qui sont n importe ou dans le document x element s lectionne tous les l ments qui descendent de x lt xsl apply templates gt Pour que les n uds enfants soient galement trait s 11 faut utiliser l apply templates Il est possible d avoir besoin de traiter un n ud plusieurs fois mais de diff rentes mani res c est ce moment qu intervient l attribut mode L apply templates prend alors dans l attribut select le chemin du n ud traiter et l attribut mode contient le nom permettant d identifier le bon template prendre Le mode doit galement tre d fini dans xsl template lt xsl value of gt Extrait la valeur du n ud d fini dans le select lt xsl element gt Comme son nom l indique 1l permet de g n rer des
183. e base galement plus que sur le template xslt du wizard Par contre la g n ration du code XAML a un template s par pour la g n ration automatique et wizard Documentations et divers Total 24h Vionnet Olivier HES SO Valais juin 2008 204 217 Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 31 34 Woche 30 05 2008 22 06 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden e documentation Ecrire le rapport final mettre a jour la documentation du code pour la partie C qui sera g n r e avec SandCastle Effectu galement une nouvelle s rie de tests et quelques bugs ont t identifi s et certains corrig s Total 90h Vionnet Olivier HES SO Valais juin 2008 205 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEIUEEEEEEEEEIEUEEEIEEEEEERE Kb AE EEEKEEEEEEEEEEAKEEEEEEEEEEEEEEEAEEEEEEEEEEKEEEEKEEEEEEIEEEUEEEEZEEEIEEEEEIEEEEEEEEEEERE VOTE e Hes SO WALLIS 0000000000 000005005 00080000000000000000000000000000000000000000000 00000 13 8 R f rences sources livres 13 8 1 D finitions Site Internet du W3C http www w3 org Recommandation du W3C pour le WSDL 1 1 http www w3 org TR 2001 NOTE wsdl 200103 15 Recommandation du W3C pour le WSDL 2 0 http www w3 org TR wsdl20 Article InfoQ parlant l approbation du W3C pour f
184. e cette transformation pour envoyer les donn es 13 1 6 XAML XAML eXtensible Application Markup Language est un langage d claratif qui permet construire les interfaces graphiques des applications L norme avantage est de pouvoir s parer les l ments de description d interface des l ments de code ce qui permet de mieux r partir les t ches entre plusieurs d veloppeurs designers et simplifie le d veloppement de application 13 1 7 CodeDom Code Document Object Model Le CodeDOM est une API qui permet de g n rer du code source structure objets dans plusieurs langages de programmation lors de l ex cution Cette API est disponible dans le SDK du framework Net et permet de g n rer du C JScript et du Visual Basic 13 1 8 XSLT EXtensible Stylesheet Language Le XSLT est un langage de template qui permet de convertir un fichier XML dans un autre format par exemple du HTML en utilisant un fichier de transformation 13 2 Gestion de projet 13 2 1 Cahier des charges Le cahier des charges pour ce projet est le suivant e D velopper un g n rateur de fichiers XAML partir de descriptions de Web services en WSDL e D velopper une application qui int gre ce g n rateur et qui permette de cr er de mani re configurable des crans personnalisables e Cr er des fichiers de tests de base pour ces Web services qu un d veloppeur pourra tendre pour ses propres besoins e Ecrire une docu
185. e eee 6 6 20000000 000000OCCO0OC0CCCOCCOCOCCROLOCCOOCCCOCCCOLOLOCC0C00000000000000000000000000000000e Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 23 Woche 04 04 2008 10 04 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden e Correction du probl me si le Web service contient un binding http post ou get Ils ne sont plus pris en compte vu que svcutil ne traite pas ces cas e Impl mente les types Enum et Enum a a t moins difficile que pr vu donc j ai profit d inclure les tableaux d num ration e Correction d un bug dans le template parametre type mode inputArrayCust qui sert la cr ation d objets pour l envoi au web service une condition de test pour la partie contenant un tableau pour coder une boucle for prenait que le premier l ment enfant trouv pour d terminer quel compteur devait tre utilis pour la limite maximum d it ration Maintenant un count est fait sur tous les l ments enfants pour les types primitifs et complexes Si a correspond au nombre de n uds enfants Pid du compteur utilis sera le premier enfant Dans le cas contraire a prend l id de l enfant de l enfant car l un des enfants est un type costum e Correction d un bug dans la partie option si les dossiers par d faut n existent pas
186. e tous les tests des web services que j ai cr s pour tre certain que les modifications apport es au code n ont pas cr de probl mes A ce stade l application sera consid r e comme termin e Ca sera la version 1 0 Outil pour lire la documentation du code C est une chose laquelle je n avais pas pens mais qu il me semble int ressante de faire utiliser pleinement la documentation du code en proposant un outil de type chm qui permettrait de consulter la documentation plus facilement que de naviguer dans les fichiers de code ce qui pourrait rendre la compr hension plus facile du contenu de l application pour les personnes qui seraient amen es continuer ce projet Pour r aliser cet outil je pense utiliser les programmes suivants Sandcastle cr ation de documentation dans un style MSDN http www codeplex com Sandcastle http www microsoft com downloads details aspx Familyid E82EA71D DA89 42EE A715 696E3A4873B2 amp displaylang en Vionnet Olivier HES SO Valais juin 2008 201 217 WINS EE DocProject for Sandcastle Facilite l administration et le d veloppement de documentation faite avec Sandcastle http www codeplex com DocProject Je n ai encore jamais utilis ce genre de programmes donc c est l occasion de d couvrir et de tester tout a je pense que a devrait me prendre entre 6 et 12 heures suivants les probl mes rencontr s les programmes semblent tre encore
187. eaght 23 Margin 30 6 33 0 Name labell VerticalAlignment Top gt Label Tooltip lt AccessText FontSize 50 Background Chartreuse gt test lt AccessText gt lt Label ToolTip gt texte mer lt Label gt Dans la propri t ToolTip du label un texte a t mis lors du survol de la souris sur le label avec la taille de la fonte et la couleur d arri re plan ce qui donne le r sultat suivant texte ici 13 6 3 2 Markup Extension Par d faut le moteur XAML interpr te une valeur d attribut comme un string litt ral ou le converti en objet sur la base du type de l attribut Il se peut Vionnet Olivier HES SO Valais juin 2008 127 217 e DOT n Hes SO watts GE toutefois que la valeur de l attribut soit une r f rence d un objet d j pr sent statique ou non Pour ces cas l 1l faut informer le moteur que ce n est pas quelque chose traiter de fa on habituelle en mettant des accolades dans la valeur de l attribut et Dans cet exemple lorsque le markup extension est trait 1l retourne une r f rence d un style qui a d j t instanci lt Window Resources gt lt Style TargetType Border x Key PageBackground gt lt Setter Property Background Value Green gt lt Style gt lt Style TargetType Label x Key LabelBackground gt lt Setter Property Background Value Red gt lt Style gt lt Window Resources gt La fen tre dans laquelle o
188. ed ite xs Ge ER EE returnValue returnValue Substring 0 returnValue Length 2 returnValue elt oea ES HE EE on gt Mase sqr returnValue lee EE or ea EES EE return returnValue amp lt xsl for echo Le principe est le m me que le traitement avec un tableau sauf qu il y a 2 for each pour r cup rer les valeurs BooleanC2 s occupe du 1 tableau qui est le parent du 2 tableau et BooleanC2i qui s occupe de parcourir les contr les pour le 2 tableau pour chaque entr e du 1 tableau SetUCValue String str Le point important dans cette m thode est le fait que c est sur la base du contenu du String que sera d termin le nombre de CheckBoxs mettre dans le StackPanel Aucun tableau d objets personnalis s qui est parent gt Ser Boolean gt amp lt xsl for each select zeroDimension output amp gt public void setUCValue String str Vionnet Olivier HES SO Valais juin 2008 12 217 Hes so Steg Eech epes mC belie mie hea elm EE CheckBox co mew re Ee cor ene S WeC hee wesc stom On cb isChecked Boolean Parse str Cbs Conuenb valeur st Sen craigs vil Chiers Aclol cle gle xsl for cachscoqtr Cle nel bon Cho TUE EEE EEE EEE WW EE EE EES Chaque for each n est ex cut qu une fois vu que le type actuellement trait n a pas de parent qui serait un tableau d objets personnalis s 1 tableau
189. ee es ese eec eee ese eee eee ese eee ee eee eecee ee eee eee 6 L000000000000000000000000000000000000000000000000000000000000000000000000000000000e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e R cup rer informations sur les types utilis s Projet net regroupant les fonctionnalit s de r cup ration du WSDL Compilation g n ration automatique Rechercher documentation sur compilation cmd Projet net permettant de compiler un projet et int gration R sultat exec console G n ration de code recherche de moyens pour g n rer le code apprentissage et documentation sur le moyen trouv impl mentation dans un projet xaml Projet net XAML Projet Net pour g n rer une application XAML que pour le WS du sdk Correction bug tests types costumes et complex options Gestion des options et tests Mise en place d l ments pour parametrer l application de g n ration et r solution des bugs Developpement d une partie fichiers tests Tests d un web service et corrrection de bug seance Nouvelle orientation Corrections g n ration de bugs G n ration code red veloppement Vionnet Olivier HES SO Valais juin 2008 16 hr 10 hr 2 5 jours 8 hr 12 hr 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 0 jour 9 75 jours 24 hr 24 hr 0 jour 0 jour 0 jour 0 jour 0 jour 2 hr 6 hr 0 5 jour 3 hr 1 hr 2 88 jours 4 hr 12 hr 7 hr 9 5
190. eeceesecceeceeee cess 146 ES cae DUON EE 146 Bo 0 E e EE 147 Poo E lt i e 147 bora COS Pe eT 148 t3073 RadOBUUON eee ene en ere Pe eee are 148 13 6 7 6 Ajouter des l ments XAML depuis CF 149 OS ALTA PA me 150 13 6 8 1 Les l ments importants du XSLT ss 150 OS PA a ENEEK REN 152 130 87 e CES e ae de de Da ait 153 13 6 8 4 Position et famille 153 13 7 ELE eg 159 13 8 R f rences SOURCES E 206 SA A be 61 0 EE 206 13 8 2 Applications plugins permettant r cup rer le contenu WSDL 206 Vionnet Olivier HES SO Valais juin 2008 216 217 S Hes so uu EE WALLIS 2000000000000000000000000000000000000000000000e 9 9 9 9 8 9 9 9 9 9 9 9 8 8 9 9 9 8 9 8 9 9 9 9 8 9 9 0 8 9 006e 13 8 3 Web Services ccccscsscosccsccsccsccecceccsccscceccsccscescesccsccscessescssscstescescees 207 13 8 4 Cr ation d un client consommant un webservice le yes E EE 208 Me E E E 209 13 8 7 D roulement du d veloppement de application Ke D 211 13 9 Remerciement 212 14 Table des mati res c cccccccesceccaccaccaccaccaccaccaccaccacceccacceccecceccscesccscescescescescess 213 Vionnet Olivier HES SO Valais juin 2008 217 217
191. eeeeeeeeee 0000000000000e 00000000e h A EE W VALAIS SSCSHOSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSHSSSSSSSSSHSSSSSSSSSSESESSOSSESOSSESEEES Hee Co WALLIS 0 9 9 9 8 0 8 8 9 8 9 9 8 9 8 9 8 8 9 9 9 8 8 8 8 8 9 9 8 8 9 EES 000000000000000000000000000000000000000ee Kb A EAR 200000000000000000000000000000000e AllStadiumInfo information sur tous les stades AllCards Cities StadiumNames StadiumInfe AllStadiumInfo Teams amp Input Output Obj tStadiumInfo String id 52 nameMember sStaciumName Ernst Happel Stadion Letzigrund Stadion St Jakob Park Stade de Gen ve Stade de Suisse Wankdorf Stadion Tivoli N Int32 id 53 nameMember iSeatsCapacity NNN 300007 542500 30000 752000 30000 30000 30000 String id 54 nameMember sCityMame Vienna Zurich Basel Geneve Bern Innsbruck Salzburg Klagenfurt R sultat g n ration wizard G n ration de l application r ussie Utilisation de l application chec Pour la g n ration du wizard je n ai test que l op ration BetHintsAllGames c est l une des op rations disponibles qui pr sente la plus grande complexit au niveau de la structure et des types utilis s L chec de l utilisation provient de l utilisation d UserControls sp ciaux pour l affichage des types Boolean sous forme de CheckBoxs Le r sultat re u du web service pour ces types ne contenait
192. ement de code qui est effectu alors qu une variable n a pas encore t instanci e Vu que c est un l ment important et qui peut revenir r guli rement dans des web services 1l faut tout de m me pouvoir traiter ce genre de cas Comme je n arrive pas en rappelant le template pour construire le code je vais coder de mani re sp cifique d s qu un tableau de costum est trouve il n y a plus d appel a d autres templates le traitement pour les enfants se fait a la suite Ca pr sente la limitation suivante une fois rentr dans le type de tableau costum il ne pourra avoir qu un nombre limit de n uds enfants pouvant tre trait s L id al serait de pouvoir traiter 2 niveaux de tableau costum custom xxx custom xxx o xxx peut tre prendre le type primitif complex custom Ce n est pas terrible comme solution mais a d faut de mieux c est toujours mieux que de ne pas supporter ce genre de types Ca me permettra au moins de prendre en charge les cas simples De plus je ne pense pas qu il y ait souvent beaucoup de tableaux customs imbriqu s Sans compt que a devient tr s vite difficile pour remplir les donn es dans un textbox Vionnet Olivier HES SO Valais juin 2008 177 217 par exemple pour custom string custom2 double le tableau de double doit tre entr dans le format suivant 5 s hss hss Ch bss teh Exemple AE 6 109002 1029
193. ement les diff rents types par objet comme c est le cas pour l application g n r e aurait t un grand plus pour s y retrouver surtout si le web service une structure de donn es complexe et volumineuse Toujours dans la partie wizard la gestion de la taille des tableaux pour les UserControls enfants n est pas bien concue car devoir saisir plusieurs fois la taille d un m me tableau pour diff rents UserControls est une perte de temps et un risque d erreurs Finalement l architecture pour la cr ation d UserControls sp ciaux n est pas bonne Elle est d pendante de la limitation de la g n ration de code Si cette limitation peut tre r solue il faudra galement modifier le contenu de la m thode generatelt de la classe GenerateWizardChient De plus le choix des UserControls sp ciaux n est pas tr s grand Si l on souhaite cr er de nouveaux UserControls sp ciaux il y aura pas mal de modifications a faire dans cette partie et il faudra galement diter les fichiers de transformation XSLT Il aurait t pr f rable de faire un syst me permettant de cr er plus facilement des UserControls en mettant en place soit un petit wizard pour les cr er ou un syst me modulaire dans lequel on poserait le nouveau template de transformation pour cr er l UserControl ainsi que le fichier de donn es XML Vionnet Olivier HES SO Valais juin 2008 98 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e
194. en d veloppement et la facilit avec laquelle je vais comprendre comment a marche Cette documentation sera int gr e a la solution mais pour viter tout probleme j utiliserai une copie de la version 1 0 pour int grer la solution de documentation Total 24h Vionnet Olivier HES SO Valais juin 2008 202 217 AM VALAIS Hes s O WALLIS 200000000000 000000000CCCCOROCCOROCCOCCOCOCOCCCCOCCeCOCLCLOCRC0C0CLC00000000000000000000000e 0000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e eeeeeeeae oe eeeecee ee eee eeeeeee eee eee e eee eee e eee eeeeeeeeeeseee ee eee eeee eee eeeeeeee eee 6 6 bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEKEEEEEEEEAEEUEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 30 Woche 23 05 2008 29 05 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden e refactoring termin A force de vouloir liminer tout ce qui est inutile je me suis retrouv avec quelques bugs qui ont t corrig s e Essais de diff rents web service trouv s sur le web J ai refait des tests avec des web services d velopp s par d autres personnes GlobalWeather service source http developer capeclear com
195. encapsul s dans un amp lt CDATA amp gt toujours dans le but d viter d avoir des probl mes avec les namespaces Lors de la premi re transformation le CDATA n est pas pris en compte car ce n est pas un l ment connu dans XSLT cause de l ouverture et la fermeture de la balise seul l ouverture et la fermeture de la balise est transform e on obtient apr s avoir transform le contenu suivant lt CDATAI gt qui sera un l ment connu lors de la 2 transformation Lors de la deuxi me transformation CDATA est connu et tout son contenu ne sera pas transform Exemple Avant 1 transformation Apr s 1 transformation Apr s 2 transformation amp lt CDATA lt CDATA amp lt UserControl amp gt amp lt UserControl amp gt amp lt UserControl amp gt amp gt Us Pour que cet l ment soit compris par le framework lors du build de l application il ne restera plus qu au niveau de la programmation de parcourir l entier du fichier du UserControl pour remplacer les amp lt et amp gt par lt et gt 3 7 1 UserControls La cr ation des UserControls pour la g n ration automatique et wizard utilise le m me fichier de transformation mais diff rents templates 3 7 1 1 UC xaml xslit Ce fichier de transformation s occupe de g n rer la partie XAML de lP UserControl Il est compos 5 templates root Ce template est utilis lorsqu il faut cr er un UserControl
196. enre String id 13 nameMember Nom Era String id 14 nameMember Prenom Obj Ami Boolean id 16 nameMember 4miDentar String id 17 nameMember Nom String id 18 nameMember Prenom KA Vionnet Olivier HES SO Valais juin 2008 Le champ Genre contient 2 ComboBox contenant les types num r s masculin f minin inconnu Pour le champ AmiDenfance on a les CheckBoxs qui ont t cr es Pour la 1 AMIS Personne Mickey 1l y a 3 Pour la 2 Amis Personne Donald il y a 5 Pour l output on remarque qu il n y a pas d UserControls pr sents pour les champs Genre et AmiDenfance Ils seront mis lorsque l application sera utilis e 88 217 Voici le r sultat obtenu Window get rrayPersanne Input Output Obj Personnel Obj Personne Int32 id 2 nameMember Age Int32 id 11 nameMember Age GAS B0 4 Genre id 3 nameMember Genre Genre id 12 nameMember Genre masculin LA inconnu masculin String id 13 nameMember Nom String id 4 nameMember Mom ws Mouse we Duck String id 14 nameMember Prenom String id 5 nameMember Prenom wa Mickey zw Donald Mickeys Donald zt Obj Amil Boolean id 7 nameMember SmiDenfan Boolean id 16 nameMember 4miDenfance tblo ie LE C thl 0 0 tbl 0 0 tbl 0 1 C thl 0 1 tbl 0 2 4 tl 0 2
197. ent Microsoft construit des grids jolis pour rappel trouver quelque chose de comparable au datagrid en Net 2 0 Il est un peu vide ce programme et surtout J esp rai trouver des templates ou des wizards pour produire plus facilement des l ments au niveau graphique Au final je vais partir sur la m me structure que trouv dans les exemples MSDN pour la classe grid mettre des l ments XAML comme un Border pour faire des contours dans les cellules par exemple e Gestion des tests install et fait quelques essais avec NUnit 2 4 7 e R fl chir sur la partie de g n ration par le biais d un wizard qu est ce qu il faudrait faire Vionnet Olivier HES SO Valais juin 2008 180 217 Hes so VALAIS Une s ance jeudi Suite la s ance du jeudi 3 avril voici le programme Tester des web services externes et corriger les bugs Apr s avoir pris du temps pour comprendre les erreurs dans de volumineux fichiers de code j ai d couvert 2 probl mes Probl me d importation avec svcutil certains services ont un binding HTTPPost ou HTTPGet Svcutil n arrive pas g n rer ces parties par contre le SOAP passe Je me retrouve avec un fichier de configuration qui prend uniquement en charge la partie SOAP mais rien pour le HTTP par contre mon application g n re tout le code galement pour le HTTP Ca provoque des erreurs lors de la cr ation de l application par d faut je me retrouve qu
198. ent du contenu des UserControls recevant le retour du web service ICI les assemblies initialisation civics Ouch Jlopiecon lk Chic ENEE d Le d initialiser les l ments d output et nettoyage du contenu RE SEET EE A EE DOM be ETUI atic Slee mince Hiei Wks es As Ue gta elke an WC Varnes 01 CS MAT ESS eme creme Va luen SE Pol EN NS HE CARE amie Varner She akg reas IT EE UE SE EE EexuBlockError Text WwW SVS ce L tape suivante consiste r cup rer dans tous les UserControls les valeurs saisies par l utilisateur et de construire les objets jusqu arriver avoir tout a dispoition pour envoyer au web service Les commentaires dans le code permettent de savoir quelle partie de template a t utilis Les endroits ou il n y a que des commentaires sont des endroits o le contenu n a pas t trait car il faisait partie d un tableau d objets personnalis s qui a d j t trait Exemple de r cup ration d une valeur provenant d un contr le se trouvant dans un tableau de type personnalis La valeur saisie contient un d limiteur qui permet de spliter les valeurs dans un tableau de String Le type attendu par le web service est un Int32 Donc il faut parcourir le tableau de String et convertir chaque entr e en Int32 pour le mettre dans le tableau de Int32 custom gt primitif match parametre type mode inputl Seca cine A we 2 cecucvelne Eent
199. enue dans schemaLocation e La 1 adresse s occupe de d finir pour chaque l ment d fini dans les messages la s quence et le type de donn es s quence parce qu une m thode qui prendrait un string en premier puis un int n a pas la m me signature que celle qui prend le int en premier puis le string e La 2 adresse s occupe de la s rialisation des donn es e La 3 adresse s occupe de d finir les types personnalis s Ces types sont des classes cr es qui portent dans le code net la mention DataContract et qui quivaut au nom de la classe et les donn es membres qui dans le code net ont la mention DataMember lt wsdl ivpes lt xsd schema targeiNamespace http itempunorcilmponts lt xsd import schemalocathon IE ts Ge Ne ER namespace http teripur ore te lt xsd import schemaLocation hittp localhostthelloworld xsd xecl1 hamespace hitpschernas rucrosoft com2003 1 Usenalzation lt xsd import schemaLocation hitp localhost helloworld xsd xsc namespace http lechemas datacontract og 20040 Hello WorldExample gt lt ixed schema lt hwedl iypes gt Contenu xsd xsd0 lt xs schema elementFormDefaul gualified targe Namespace hittp tempur org xs import schemaLocation hittp localhost helloworld xsd xed2 namespace http schemas datacontract org 200 407 He ls WorldExample gt lt xs element name HelloWorld gt e complex Type gt x seguente ixs complex
200. er Liste des op rations ka add Double Double gt Double ka div Double Double gt Double ka mult Double Double gt Double ka soustr Double Double gt Double Une fois les classes C g n r es l application affiche les 2 fichiers de code uy Ay Contenu de la classe g n r e j dass NunitObject static void Main string args d Servicel Client client_ServicelClient new Servicelt public Double add Double str_1 Double str_ I L ppel WS et renvoyer le r sultat return client ServicelClient add str_1 str_2 ae Classe contenant les tests Sc Se F ini F m Se Bes 1 P eent using System Text using System Runtime Serialization using System ServiceModel namespace WCFCalculator i using NUnit Framework TestFixture public class NunitTest P Le TextBox du haut contient les diff rentes op rations que l on peut utiliser pour tester et est juste pr sent comme rappel de ce que l on peut faire et de l objet qu il faudra utiliser pour r aliser les tests Le TextBox du bas est nettement plus int ressant et utile pour ce que l on veut faire C est ici qu il va falloir rentrer les tests que l on d sire r aliser La classe est pr te tre utilis e il suffit juste de rentrer les tests unitaires Voici un exemple Vionnet Olivier HES SO Valais juin 2008 90 217 Hes so vais se sssssssssessscessssssssssssssscsesssss
201. er SU ere nelle en een e ine Cpe U Pretelt EE pobre lege Boolecamehe ODATA coe Neo ROSES Et new ioe hes LC EE es CDEMbAll sone legt s SE T mpar ray sii Solve liaew Si ac Veet SSe mM EE sp mE OpuLons RemovebMpr jammer ies r Vionnet Olivier HES SO Valais juin 2008 13 217 Hee co if j eeeeaee eee seeeeeeee eee eeeeeeeeeeeeceeeee eee eeceeceeeeeeeeeeeeeeeeceeeeeeseeeeeeeeceseseeeeee VALAIS 2000000000000000000000000000000000000000000000000000000000000000000000000000000006e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e WALLIS R ip tt he See Ret Fe atin bb ty tl hy ie D Bd ete Dh tlh dio ti dos BD SSL tr En ER DR ES te bd tnt toto de EE dd RS 20000000000000000000000000000000000000000000000000000000000000000000000000000000e Ee IC DATA Eae at ne CE ICRA PACE AMIS Or scoOechustia re Maks ce CDATA ht equ ames les CDATA Cor liegt to for int i Pees lhe CDATA It EE EE Siebel ioc NE M nier Ans Ste ney Science eee NT SVSLeM ce ringspl 1 cOprlons Removebmetveneries Cpls cle AG emp El Enorme EE EE EE d EE EE EE US tmpzArray j Brio aera EI boolliust AdQ Booleans Parse empZArcray 7 io Boolean boolArray loc ae LohMera Gila EE E Ee ile ae ONE cptArrayl cpr asic ll seks e eee Fee Wie YS DA one ened 8 gles xsl 1 taire pone ite Label SO Sereld Sis lace LE oo Weenie 2 IOUIE
202. er l application e Au final je devrais pouvoir g n rer sans intervention manuelle le client pour le web service de la calculatrice Total 24h Probl mes rencontr s Solutions trouv es Probleme Losungen Description du probl me Description de la solution si trouv e Beschreibung des Problems Beschreibung der L sung wenn gefunden Pas mal de probl mes avec le XSLT Pas trouv de solution miracle pour la mise en page du code produit La meilleure solution est de bien disposer les l ments dans les templates XSLT plusieurs balises sur une ligne pour viter le retour de ligne Pour Saut de ligne allant d une a plusieurs lignes l indentation je ne sais pas trop Faire la main pour chaque ligne avec un espace c est pas terrible Vu que a ne d range que pour la lecture du code produit si J arrive avoir des blocs de code avec le m me retrait a sera d j pas mal Et il y a toujours la possibilit lorsque l on reprend le code produit pour l impl menter dans un autre projet par exemple de le formater Pas trouv de moyen pour fixer correctement l indentation du code g n r Dans les templates a ne suit pas l indentation De la peine me retrouver avec le Xpath ce qui donne souvent comme r sultat qu un bout de template n est pas ex cut parce que le chemin est faux par rapport au context Toujours en XSLT pour produire le code d une Apr s pas mal d ess
203. er le r sultat return client soustr str_10 str_11 j j j Code des tests Nunits le squelette de la classe est g n r automatiquement L utilisateur doit juste saisir la main les l ments coder Pour cet exemple Va galement utilis IsInstanceOfType qui permet de savoir si le type est bien celui attendu ainsi que Greater la valeur attendue doit tre plus grand La premi re Vionnet Olivier HES SO Valais juin 2008 190 217 Hes so Yi sesSossssesssssssssssssssasssssssscsssssssssosssessssssscssssssssssssesssssssssesss partie de l assert contient la valeur attendue et la 2 la valeur tester Test public void test addi i NunitObject objC new NunitObject Assert IsInstanceOfType Type GetType System Double objC add 4 2 Assert AreEqual 6 objC add 4 2 Assert AreEqual 10 objC add 8 2 Assert Greater 20 objC add 9 2 j Test public void test div i NunitObject objC new NunitObject Assert AreEqual 2 objC div 4 2 Assert IsNaN objC div 8 0 j Test public void test mult d NunitObject objC new NunitObject Assert AreEqual 8 objC mult 4 2 Assert AreEqual 16 objC mult 8 2 j Test public void test_soustr i NunitObject objC new NunitObject Assert AreEqual 2 objC soustr 4 2 Assert AreEqual 6 objC soustr 8 2 Assert AreEqual 1 objC soustr 8 7 j R sultat affich apr s l ex cution des tests M JestResult
204. erageRedCards lt 3 ees Obj tTeamInfo Int32 id 35 nameMember iTotalBets String id 15 nameMember sName _ String id 16 nameMember sCountryFlag etl String id 17 nameMember sResult lt lt String id 18 nameMember sScore Int32 id 19 nameMember i ellowCards as Int32 id 20 nameMember iRedCards Vionnet Olivier HES SO Valais juin 2008 67 217 Hes so Waits EE Une fois la r ponse re ue du web service BetHintsAllGames RER DateTime id 22 nameMember dtCard Input Output treat erate rere Q Obj tGamesBetHints l Obj tGamesinfo String id 23 nameMember sPlayerName EE OO OA est At esst d est EE le ECH rsp 97710 1177127715 14 15 157 177 Boolean id 24 nameMember bYelbowCard string id 4 nameMember sDescription Dental esst rat Phebe be teh fh Round 1 Round 1 Round 1 Round 1 Round 1 Round 1 Boolean id 25 nameMember bRedCard etleche tit ee eee be 07 06 2008 00 00 00 07 06 2008 00 00 00 08 06 2008 Obj tGoal DateTime id 6 nameMember tPlayTime DateTime id 27 nameMember dtGoal 01 01 0001 18 00 00 01 01 0001 20 45 00 01 01 0001 1 GU ute RE eee eee Obj tStadiumInfo String id 8 nameMember sStaciumName St Jakob Park Stade de Gen ve Ernst Happel Stadior Int32 id 9 nameMember iSeatsCapacity String id 28 nameMember sPlayerName
205. es UserControls sp ciaux Ce fichier est cras au fur et mesure des diff rents UserControls qui doivent tre transform s Le dossier userControls s occupe de stocker tous les UserControls que l application g n re en vrac avant que l utilisateur choisisse ceux qu il souhaite utiliser Une fois que l utilisateur a valid ses choix tous les UserControls utiliser sont retir s de ce dossier 6 Assurance qualit Tout au long du d veloppement diff rents tests ont t effectu s afin d identifier les bugs et si possible les corriger Une grande partie des tests est constitu e de web services WCF que j ai cr s afin de pouvoir tester la r cup ration des informations du WSDL ainsi que la g n ration de code trait e par les templates de transformation XSLT Des web services issus d Internet ont galement t utilis s pour tester les m mes points que les web services que j ai d velopp s mais galement pour mettre en lumi re des cas de figures auxquels je n avais pas pens s 6 1 WS developpes Les web services list s ci dessous sont disponibles sur le cd Chaque web service est constitu de son nom en gras et sur la ligne suivante l op ration et sa signature Le retour du web service est gauche suivi du nom de l op ration puis finalement des param tres de l op ration entre parenth ses 1 WefServicel int wcfs string int 2 WefService2 int wcfs2 string int 3 We
206. es attributs de la balise root window dans notre cas on trouve l attribut x Class qui indique le fichier qui contient le code behind pour ce fichier XAML lt Window x Class WpfApplicationXaml Windowl xmins http schemas microsoft com winfx 2006 xaml presentation sml ns x Meebo Schemas mi rosoli com wintx 20UG xam Title Windowl Height 300 Width 300 gt C est dans ce fichier xaml cs que vont tre trait s entre autres les v nements qui surviennent 13 6 3 5 Layout Pour positionner ces l ments dans une fen tre il y a 2 moyens disposition relatif et absolu Vionnet Olivier HES SO Valais juin 2008 129 217 Relatif Les l ments comme le StackPanel DockPanel ou le Grid fournissent un positionnement relatif Tout le contenu n est pas fig sa place mais navigue lorsque l on redimensionne la fen tre lt Grid gt lt StackPanel Name stackPanell Margin 20 30 40 120 gt lt Label Height 23 Name labell Width 120 VerticalAlignment Top gt Label lt Label gt lt Button Height 23 Name buttonl Herr 7S BU COnN BULEON lt TextBox Height 21 Name textBoxl Width 120 Text TextBox gt lt StackPanel gt Cri Absolu Le positionnement absolu que l l ment Canvas utilise n cessite par contre de sp cifier exactement la position de chaque l ment par rapport l l ment parent en haut gauche comme point de d part Les l ments resteront la m
207. es d un objet ou d un tableau d objets Ca complique tout de suite la fa on de proposer les contr les pour un type donn il faut conna tre ce qu il y a au dessus pour pouvoir ensuite construire correctement l UserControl avec le nombre de contr les n cessaires Un exemple S1 le type Boolean n a pas de parent je peux poser sans probl me un contr le CheckBox dans l UserControl Si ce type est une donn e membre d un objet et que cet objet est dans un tableau je ne peux pas simplement mettre un CheckBox sinon tous les objets auront la m me valeur pour le membre de type Boolean Il faut que je construise l UserControl avec le m me nombre de CheckBox qu il y a d objets dans le tableau comme a chaque objet pourra avoir le membre de type Boolean diff rent Et a se complique encore s il y a un tableau d objets dans un tableau d objets Donc je ne peux pas d finir un UserControl sp cial pour certains cas qui passera partout sans que l utilisateur doive le modifier De plus il faut galement que les l ments que je souhaite int grer ne n cessite pas de modifier en profondeur les templates de g n ration de code sinon a va prendre beaucoup trop de temps Processus pour la g n ration wizard input uniquement Pour commencer il me semble que le plus simple est de s occuper dans un premier temps de la partie input l output sera trait pour le moment comme dans la partie
208. es objets nuls C est un cas de figure qui n a pas t pris en compte Si a se produit cela peut provoquer des erreurs lors de l utilisation de l application Il y a n anmoins un petit contr le effectu sur les objets personnalis s re u du web service S ils sont nuls 1ls ne sont pas trait s Cela m amene ensuite au probl me d afficher le r sultat de l objet nul Les contr les des UserControls affichent les valeurs par d faut dans le cas d un string rien pour un int c est un z ro qui est re u par l UserControl et affich Mais rien n indique que l objet soit nul D autre part lors de l utilisation d un UserControl sp cial pour le type Boolean si les valeurs re ues en retour sont nulles l application g n rera une erreur avec les CheckBoxs car il n y a pas d tat nul pour des CheckBoxs 9 6 Fen tre de selection des operations Il n y a pas de scroll pr vu pour le cas ou les l ments de la liste d passeraient la r solution d affichage de cran 9 7 Fen tre de selection des UserControls dans le wizard L affichage n est pas des plus pratiques Visuellement rien n indique si le type est contenu dans un objet ou un tableau d objets personnalis s ce qui complique pour Vutilisateur ce qu il doit rentrer comme taille de tableau pour les UserControls SP CIAUX Il manque un syst me de GroupBoxs qui permettrait de d limiter le contenu des objets comme c est le
209. es so WALLIS SSCSSSSSSHSSSSSSHSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSHSESSSSSSSSSSSSSSSSSSSESSESSOSESSESSSESES bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEEEEEEEEEAEEEEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT em E EE Age l Genre inconnu SE Luci La m thode getPersonne s occupe de rajouter un pr fix ws_ pour le nom et pr nom de rendre l ge n gatif et de mettre le genre inconnu IService cs using SNS tem using System Colilecrions Generic Uin VE CCM Eole using System Ul tances cruz tro me using System ServiceModel using system Text namespace WcfServicel ServiceContract public interface IServicel Operat ron ontrack Personne getPersonne Personne p DataContract public class Personne EE string prenom Pie sage Ur Genre genre DataMember public siring Nom get return nom set nom value DataMember public string Prenom get return prenom set prenom value DataMember public int Age get return age eer age welues DataMember public Genre Genre get return genre set genre value Data Oon trace public enum Genre homme femme Vionnet Olivier HES SO Valais juin 2008 119 217 TTT Hes so wails EE ee 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e inconnu Lorsque le web service tourne une page web est ouverte
210. est dans input ou output ils sont identiques actuellement mais on peut imaginer avoir des tests r aliser sp cifiquement pour l UserControl dans la partie input qui n aurait pas lieu d tre dans la partie output Dans le cas o le type n est pas trouve il faut d terminer si c est un type num r ou un tableau de type num r Si c est le cas l UserControl sera appliqu Dans le cas contraire le type est une classe qui contient des types donc il ne faut pas mettre d UserControl mais ouvrir un nouveau GroupBox contenant un StackPanel afin de voir la diff rence l cran 3 7 4 2 WizardWindow_xaml xslt Ce fichier de transformation est utilis pour cr er l interface utilisateur pour la g n ration wizard Le traitement effectu est pratiquement le m me que celui effectu par Window am 2 xslt La diff rence r side dans le template name insertElement Si le type trait correspond a l un des types standards l UserControl est appliqu mais utilise le nom de l UserControl qui est cr pour ce type la position x Chaque UserControl est ind pendant des autres Si le type n est pas standard et n est pas une num ration un GroupBox est galement plac indiquant visuellement que c est une classe 3 7 5 C 3 7 5 1 AllWindow_xaml_cs_2 xslt Ce fichier de transformation s occupe de cr er pour la g n ration automatique et wizard le code behind pour interface utilisat
211. et une assurance annuelle de 250 Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie Vionnet Olivier HES SO Valais juin 2008 55 217 YP VALAIS ceeccccccccccccccccc cece ees e eee e eee TT TITI TITI TITI TITI TT TITI TITI TITI TT III TITI ITIE Hes so WALLIS SSssssssssssssssssssssssssssssscsssssssssssssssssssssssssssssssssssssssssssssssssss Kb AAA EAKEEEEKEEEEEEEEEKEEEEEEEEEEEKEEKEEEEEEEEAKKEEEKKEEAEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEEEKERE Int32 id 1 nameMember Years Double id 2 nameMember Interest 4 5 Double id 3 nameMember Loan amp mount A a co co co id 4 nameMember AnnualTax Li mE ch d Ln co Double id 5 nameMember Annuallnsurance rh 50 Output Obj MortgageResults Double id 7 nameMember MonthlyPrincipalAndInteres 186 43019241517 Double id 8 nameMember MonthlyTax 20 8333333333333 Double id 3 nameMember MonthlyInsurance 20 8333333333333 Double id 10 nameMember TotalFayment 223 096859081836 R sultat g n ration wizard L affichage est le m me que pour la g n ration automatique 6 2 9 Stock Quote Obtenir la cote d une action Source http www webservicex net WCE ServiceDetails aspx SID 19 WSDL http www we
212. eur graphique 2 Gestion des tests explorer la piste Nunit et voir s il est possible de utiliser pour faire les tests des web services 3 Expression essayer ce programme pour voir comment sont construits certains composants notamment ce qui touche au grid 4 Remplacer les textBox par des userControls 5 Restructurer le XSLT pour mieux s y retrouver et qu il puisse galement tre le r sultat d une transformation XSLT pr c dente Mais avant de pouvoir s investir dans les points ci dessus il faut absolument que je r solve les probl mes de tableau costum et pour le moment je n y arrive pas les modifications que je fais g n rent d autres bugs l instanciation des tableaux posent galement des probl mes De plus Va identifi un autre probl me S il y aun tableau de costum tbl2 dans un tableau de costum tbl1 le contenu de tbl2 envoy au web service est faux Lorsque je cr e par exemple les param tres envoyer au web service pour chaque ligne de tbl1 il y a tout le contenu de tbl2 qui est mis Vu les difficult s que j ai faire les modifications je vais repartir 0 pour la g n ration du code sans gestion des erreurs et je modifierai ensuite la partie XAML pour utiliser des usercontrols afin de r duire le risque d avoir une g n ration de bugs au lieu d une g n ration de code Avant de coder je vais faire du pseudo code XSLT et en m me temps faire des traces papie
213. eur qui contiendra les diff rentes m thodes pour interagir avec les op rations du web service e Template match using Ce template crit les diff rents assemblies n cessaires e Template match namespace Ce template permet de poser le namespace A l int rieur 1l y a 2 appels de template le template assembly qui pour certains web services permet de mettre la r f rence pour le web service et que l objet client soit connu lors de son utilisation pour certains web service si la r f rence pour l objet client est mise en dehors du namespace l objet n est pas connu et entraine une erreur lors de g n ration de l application Le template classe permet de continuer l insertion du contenu e Template match classe Ce template s occupe d crire la classe qui contient le client et initialisation de la fen tre Il y a galement l appel 2 templates select operation mode init et select operation mode action qui permettent de mettre a jour le label pour chaque UserControl e Template match operation mode action Pour chaque op ration une m thode est cr e pour l v nement Click du bouton et contient tout le traitement pour pr parer les parametres a fournir l op ration ainsi que le traitement pour afficher le r sultat Le traitement fait appel a plusieurs templates Vionnet Olivier HES SO Valais juin 2008 22 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 200
214. exte est la bonne place 13 6 4 2 TextBlock Comme son nom l indique 1l permet de mettre des blocs de texte Pour viter que le texte ne soit rogn il faut pr ciser 2 attributs e TextWrapping avec comme propri t WrapWithOverflow qui va mettre la ligne le reste du texte s il d passe la largeur de l l ment e Ne pas sp cifier de hauteur Height pour que l l ment prenne la hauteur n cessaire pour afficher tout le texte Il est galement possible de faire des sauts de lignes en utilisant 1 l ment LineBreak dans le TextBlock Il n est pas possible de le mettre dans la propri t de l attribut Text erreur de parsing par contre il peut tre mis apr s avoir crit la balise d ouverture de l l ment TextBox un l ment LineBreak ne peut tre suivi par un autre l ment LineBreak Pour mettre le texte qui suit il suffit d utiliser l l ment Run et d y sp cifier le texte entre la balise d ouverture et de fermeture Seackranel lt TextBlock Name textBlock1 Width 120 Text Ceci est un texte TextWrapping WrapWithOverflow gt lt LineBreak gt lt Run gt qui est plac dans un TextBlock On peut m me faire plusieurs lignes de texte dedans lt Run gt lt LineBreak gt lt Run gt On peut m me faire plusieurs lignes de texte dedans lt Run gt Text Block lt StackPanel gt 13 6 4 3 Flow Document Vionnet Olivier HES SO Valais juin 2008 139 217 T
215. f 3 tableaux 550355405503 taps bc hss dzen Bigsby tia 3 Le tableau parent TblParent est de taille 2 a b c et Lidsse ss fsgsshy ss J Pour chaque entr e du tableau parent il y a un autre tableau TblParent 0 a b c TblParent 1 d e f g 5h 15 j TblParent 0 contient 2 tableaux enfant TblEnfant 0 a et b c TblEnfant 0 0 a un tableau avec une seule entr e TblEnfant O 1 b c qui est un tableau avec 2 entr es TblParent 1 contient 3 tableaux enfant TblEnfant 1 d e et f g h et 13 7 TblEnfant 1 0 d e un tableau avec 2 entr es TblEnfant 1 1 f g h un tableau avec 3 entr es TblEnfant 1 2 1 j un tableau avec 2 entr es Exemple concret de l utilisation du client Pour illustrer je vais prendre 2 grands personnages de Disney pour le tableau de Personnes Mickey Mouse et Donald Duck Mickey Mouse a les amis suivants Minnie Mouse amie d enfance Goofy Dingo et Pluto le chien qui est aussi un ami d enfance Donald Duck a lui les amis suivants Riri Duck Fifi Duck Loulou Duck G o Trouvetou et Balthazar Picsou aucun ne sont des amis d enfance getPersonne get4rrayPersonne Input Obj Personne Int32 id 20 nameMember Age 80 74 Genre id 21 nameMember Genre masculin masculin String id 22 nameMember Nom Mouse Duck String id 23 nameMember Prenom Mickey Donald Obj Ami Boolean
216. f fbi RE TT ER RTL I ER DO CRI TO TRS PEN CE D D EE Hes sSo WALLIS EE ONE ESSE SDSS ROD A TOSSES ELS E EE EE R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie ChangeAccelerationUnit Input Double id 1 nameMember AccelerationValue 30 Accelerations id 2 nameMember fromAccelerationUnit centimeterPersquaresecond Accelerations id 3 nameMember toAccelerationUnit decimeterPersquaresecond Double id 4 nameMember 6 2 2 Pressure R sultat g n ration wizard G n ration de l application r ussie Utilisation de l application r ussie ChangeAccelerationUnit Input Double id 1 nameMember AccelerationValue ca Accelerations id 2 nameMember fromAccelerationUnit centimeterPersquaresecond Accelerations id 3 nameMember toAccelerationUnit decimeterPersquaresecond Output Double id 4 nameMember Convertir une valeur dans une autre unit de mesure de pression Source http www webservicex net WCE ServiceDetails aspx SID 54 WSDL http www webservicex net CovertPressure asmx wsdl Exemple Convertir 1 bar en Pascal PascalnewtonPersqm R sultat attendu 100000 Rapport d erreur Erreur svcutil binding http get et post ChangePressureUnit Input Double id 1 nameMember PressureValue Pressures id 2 nameMembe
217. fService3 string wcfs3 string int d WefService4 Custom wefs4 Custom string int 5 WecfServices Custom wefs5 Custom string Int32 6 WefService6 Custom wcfs6 Custom string Custom2 string Int32 7 WefService7 Custom wefs7 Custom string Custom2 string Int32 Vionnet Olivier HES SO Valais juin 2008 47 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEIEEEEEUEEEIEEEEEUEEEEEIEUEEEIEEEEEERE Ah AL EEEEEEEEEEEEUEEKEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEUZEEZEEETIIEEEEEUEUEEEUEEEEEER SR LORS PARTONS 8 WefServices Custom wcfs8 Custom string Boolean Custom2 string Double H WefService9 Custom wefs9 Custom string Int32 10 WefServicel0 Custom wefs10 Custom string Int32 11 WefServicell Custom wefs11 Custom string Custom2 string Double 12 WefServicel2 Custom wcfs12 Custom string Custom2 string Double 13 WcfService13 Custom wcfs13 Custom string Custom2 string Double 14 WefServicel4 Custom wcfs14 Custom string Double Custom string Double Costum3 string double 15 WefServicel5 Custom wefs15 Custom string Double Custom2 string Double Costum3 string double 16 WefServicel6 Custom wcfs16 Custom string Custom2 Double 17 WcfService17 Custom wefs17 Custom string Double Custom2 Double string 18 WcfService18 Custom wefs18 Custom string Double Custom2 Double string 19 WefServicel9 Custom wef
218. gt lt TabItem Name tablitem3 Header tablitem3 gt lt TabItem Content gt information 3 lt Tabltem Content gt lt TabItem gt lt TabItem Name tablIitem4 Header tablitem4 gt lt Tabltem Content gt information 4 lt Tabltem Content gt lt TabItem gt lt Tabltem Name tablIitem2 Header tablitem2 gt lt TabItem Content gt lt Button Height 23 Name buttonl Hidden BEL On Burton lt TabItem Content gt 7 Tabi een lt TaocC onus o gt M Window1 Sele tablitem1 tablitem3 tablitem4 ee tablitem2 13 6 3 13 Saisie utilisateur Pour saisir du texte 3 l ments sont a disposition le TextBox le RichTextBox et le PasswordBox TextBox Le TextBox est l l ment utilis dans la majorit des cas pour saisir du texte simple RichTextBox Cet l ment est plus volu que le TextBox Il permet entre autres de pouvoir formater le texte mettre en gras un l ment du texte avec le raccourci Ctr B d y faire des paragraphes inclure des l ments tels qu un bouton ou une image On parle dans ce cas de texte riche rich cotnent PasswordBox Comme on pourrait s en douter le PasswordBox permet de faire de la saisie masqu e lt StackPanel gt lt Label Height 23 Name label1l Width 120 gt TextBox lt Label gt lt TextBox Height 21 Name textBoxl Width 120 gt lt Label Height 23 Name label2 Width 120 gt RichTextBox lt Label gt lt RichTextBox Height 200 Name richTextBox1l Wid
219. hoix de l utilisateur d faille ajouter des l ments Pour ajouter des l ments c est tr s simple Dans le code behind de la fen tre XAML cr er les contr les ajouter puis ajouter au conteneur dans lequel on souhaite afficher le contr le Exemple de l ajout d un CheckBox dans le code behind Eeer aeo Initialize MEET E CheckBox cb new CheckBox ele Meur en hom Cos nidh sO Cb Conten Cr CheckBox Cb Name test stackPanell Children Add cb Important Etant donn que l ajout d l ments se fait par rapport au parent 1l faut pouvoir conna tre le nom du parent Donc chaque l ment d j pr sent doit avoir un Vionnet Olivier HES SO Valais juin 2008 149 217 Hes so VALAIS EE WW COSSSOSSHSONSODS ORO SR OT ES OR HESS ESKER COE SS EOS SOROS OS ORES HOSS ER SS COONS SROs eS NOSES nom et chaque item galement pour le cas o 1l faut ajouter des l ments a l int rieur 13 6 8 XSLT amp XPath L utilisation du XSLT n cessite 2 l ments Un fichier XML contenant les valeurs qui doivent tre utilis es et un fichier XSLT pour appliquer la structure souhait e aux donn es Ces deux fichiers peuvent tre cr s sous Visual Studio avec les d clarations par d faut dans le cas du XSLT tout le contenu apr s l l ment output peut tre supprime Pour bien pouvoir utiliser le XSLT il faut conna tre un minimum d l ments utilis s couramment l
220. i afin d afficher le bon nombre de contr les Lorsque toutes les informations sont saisies la transformation XSLT de 2707 niveau est faite automatiquement et le contenu des TextBox qui affichent le code est mis Jour Le bouton sauver sauve le contenu des TextBoxs et ferme la fen tre Correction de 2 bugs UCs sp ciaux Ouput contr les g n r s lors du runtime de l application g n r es Pour la partie Output des UCs sp ciaux il n y a rien faire Le processus a t modifi et maintenant les contr les sont affich s lorsque l application g n r e re oit la r ponse du web service Donc au d marrage de l application g n r e le contenu de l output pour les UCs sp ciaux est vide C est d apr s les donn es que sera construit l affichage Editer une 2 fois un UC sp cial Lorsque l on dite un UC sp cial pour mettre la taille des tableaux le code de transformation est cras et il ne reste plus que le code final servant construire UC Si l on dite une 2777 fois le contr le il y aura une erreur Je contr le maintenant s il y a la pr sence de code XSLT S il y a quelque chose la transformation pourra tre faite Si elle a d j t faite Vionnet Olivier HES SO Valais juin 2008 198 217 PP WAIN GE fF WR RE EEE ER EEE EEE CES RE TEE ETES SES EE Hee cc aucun traitement ne sera possible par contre le code pourra toujours tre dit la main Modif
221. ications pour une version 2 Si le projet doit tre continu apr s la remise voici les points qu il faudrait modifier e L utilisateur doit faire attention aux tailles des tableaux qu il saisit dans l dition des templates sp ciaux si un tableau d objet contient 2 types sp ciaux il faudra que ces 2 types aient le m me nombre dans la taille du tableau e Dans la fen tre qui affiche pour chaque op ration les param tres et le retour il n y a pas d l ments visuels indiquant si un type fait partie d un tableau d objets ou non M Wizard client wefs69 D Custom 1 ou Custom2 2 Cust Enumi 3 Enu UC Enumi_ Array I _id3 Custom 4 Custom2 5 Cust Enumi 6 Enu UC_Enumi_Array_O_id6 Est ce que Enu2 est contenu uniquement dans Custom ou bien dans Custom2 Pour construire cet affichage J utilise un XmlTextReader et je parcours le fichier dataFile xml qui contient toutes les informations sur les op rations disponibles A chaque fois que je trouve un n ud qui porte le nom type je cr e une nouvelle ligne un StackPanel horizontal dans lequel je mets les informations du parametre actuel et si c est un type final un comboBox Une fois fait cette ligne est ajout e dans le StackPanel vertical principal Avec ce syst me je suis emb t pour faire ressortir les l ments qui en contiennent d autres dans l image ci dessus
222. id 180 nameMember sCityMame Zurich t Qutpu Obj tGameslnfol Int32 id 182 nameMember ild a De ae a String id 183 nameMember sDescription Round 1 Round 2 Round 3 DateTime id 184 nameMember dPlayDate 06 06 2008 00 00 00 13 06 2008 00 00 00 17 06 200 5 00 00 00 DateTime id 185 nameMember tPlayTime 01 01 0001 18 00 00 01 01 0001 18 00 00 01 01 0001 20 45 00 Obj tStadiumInto String id 187 nameMember sStaciumName Letzigrund Stadion Letzigrund Stadion Letzigrund Stadion Int32 id 188 nameMember iSeatsCapacity 30000 30000 30000 String id 189 nameMember sCityMame urich Zurich Zurich Obj tTeamInfo String id 191 nameMember sMame Ramania 1taly France String id 192 nameMember sCountryFlag http feuro2008 dataaccess eu flags ROMANIA_ jpg http euro2008 dataaccess eu flags ITALY jpa htto eurc2008 dataaccess eu f Obj tTeamInfo String id 194 nameMember sName France Romanian Italy String id 195 nameMember sCountryFlag http euro2008 dataaccess eu flags FRANCE _jpa http feurc2008 dataaccess eu flags ROMANIA jog http euro2006 dataaccess eu String id 196 nameMember sResult Vionnet Olivier HES SO Valais juin 2008 65 217 eeeeee eee eeeeeeee eee eeeeeeeeeeeeceeeese eee eeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeceseseeeeee eeeeecee coe eoeeeceeeeeeeeeeeeeeeceeeeeeseeeeeeeec
223. ifficult technique 2 Les difficult s r sident dans le manque de connaissances au niveau du XAML et WCF des web services notamment au niveau du WSDL le peu d exp rience dans la cr ation d application et dans une moindre mesure la g n ration de code Pour r duire le risque Au niveau du XAML il faut apprendre comment se construit une fen tre quels sont les contr les importants et comment g n rer du contenu XAML depuis le code Pour le WCF consulter le site MSDN sur comment fonctionnent les web services Au niveau du WSDL il faut comprendre les diff rentes parties qui constituent le document o se trouvent les informations dont a besoin et quels sont les moyens pour que je puisse les obtenir dans mon application La complexit pourrait tre r duite s il y aun moyen simple d obtenir les informations du WSDL Au niveau de la g n ration de code faire des tests afin de comprendre mieux comment utiliser les diff rents l ments et comment se d placer dans une arborescence XML mais je ne pense pas que ce soit trop difficile de g n rer du code Il faudra penser a faire de nombreux tests d velopper des web services pour tester l application et galement tester quelques web services sur Internet En ce qui concerne le peu d exp rience dans la cr ation d application malheureusement a part faire des tests et lire des articles sur Internet je ne vois pas ce qui pourrait r duire le risque de probl mes
224. illustrer je vais faire les OperationContracts Lister les clients retourne un tableau de client R cup rer les informations d un client en passant un identifiant Lister les articles retourne un tableau d Article R cup rer un article en passant le nom de l article et le nom de l auteur R cup rer une commande avec un identifiant R cup rer toutes les commandes pour un client en passant sont identifiant a donnerait comme retour un objet Client qui contient un tableau de commande et ce tableau de commande contient pour chaque commande un tableau de d tailcommande ce qui me permettra de montrer comment sont trait s les donn es tableaux Je vais voir galement pour cr er quelques op rations qui passent en param tre autre chose que du string ou un int Notamment la cr ation d un client en passant l objet client et la cr ation d un article Pour illustrer les tableaux en input je ferai une version de ces 2 op rations simple 1 client 1 article et une version tableau pourra ajouter x clients ou x articles en m me temps La gestion des erreurs sera sommaire et les appels la bd et la cr ation des objets sera fait directement dans la classe Service qui contient le traitement des op rations du web service Temps estim 12h 23h Vionnet Olivier HES SO Valais juin 2008 185 217 M NALAIS Hes SO Ai WALLIS ssssssesseeeesocoecoseooesoesoseosecoososeeoecooseooooosoooeoosooseeoeososooeeo
225. inna oid af oS namneMeniser Cane String id 14 nameMember NetRange Dell Computer Corporation 143 166 0 0 143 166 255 255 String id 8 nameMember OrgID String id 15 nameMember CIDR DOC 25 143 166 0 0 16 String id 9 nameMember Address string id 16 nameMember One Dell Way DELL Sa String id 17 nameMember NetHandle Arid Pak MET 143 166 0 0 1 String id 11 nameMember StateProv String id 18 nameMember Parent String id 12 nameMember PostalCode String id 19 nameMember NetType 78682 Direct Assignment Strinal id 20 nameMember NameServer NSL USD COM NS2 05 DELL COM Ghrinn ide 71 nameMembher x Comment Utilisation de application op ration GetLastClosingDate r ussie Output Obj TradingDay String id 38 nameMember Date 6 2 2008 Boolean id 39 nameMember Open False Boolean id 40 nameMember Holiday False Boolean id 41 nameMember EanyClose False OutcomeTypes id 42 nameMember Outcome SUCCESS String id 43 nameMember Message String id 44 nameMember Identity Double id 45 nameMember Delay R sultat g n ration wizard G n ration de l application r ussie Utilisation de l application r ussie Le test a port uniquement sur l op ration GetLasClosingDate Vionnet Olivier HES SO Valais juin 2008 62 217 AP SSCSHSSSSSSSSSSSSSSSSSSS
226. ionne R sultat g n ration automatique R sultat g n ration wizard G n ration de l application r ussie G n ration de l application r ussie Utilisation de l application r ussie Utilisation de l application r ussie ChangeMetricWeightUnit ChangeMetricWeightUnit Input Input Double id 1 nameMember MetricWeight alue Double id 1 nameMember MetricWeight alue MetricWeights id 2 nameMember framMetricWeightUnit MetricWeights id 2 nameMember fromMetricWeightUnit kilogram kilogram MetricWeights id 3 nameMember toMetricWeightUnit MetricWeights id 3 nameMember toMetricWeightUnit gram gram Output Double id 4 nameMember Double id 4 nameMember 1000 1000 6 2 4 Power Convertir une valeur dans une autre unit de d nergie Source http www webservicex net WCE ServiceDetails aspx SID 56 WSDL http www webservicex net ConverPower asmx wsdl Exemple Convertir 1 watt watts en kilowatt kilowatts R sultat attendu 0 001 Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne Vionnet Olivier HES SO Valais juin 2008 52 217 ITT RG f f f R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie ChangePowerUnit Input Double id 1 nameMember PowerValue Powers
227. is le choix termin il suffit d appuyer sur Continuer W Wizard client Liste des op rations getPersonne Personne gt Personne Continuer Le deuxi me choix concerne les UserControls que l on souhaite utiliser Vionnet Olivier HES SO Valais juin 2008 81 217 M Wizard client get rrayPersonne Genre 3 Genre String A Nom String 5 Prenom Amil 6 Ses4imis Boolean 7 AmiDenfance String amp Nom String 9 Prenom Personnel 10 Genre 12 Genre 3 String 13 Nom String 14 Prenom UC String O 1214 se Ami 15 SesAmis Boolean 16 AmiDenfance UC Boolean O id16 w String 17 Nom UC_String_O idl we String 18 Prenom UC_String_O_idi8 se Dernier template s lectionn UC Genre I id3_ ENU 5 Dans ce web service il y a un type num et des Booleans C est la bonne occasion d utiliser les UserControls sp ciaux Lorsque l on s lectionne un UserControl sp cial dans la partie input il faut toujours l diter pour que la transformation XSLT puisse tre achev e correctement Si l on tente de g n rer alors que tous les UserControls ne sont pas transform s un message en bas de la fen tre en rouge indique les UserControls sp ciaux qui doivent encore tre modifi s Une remarque importante une fois qu une transformation est faite il n est plus possible de relancer une transformation pour l UserCo
228. it cr er un fichier xslt par langage De plus il faudra prendre du temps pour apprendre ce nouveau langage et dans l id al avoir un peu d exp rience pour utiliser au mieux les capacit s du XSLT 13 4 2 4 Choix retenu Malgr ces quelques petits d fauts XSLT semble la meilleure solution pour g n rer le code des clients des web services C est donc ce moyen qui a t retenu pour g n rer du code 13 4 3 Comment cr er un ex cutable Mon choix s est port naturellement sur l utilisation de MSBuild exe apr s avoir regard comment Visual Studio fonctionne pour cr er un ex cutable Il pr sente l avantage de pouvoir g n rer aussi bien une application WPF qu une application console de la m me mani re mais n cessite un fichier csproj pour lui indiquer quels sont les fichiers qui doivent tre utilis s quel type de g n ration il faut faire et si l on veut obtenir une application console ou Window La complexit d utilisation est tr s faible et le fichier csproj peut tre assez facilement repris et modifi d un projet existant pour cr er un template afin de pouvoir g n rer une application de diff rente mani re De plus il est possible de pouvoir le piloter en mode console 13 4 4 Comment cr er des tests unitaires Pour pouvoir tester des web services il faut soit cr er son propre syst me de tests soit utiliser un syst me existant La solution de cr er son propre syst me a t
229. klaration Wochenstunden T che Aufgabe Heures Stunden Modification du code pour viter les bugs de reg n ration Chaque g n ration est faite dans un dossier diff rent date heure minutes secondes Modification des options ajout d bug et impl ment la possibilit de sauver la configuration et de la recharger fichiers xml stock s dans un dossier chargement se fait par liste d roulante Fichier de log de g n ration pour le moment que sur la g n ration automatique R cup re les erreurs survenant lors de l utilisation des outils en mode console Modification de l affichage lors de la g n ration les fen tres consoles n apparaissent plus Les informations sur ce que fait l application lors de la g n ration sont affich es dans un statusbar Actuellement en cours Systeme de test d un web service avec un fichier de type csv D roulement L utilisateur clique sur le menu de test L application va g n rer Un dossier de test G n rer les fichiers proxys et configuration cr er une dll et r cup rer les informations du web service Ouverture d une nouvelle fen tre affichant la liste des op rations disponibles avec leur signature L utilisateur ne peut s lectionner qu une op ration la fois Une fois le choix valid l application va g n rer les fichiers de donn es xml 1 qui va servir construire le fichier csv ne contient que le contenu de l op ration du web service et un fichier de
230. l affichage Et finalement elle offre la possibilit d utiliser des tests unitaires en proposant les fichiers de bases pour la cr ation d un client destin aux tests et dont l utilisateur n a plus qu rentrer les tests qu il souhaite effectuer l application se chargeant ensuite d ex cuter ces tests l aide de NUnit et d afficher le r sultat Malgr tout l application n est de loin pas parfaite Elle souffre d une trop grande limitation sur la structure des donn es que peuvent avoir certains web services M me si dans une grande partie des cas pouvoir g rer 2 niveaux de profondeurs contenant un ou 2 tableaux d objets personnalis s sera suffisant c est tout de m me restreignant S ajoute ensuite l impossibilit de pouvoir choisir le binding qui doit tre utilis On peut certes modifier les fichiers g n r s pour choisir l endpoint utiliser puis refaire une compilation des fichiers mais cela aurait t mieux d y avoir pens avant et de l avoir inclus dans l application Les TextBoxs qui peuvent servir l dition des fichiers de codes sont une id e mal exploit e qui n apportent pas de confort et d aide l utilisateur Il aurait t plus judicieux de lui laisser le choix sur le programme utiliser pour l dition La partie wizard permettant de choisir les UserControls manque de claret au niveau de l affichage de la structure des donn es S parer visuell
231. l application plante Ajout une m thode d initialisation lors de l appel de la fen tre Window point d entr e dans l application Test si les 3 dossiers existent par rapport aux informations contenues dans ApplicationSettings settings et si ce n est pas le cas cr e les dossiers manquants e Au final les tests que j ai cr s pour tester l application si le retour n est pas pr cis c est qu il est identique aux param tres envoy s au web service string int retour int string int retour int string int retour string custom string int custom string int custom string custom2 string int32 Vionnet Olivier HES SO Valais juin 2008 183 217 TTT Hes so WALLIS SSsssssssssssssssssossssssssesssssessssssssssosssesssssssssssssssssssssssssssssssss custom string custom2 string int32 custom string boolean custom2 string double custom string int32 custom string int32 custom string custom2 string double custom string custom2 string double custom string custom2 string double custom string double custom2 string double custom3 string double custom string double custom2 string double custom3 string double custom string custom2 double custom string double custom2 string double custom string double custom2 string double custom string custom2 double custom
232. l ment Window xmins my clr namespace WpfApplication4 L UserControl peut ensuite tre appel dans le code de la mani re suivante My UserControl famed x Name ucl gt lt my UserControl final Cela pose quelques probl mes pour utiliser ce syst me Il faut la r f rence du namespace de l application pour pouvoir utiliser les UserControls ce qui suit clr namespace doit tre obligatoirement dynamique selon le choix de l utilisateur d fini dans les options Le probl me c est que pour viter d avoir des informations parasites dans certains l ments XAML g n r s il faut que je sp cifie le namespace dans la balise stylesheet et dans la balise Window xmins my clr namespace lt Le namespace dynamique gt Mais je ne peux pas acc der par la transformation a la balise stylesheet et mettre un attribut dynamique Apres divers essais je suis arriv a la solution suivante Dans le fichier de base j ai la ligne de code suivante xmins my clr namespace replace Dans le code lors de la g n ration j ouvre le fichier xslt je le parcours enti rement et a chaque occurrence je remplace le contenu de la ligne avec le bon namespace et je stocke le r sultat dans un dossier temp Vu que je n ai pas beaucoup modifier cette solution est acceptable Ensuite je peux utiliser le fichier crit pour effectuer la transformation normale Vionnet Olivier HES SO Valais juin 2008 178 217 ab AE EEE
233. lSerializer pour que le type soit correctement crit et trait par l application Ca semblait une bonne id e de mettre cette option par d faut mais au final a provoque un probl me au niveau des web services WCF que at d velopp s j obtiens dans un type personnalis pour chaque type un type doublon Boolean et BooleanSpecified par exemple Le r sultat est qu au final a ne fonctionne pas correctement Finalement at opt pour rajouter une option dans la configuration de l application permettant l utilisateur de choisir la s rialisation qui doit tre appliqu e Auto XmlSerializer ou DataContractSerializer Par d faut elle est sur Auto svcutil prenant en premier l option DataContractSerializer et si elle choue il utilisera XmlSerializer Vionnet Olivier HES SO Valais juin 2008 64 217 Pour ce web service je n ai test s que quelques op rations AllDefenders pour un pays donn obtenir la liste des d fenseurs AllPlayerNames AllDefenders AllGoalkeepers AlForwards AllMidFields TopGaalScorers TopSelect String id 2 nameMember sCountryName Switzerland Output String id 3 nameMember Christoph Spycher Johan Djourou Ludovic Magnin Patrick Miller Philipp Degen Philippe Senderos Stephan Lichtsteiner St phane Gri G n rer GamesPerCity pour une ville donn e obtenir toutes les informations sur les matchs qui s y d roulent INPUT String
234. lass p Window El Fields ae FinalQutputDirect ae generationFolder ae msbuildGeneratio Methods zg TestResultWindow a Window_Loaded Une fois le traitement commun termin TestWindow est instanci pour dans un premier temps choisir les op rations a utiliser La m thode generateltForTest de GenerateTestService s occupe de cr er les fichiers de l application et test Ensuite le contenu de TestWindow est modifi pour afficher le contenu des fichiers cr s afin de saisir les tests puis la m thode du generateltForTest2 est appel e pour g n rer l application lancer les tests et finalement afficher le r sultat dans TestResultWindow Vionnet Olivier HES SO Valais juin 2008 8 217 I VALAIS seeccccccccccccc cece cece eet e eee eee eee eee eee eee eee ee eeet sees seeeseeeeeeseeseeesee Hes so WALLIS Sssssssssssssssssssssssssescsssscsssssssosssscssssssssssosssssssssssssssssssssseses 20000000000000000000000000000000000000000000000000000000000000000000000000000000e 3 5 Configuration et autres l ments CH RapportWindow A ConfigurationWindow MyTools Class Class Class f Window P ifindow gg Methods Methods RES Y createGeneration inibContent appassemblyArray r isPositiveNumeric eg FapportWindow app assembly StringBuilder rewrite csprojassembly array csproj ssembly StringBuilder csprojMunit ssembls rras csprojMunit ssembleStringeuilder a aa Slert Window
235. late ajoute des balises de fermeture inutile parce qu il n y a rien dans cette classe qui font chouer la g n ration G 2 12 IP2Location Pour une adresse IP donn e obtenir les informations sur le pays ville nom de VISP Ce web service demande une licence pour tre utilis possibilit de tester gratuitement Source http www fraudlabs com ip2location aspx WSDL http ws fraudlabs com ip2locationwebservice asmx wsdi Exemple Obtenir les informations de l adresse IP 153 109 6 32 www hevs ch Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne Vionnet Olivier HES SO Valais juin 2008 59 217 DOUD Hes so WALLIS zs R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie IP2Location String id 7 nameMember CITY Input MARTIGNY String id 1 nameMember IP Single id 8 nameMember LATITUDE 153 109 6352 46 1 String id 2 nameMember LICENSE Single id nameMember LONGITUDE en Output Obj IP2LOCATION String id 10 nameMember ZIPCODE String id 4 nameMember COUNTRYCODE li CH String id 11 nameMember ISPHAME String id 5 nameMember COUNTRYNAME oe dere ge HAUTE ECOLE VALAISANNE HEVS SWITZERLAND String id 12 nameMember DOMAINNAME String id 6 nameMember REGION SES
236. ld e e Si la solution a documenter ne contient pas de projet DocProject il faut en cr er un Dans Visual Studio File gt Add gt New Project et choisir DocProject comme template il est pr f rable de laisser le nom propos par d faut pour viter d ventuels bugs Maintenant que le projet est pr sent dans la solution un wizard permet de choisir les options suivantes Choisir le moteur de g n ration prendre SandCastle s lectionn par d faut Au niveau de la pr sentation prendre Hana Choisir comment l aide doit tre compil en g n ral la version x S1 besoin faire les modifications que l on souhaite pour le contenu partag pas indispensable Finalement choisir le projet qui doit tre document Il ne reste plus qu contr ler dans les propri t s de l application que la documentation XML lors d un build est faite Avant de lancer un build fermez Visual Studio et relancez le ceci afin d viter un probl me au d marrage de la g n ration Vionnet Olivier HES SO Valais juin 2008 110 217 eege geeegegegeeegeeeeeeegegeegeeeegeeeeegeegeegeegeeeeegeegeggegeeeeeeeeeegeeeeeeeeeeeeeegeeeeeeeeee e AU NALAIS ZE ee Hes sSo WALLIS oo000000000000000800000000000000008000000000000000000000000000000000 0000000000 00000 bh A EEEEEEEEEEEEEEEEEEEEEEEEEEEKEEAEEEEEEEEAEEEEEEEEEEEEEEEEEEEUEEEEIEEEIEEEEEEEEEEEER 13 4 Choix techniques 13 4 1 Comment r cup rer les informations du WSD
237. lders Cette partie s occupe des dossiers dans lesquels sont stock s la sortie l application g n r e et l emplacement des fichiers de configuration Sortie dossier qui contiendra toutes les g n rations effectu es Ex cutable dossier o doit tre g n r l ex cutable chemin relatif Configuration dossier contenant les diff rents fichiers de configuration XML permettant de recharger un projet de g n ration 7 1 1 3 Nunit Cette partie est destin e la gestion du programme NUnit Nunit Console chemin d acc s la version console de NUnit R f rence csproj permet de sp cifier la r f rence de Nunit pour que les l ments de code sp cifique soient reconnus lors du build de l application Objet Classe Name nom du fichier C qui contient les diff rentes m thodes pour appeler les op rations du web service Test Classe Name nom du fichier C qui contient les tests unitaires effectuer 7 1 1 4 Application Cette partie s occupe de d finir les noms des fichiers namespace l adresse du WSDL du web service et la facon de s rialiser Csv filename nom du fichier de donn es xml contenant pour chaque operation tous les types App filename nom du fichier de donn es xml contenant les informations pour la generation du fichier app Csproj filename nom du fichier de donn es xml contenant les informations pour la g n ration du fichier cspro fichier de configuration pour lancer un
238. le proxy a t g n r avec Visual Studio localhost Disponibilite d a Reserver DateTime Parse this textBoxl Text DateTime Parse this textBox2 Text Int32 Parse this textBox3 Text Ie Je constate que d une part il n y a pas d interface pr vue pour pouvoir directement utiliser le client et qu il y a une r f rence concernant l outil qui a g n r le code Malgr tout cela reste int ressant dans la mesure o l on a les fichiers n cessaires pour construire une application graphique sur cette base et qu il y a galement la possibilit d utiliser le mode console pour automatiser la g n ration Avantages et d savantages d utiliser WSCE Pour e Toute la probl matique concernant la cr ation des fichiers destin s l application client par rapport au WSDL pourrait tre r solue en utilisant ce service en mode console et ensuite puiser les l ments pour pouvoir construire l application g n r e Contre e D pendant d un service ext rieur sur un l ment de cl du projet la r cup ration des informations du WSDL e Avenir du produit quels seront les prochains d veloppements Compatibilit avec VS 2008 et le framework Net 3 5 e Contrat de licence libre d utilisation mais dans le cas o l on souhaite distribuer notre application en incluant WSCEPF d faudra faire la demande thinklecture e Pourrait poser des probl mes pour d ployer l application finale de g
239. lt eens i wie ll Clo a iene celle lt S lectionner le bon index gt hate de cu 0 Boolean isSet false while pe lt lr I C DATAT Che ANSE ce County elt IO DATA camp ee E lisSet ComboBoxItem chi ComboBoxItem ic GetItemAt cpt IE Coie CONECmE O tring ey Emp Ancien 7 ch SelectedIndex cpt isSet true COG aes Git xsl for ecacheogtr nie xo bor Eee M me op ration que pour tableau sauf qu il y a 2 tableaux traiter Pour chaque entr e du 1 tableau un Label est ajout pour avoir une meilleure vue de comment sont organis s les l ments lors de l utilisation de l application cleanUCValue Cette m thode est uniquement pr sente parce que par d faut quel que soit l UserControl utilis J appelle toujours cette m thode Dans ce cas de figure la m thode ne fait rien rootEnumArray Vionnet Olivier HES SO Valais juin 2008 19 217 VALAIS seeccccccccccccccccc cece eee eee eect eee cette eee esse esses eseeesesceessseeeeeeees Hes so wails Hifi Ce template est destin la cr ation de UserControls sp cifiques pour le type de tableau d num ration Au lieu d afficher un TextBox il affiche une s rie de ComboBox suivant ce ou aura indiqu utilisateur Le code est calqu sur celui du template rootEnum la difference qu il y a la fin un tableau de type d num ration traiter au lieu d un simple type d enumerati
240. lt wsdl poriType name Hello WorldContract gt lt wedl operation name HelloWorld gt lt wedL input wsaw Action http Mterpun or els WorldContract Hello World message tre HelloWorldContract HelloWorld Inputlvlessage gt lt wedl output wsaw Achon http tempur org Hello WorldContract Hello WorldResponse message tne HelloWorldContract HelloWorld Cutputlvlessage gt iwsdl operation lt wedl operation name TyIyHello gt wedl input weaw Action http tempo or Hello WorldContractlyiyHello message tns HelloWorldContract WhyHello Inputlvlessage gt lt wsdloutput wsaw Achon http tempo org delle World Contract vl yHelloResponse message tns HelloWorldContract Mel Outputlvlessage te iwsdl operation iwsdl poritType Il peut galement y avoir un l ment optionnel wsdl fault pour s occuper de messages d erreur qui surviendrait l ex cution de op ration 13 6 2 3 types Permet de d finir un syst me de types pour que les donn es qui sont chang es soient correctement interpr t es entre le client et le service En g n ral c est le Vionnet Olivier HES SO Valais juin 2008 123 217 Hes so VALAIS sccccccsoscosossocos cesses ecco cs ossccossscoseososesososossosoecoosososossossossoses ER GE EE sch ma XML qui est utilis et qui permet l utilisateur de d finir des donn es de type personnalis tel que des structures La d finition des types de donn es se trouve a l adresse cont
241. mations au web service se Par contre c est un point a garder l esprit pour la fait sur une interface et le web service renvoie la partie g n ration avec un wizard l utilisateur devra r ponse depuis une autre interface faire des choix Gestion des erreurs Modifier la gestion d erreur faire pour chaque Actuellement un try catch englobe tout le contenu champ un contr le A faire du bouton qui r cup re les informations saisies et qui crit les informations provenant du web service Si l utilisateur rentre un string dans un champ de int une erreur est affich e stack de l exception mais pas d information sur le champ o se trouve l erreur Vionnet Olivier HES SO Valais juin 2008 170 217 fy AM VALAIS H es s O NALLIS ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEEEIEEEEEERE 0000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e eeeeeeeae oe eeeecee ee eee eeeeeee eee eee e eee eee e eee eeeeeeeeeeseee ee eee eeee eee eeeeeeee eee 6 6 bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEKEEEEEEEEAEEUEEEAKEEEEEEEEEEEEEUEEEEEEEEEEEEEEEEEEEETIERT Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 18 Woche 22 02 2008 28 02 2008 D compte des heures hebdomadaires De
242. men Sea ty 86 e je SErINgGsp li cOpuilons Err KEE EE tes gt me sweety 4 mew Mocs powotecey e 7 Vionnet Olivier HES SO Valais juin 2008 37 217 Hes so RS AE NN 7 SR TEA E Zsa SEELEN CO EST a ENS TETE CEA ELE Exemple de r cup ration d une valeur provenant d un contr le se trouvant dans un tableau de type personnalis lui m me se trouvant dans un autre tableau de type personnalis Le premier split s occupe du tableau de Personne Ensuite est cr e une liste de tableau de Boolean et une liste d int pour la taille des diff rents tableaux de type Ami Le traitement de r cup ration commence avec la premi re boucle for pour le tableau de Personne Pour chaque entr e il faut r cup rer le contenu et cr er un tableau de String temporaire qui est en fait le tableau d Amis Il faut parcourir ce tableau temporaire pour convertir chaque valeur en un Boolean A chaque fois qu un tableau d Ami est pr t il faut le stocker dans la liste de tableau Boolean EG gt E Se eas to tee A re COLONEL NN ON System StringSplitOptions RemoveEmptyEntries Hate eo Ier MMS EE Ee ne e EE EE Oe HAE ie le MAT SN NA RE a T MOINS NT Sere arg NCIS ere TE EE TT ANS SO BA Sie NN ee SeT eme Ser Ngo ll COPE LONS Femovebmptvenertes Boolean ies r EE e Eoo l can tmp Amica ay nge O te E E EE Eeler S ENEE 1 3 4 i elen EN OU EE ily ii temo cey 7 La 71 a Silos ea org y
243. mension input gt EE Er EE EE EE Eelere eet EE amp lt xsl for each select EnumC gt Comi ComboBoxItem amp lt xsl value of select nameElement amp gt SelectedItem returna lue t o h On egies Oo rng a es be xsl If Be ECS Eos EC returnValue returnValue Substring 0 returnValue Length 2 Gli xe eae te Cle xsl ior cheat return returnValue Cle NS lor EE Il faut parcourir le for each pour traiter toutes les entr es du tableau qui quivaut au nombre de fois qu apparait EnumC dans le fichier de donn es XML S il y a 2 tableaux d objets personnalis s qui sont les parents lt gt eu Cuseomn lt gt Custom Enum e amp lt xsl for each select deuxDimension input gt EE SS EE DEE bles nmi ComboBox EE amp lt xsl for each select EnumC2 amp gt returnValue ile xsi tom each selec EmumeZi Gore Coi Combobox lt irem lt li E of select nameElement amp gt SelectedItem Fer SCOR Come OS ciao sar eae Sle xol For Che returnValue returnValue Substring 0 returnValue Length 2 Vionnet Olivier HES SO Valais juin 2008 16 217 Hee co AZUR EEE EEE WW P TER ER EE SE EE ET ER PIE EE RS este te returnValue GEET Ee ee EELULHValuc es Ele xo reo Gite Xe Ehe GES EE return returnValue Cle xc rom eco M me op ration que pour tableau sauf qu il y en a 2 traiter le tableau parent du 2
244. ment ToolBar sont signaler BandIndex qui permet de sp cifier l ordre d affichage de plusieurs ToolBar dans un ToolbarTray celui qui est le plus petit s affichant en premier Band permet de choisir sur quelle ligne afficher le ToolBar 1 pour la 1 ligne 2 pour la 2 ligne et ainsi de suite Un autre exemple affichant le contenu d un ToolBarTray verticalement contenant 2 ToolBars lt StackPanel gt lt ToolBarTray Orientation Vertical gt lt ToolBar Band 2 BandIndex 2 gt Button Height 23 Name buttonl Width 25 gt A lt Button gt lt Button Height 23 Name button2 Width 25 gt B lt Button gt lt Button Height 23 Name button3 Width 25 gt C lt Button gt lt Button Height 23 Name button4 Width 25 gt D lt Button gt BUETON Helgne 23 Name burion Width ST E BUCO lt Button Height 23 Name button6 Width 25 gt F lt Button gt lt ToolBarPanel Orientation Vertical ToolBar OverflowMode Always gt lt Button Height 23 Name button7 Width 25 gt W lt Button gt lt Button Height 23 Name button8 Width 25 gt X lt Button gt lt Button Height 23 Name button9 Width 25 gt Y lt Button gt Button Height 23 Name button10 Width 25 gt Z lt Button gt lt ToolBarPanel gt lt ToolBar lt ToolBar Band 1 BandIndex 1 gt lt Button Height 23 Name buttona Width 25 gt nA lt Button gt lt Button He1ght 23 Name Duti iono Width 25 gt nB Button
245. ment des couleurs disponibles avec des mots cl s Green Red Vionnet Olivier HES SO Valais juin 2008 128 217 VALAIS 9959999 8 0 0 9 9 9 9 9 cece cece eee 8 8 8 9 8 8 eee 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 amp Hes So wails His EE Il est galement possible de d finir d autres couleurs en utilisant un codage 8 hexad cimal car 1l y a galement l opacit alpha sp cifier FF 100 de la couleur ou opacit 00 0 de la couleur ou opacit Structure du codage Alpha Red Green Blue Exemple Rouge normal Rouge avec 0 d alpha Rouge avec 0 de rouge oeCLeL Sof Cle ecole r Property Background Property Background Property Background Value FFFF0033 gt Value 00FF0033 gt Value FF000033 gt Il faut encore noter qu il est possible de jouer sur les couleurs avec la superposition d l ments dont l opacit n est pas de 100 le point d intersection donnant une nouvelle couleur lt Rectangle Margin 22 28 0 0 Name rectanglel Stroke Black Fill FFCC7080 Height 98 Width 107 HorizontalAlignment Left VerticalAlignment Top gt lt Rectangle Margin 38 0 133 16 Name rectangle2 Stroke Black Fill FFOOOOFE Height 98 VerticalAlignment Bottom gt lt Rectangle Margin 89 99 82 65 Name rectangle3 Stroke Black Fill 4045FFO00 fe 13 6 3 4 Ev nements et Code behind Dans l
246. mentation de projet qui inclue 1 une description des technologies utilis es des requis requirements ainsi que choix entrepris 11 une description du design de l architecture du g n rateur et de l application 111 un tutorial avec des Web services existants iv une analyse des r sultats atteints et des am liorations donner 13 2 2 Analyse des risques 01 2 3 4 57 Taille du projet xX E L L Xt Degr Degr d int gration E E E E D Configuration rs Changement Instabilit de l quipe de projet Vionnet Olivier HES SO Valais juin 2008 102 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000600006000600000C 000000000000000000000000000000000 h EAR bh A EKEEEEEEEEEKEEA 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e Taille du projet 1 Le projet est de taille normale A la vue des diff rentes fonctionnalit s qu il faut impl menter je devrais pouvoir le s parer en 3 morceaux Commencer la g n ration automatique serait une bonne chose car a me permettrait ensuite de m appuyer sur cette partie d velopp e pour la partie wizard car en gros c est un traitement automatique avec des choix de l utilisateur et dans une moindre mesure pour la partie destin e aux tests D
247. mis apr s avoir fait une conversion de type S1 le n ud un parent 1l faut s assurer que ce ne soit pas un tableau Vionnet Olivier HES SO Valais juin 2008 23 217 VALAIS seeccccccccccccccccc cece eee cece eee e eect e eee eee esse eseteeseseseseseeessseeeeeeees Hes SO wails His d objets personnalis s car ce traitement aura d j t effectu dans la partie s occupant de ce genre de type Si c est le cas rien n est fait Dans le cas contraire on se trouve dans le cas ou le parent est un objet personnalis Il faut cr er une variable avec le bon type et y mettre le contenu de l UserControl dedans Ensuite il faut mettre jour le membre de l objet parent appel par d faut custType lt id gt avec la variable cr e juste avant Le syst me est identique pour les cas de type complexe un tableau de String par exemple ainsi que les num rations et tableaux d num rations la diff rence qu il faut pour les cas comportant un tableau traiter la donn e provenant de l UserControl pour en faire un tableau Pour le cas o 1l y a un type personnalis cr er un nouvel objet du type actuel en s assurant de ne pas avoir un parent qui est un tableau de type personnalis puis si le n ud courant est l enfant d un autre il faut mettre jour le membre du parent avec l objet qui a t cr Finalement le cas du tableau d objets personnalis s Une fois que traitement
248. mise de c t Beaucoup de travail Vionnet Olivier HES SO Valais juin 2008 117 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hes so WALLIS 0000000006 0000060066006000000000006000600 0006 00000000000000000000000000000000 Ah A EAR 200000000000000000e bh A EE 000000000ce Kb A EAR 200000000000000000000000000000000e pour le r aliser et au final le r sultat sera inf rieur ce que d autres outils peuvent faire Mon choix s est port sur l utilisateur de NUnit pr sent depuis de nombreuses ann es car il propose un model d assert permettant d effectuer les op rations les plus communes telles que les galit s identit s comparaisons types conditions De plus il est simple a utiliser et pr parer le code pour effectuer des tests 1l dispose d une version console permettant le lancement de tests par d autres programmes et finalement il propose le r sultat des tests sous forme d un fichier XML qui peut tre pars pour en retirer les r sultats obtenus 13 5 Cr er un web service et un client avec VS 2008 13 5 1 Web service L op ration est assez simple Dans Visual Studio cr er un nouveau projet en utilisant le template WCF service dans la partie web Par d faut 2 fichiers importants sont cr s Servicel sve Contient pour chaque op ration du web service le tr
249. mplate de transformation AllWindow_xaml cs 2 xsit gt template match parametre type mode outputl Ligne 259 dans le when tbl custom custom Le test qui est fait doit afficher la suite du contenu que s il n y a pas de noeuds parents contenant un tableau et je pense que c est justement la recherche de tableau dans les parents qui est fausse Une suggestion de correction serait qui n a pas t faite dans l application car 1l faudrait retester beaucoup de web services pour s assurer que cette modification n apporte pas d autres bugs axsls if test not contains natie and not ancestor contains name gt 6 2 16 Euro 2008 Football Championships Traite de l Euro 2008 Compos de 45 op rations joueurs stades goal Source http www xmethods net WSDL http euro2008 dataaccess eu footballpoolwebservice wso WSDL Rapport d erreur Aucune erreur R sultat g n ration automatique G n ration de l application r ussie sous conditions Utilisation de l application r ussie Il y aun probl me pour r cup rer par d faut les types avec Svcutil Pour les types complexes au lieu d avoir un String comme type je re ois un ArrayOfString et ce type inscrit de cette fa on n est pas trait correctement par l application Apr s quelques tests il s avere que lors de l utilisation du Svcutil il faille mettre l attribut de s rialisation Xm
250. mplate s occupe de r f rencer toutes les assemblies qui doivent tre incluses ainsi que la dll du proxy e Template itemgroup2 Ce template r f rence tous les fichiers que doit contenir application comment ils doivent tre trait s par le g n rateur les d pendances entre fichiers 3 3 App Ces 2 fichiers de transformation s occupent de cr er le fichier XAML et C pour le point d entr e de l application Ces fichiers servent juste dans le cas o l on changerait le nom des fichiers app 3 7 4 XAML Vionnet Olivier HES SO Valais juin 2008 20 217 Hes so VALAIS WALLIS Ces 2 fichiers de transformation s occupent de la partie interface utilisateur pour la fen tre principale de l application g n r e 3 7 4 1 Window vam 2 xsit Ce fichier de transformation est utilis pour cr er l interface utilisateur pour la g n ration automatique Il s occupe de cr er la fen tre XAML et d y d poser les diff rents UserControls Template name window La transformation commence r ellement avec ce template La premi re chose signaler c est l utilisation d un mappage de nom pour pouvoir utiliser les UserControls pour qu ils soient reconnus xmins my clr namespace replace Normalement la place de replace 1l doit y avoir le namespace de l application suivit du nom du dossier contenant les UserControls Cette information est crite apr s la transformation car il m a t
251. n Test_thinkkecture 1 project SP i Test_thinktactiure cay A D Build Rebuild Clean Dans la fen tre d options affich es J ai sp cifi les l ments suivants puis g n rer WSCF Code Generation Options 0 7 amp Contract information WSDL location http Alocalhost reservation wad Ww end Code generation Co Client side proxy lt Wert gt Service side stub Configure endpoint Access Messages Enable WSDL Validate messages Options Serializable classes Collections C Lists T gt Public properties Data binding Order identifiers Old async code Separate files TT Adjust casing No Specified handling Files and namespaces Test_thinktectureProxy service filename Test_thinktecture Proxy namespace Test thinktecture service namespace Test thinktecture Generate Cancel Proxy filename Overwrite existing files Remember settings 112 217 See eegeegegeegeeegegeeegegeegeeeeggeegegegegegegeegegpeegeegeegeggeegeeeeeeeeegeegeeeeeeegeeeegeeeegeeegeeee Hes So wails i uuu Eee Le plugin a cr les l ments suivants l option separate files permettant de s parer les l ments cr s dans chaque fichier et a ajout les r f rences n cessaires Solution Ex plo rer Test _Hhinktecture Ey 31 4Q od Solution Test thinkbecture 1 project a A B gt References es 2 System 2 System Configuration System Data
252. n se trouve est de type Window c est pourquoi on utilise le tag Window Resources dans le cas d une page ce serait Page Resources lt Label Height 23 Margin 30 16 88 0 Name labell VerticalAlignment Top Style StaticResource LabelBackground gt lt Border Margin 20 89 0 123 Name borderl Style StaticResource PageBackground gt Lorsque l on souhaite utiliser le style sp cial d fini il suffit de mettre dans la valeur de l attribut Style les accolades avec l information qu il s agit d une ressource statique et le nom de la ressource que l on souhaite utiliser Les cas les plus courants sont StaticResource Fourni une valeur pour une propri t utilisant une valeur d une ressource d j d finie A noter qu il faut que la d claration de la ressource soit fait avant son utilisation dans le code xaml bien que cela ne donne pas une erreur cela r duit les performances Si n anmoins il ne peut pas tre fait autrement il faut dans ce cas utiliser une r f rence dynamique DynamicResource Fourni une valeur pour une propri t en utilisant une valeur provenant provenant d une ressource lors de l ex cution a chaque fois qu il est utilis 11 faut acc der la ressource pour savoir ce qu il y a dedans Binding permet de faire le lien entre la valeur et les donn es 13 6 3 3 Couleurs Pour d finir le background par exemple jusqu pr sent on a utilis unique
253. n sur la classe Assembly http msdn2 microsoft com en us library system reflection assembly aspx Introduction CodeDom http www techheadbrothers com Articles aspx introduction codedom CodeDom et XAML http www thescripts com forum thread622936 html Petite d finition du CodeDom http www labo microsoft com quickstart howto doc ListBuilder aspx Un peu plus d information sur ce que propose le CodeDom chez MSDN http msdn2 microsoft com fr fr library 650ax5cx aspx Introduction la g n ration de code http www aspfree com c a NET Introducing Code Generation 1 1 Introducing Code Generation quelques pages tir s du livre Code Generation in Microsoft NET http www aspfree com c a NET Introducing Code Generation 1 1 Using CodeDOM Code Generation to Implement Repetitive Patterns http www devx com dotnet Article 28193 1954 pf true XSLT for MSXML http msdn2 microsoft com en us library ms759204 VS 85 aspx Creating XML Writers http msdn2 microsoft com en us library kkz7csOd aspx XML transformation using Xslt in C pratique pour avoir une petite id e de comment faire au niveau du code C pour transformer avec le XSLT http www csharpfriends com Articles getArticle aspx articleID 63 File path in C chemin relatif pour arriver sur un fichier contenu dans le projet http geekswithblogs net vkamat archive 2006 02 01 67868 aspx CanVerticallyScroll Property une propri t a ne pas utiliser
254. n tous les fichiers de donn es XML pour construire l application les fichiers de code g n r s et le fichier csproj Les 2 fichiers int ressants ici sont Window1 xaml et Window1 xaml cs le fichier de la fen tre de l application g n r e XAML lt Window x Class WCFCalculator Windowl Title Windowl Height 300 Width 300 xmins http schemas microsoft com winfx 2006 xaml presentation nine eee schemas micro sole com vinx 2006 xem Eer Namespace WEP E alculavor userControls lt Grid gt lt Grid RowDefinitions gt lt RowDefinition Height 250 gt lt RowDefinition Height 50 gt SS desse ROowbDefinitions Dans cette premi re partie on trouve les informations concernant la fen tre et le Grid avec sa d finition pour les lignes 2 ici lt TabControl Grad Row 0 Neme tabeontroli lt Teoltem Header adda Tsselecrted True gt lt Scrol lV Lewer Name Serollytewern el taek Panel CanVerticallyScroll True gt lt GroupBox Header Input gt lt StackPanel gt ii U sDowole hese Nano eek 2 Ee E lt i UC Domi ire Name ew sy EE lt StackPanel gt lt GroupBox gt lt GroupBox Header Output gt lt StackPanel gt iy UC sDowlole 1 lt Name Were Hi UC Dow lene lt StackPanel gt lt GroupBox gt ENEE Herbe ue ne MR NE TE Dore roi I CIS c isecem I el CESSE lt Button gt lt TextBlock TextWrapping WrapWithOverflow Name textBlockError 1 Vionnet Olivier HES SO Valais
255. nName name gt lt xsl call template name mode2 gt 4 apply templates select output mode output D couper l objet provenant de l op ration en types standards qui sont stock s dans des variables String 5 apply templates select output mode outputResult Pour chaque type mettre la valeur dans le UserControl e Template match parametre type mode inputl Ce template traite tous les noeuds parameter type qui se trouve dans l input pour r cup rer les valeurs saisies dans les UserControls et les stocke dans des variables cr es ce moment Ce template est appel autant de fois qu il y a de parametre type traiter Une exception toutefois a cette r gle pour le cas ou il y a un tableau d objets personnalis s Le traitement de ce genre de cas n ayant pas pu tre r solu de la m me mani re que pour les autres types d s que le traitement rentre dans ce cas de figure 1l n en sort plus pour tous les n uds enfants qu il contient Un xsl choose permet de s lectionner la bonne partie du template utiliser suivant le type de donn es qu il faut traiter standard complexe num ration ou tableau d num ration objet personnalis ou tableau d objets personnalis s Par exemple avec un n ud de type String Le 1 xls when est utilis A l int rieur il y a 2 possibilit s S1 le n ud n a pas de parent une variable est cr e avec le type ad quat et le contenu de l UserControl y est
256. nci en passant en parametre les objets BackgroundWorker la liste des op rations disponibles la liste des classes sp ciales et le nom du dossier de g n ration 1 Initialisation de la fen tre permettant l utilisateur de choisir les op rations qu il souhaite traiter Les op rations sont list es avec un CheckBox et un bouton pour valider le choix 2 La fen tre est affich e l utilisateur et il fait son choix 3 Le choix est valid par l utilisateur Le code de l v nement du bouton s occupe de r cup rer les op rations s lectionn es 4 Le BackgroundWorker est appel par l v nement du bouton et s occupe d ex cuter l instanciation de l objet de type GenerateWizardClient et la m thode generatelt est appel e pour lancer la cr ation des fichiers 5 Informer l utilisateur que l application pr pare les donn es n cessaires pour la cr ation des UserControls 6 Cr ation du fichier de donn es XML pour utiliser par la suite les transformations XSTL Ce fichier contient les diff rents assemblies n cessaires les informations sur l objet client qui doit tre cr et toutes les op rations disponibles contenant tous les types qui seront utilis s pour r aliser l op ration 7 La m thode rechercheTblEtEnfants s occupe de rechercher dans le fichier de donn es tous les tableaux de type personnalis tous les enfants types qu il contient 8 Informer l utilisateur que l applica
257. ng System Collections Generic using VS bem Ling sing oystem lext using System Windows Using System Windows Controls using System Windows Data using System Windows Documents using System Windows Input using System Windows Media using System Windows Media Imaging using System Windows Navigation using oy EIERE EE eent using System Windows Shapes Using System ScmviceModels using Svs rem Collections namespace WCFCalculator public partial class Window Window rva e lOl renei Menti er cenk rent mew e eene public nindowl EE EH EE Ee kaler PUDITE EE EE e eee ite Cole cic c nameMember A e E O E E j nameMember EE c nameMember e e E EE nameMember Vionnet Olivier HES SO Valais juin 2008 32 217 Hes so De ue GE WEE GE ELE EE En j nameMember Elle ire OE nameMember SE Comes nameMember EE j nameMember UG o E a e E j nameMember EE uae COmesine 57 Beie nameMember lee is SE lee LO SE j Dans cette premi re partie on trouve le code que l on trouve pour toutes les classes de Window assemblies namespace et nom de classe Vient ensuite la cr ation de l objet client qui sera utilis pour appeler les diff rentes op rations du web service Puis l initialisation du contenu du label d information de chaque UserControl le label ne contient que le nom du type Il y a 4 op rations qui ont chacune 2 param tres d entr e et
258. nnalit s pour cette partie tait la meilleure solution 8 5 Retransformer un UserControl sp cial Dans la partie wizard il n est pas possible une fois un UserControl sp cial transform de refaire une transformation pour changer par exemple la taille d un tableau 8 6 Taille des tableaux dans un UserControl sp cial Toujours dans la partie wizard s il y a un tableau avec 2 membres pour lesquels il faut utiliser des UserControls sp ciaux la taille du tableau doit tre indiqu e pour chaque UserControl ce qui peut provoquer des erreurs si l utilisateur rentre une taille de tableau diff rent pour les 2 UserControls 8 TimeOut des r ponses du web service pour l application g n r e Par d faut les param tres de timeout pour l ouverture la fermeture et l envoi sont 1 minutes et 10 pour la r ception et il n y a pas de moyen de modifier ceci qu en modifiant le fichier de configuration la main 9 Bugs ou probl mes connus 9 1 G n ration de code C Il y aun probl me de g n ration lorsqu un type d objet personnalis contient un ou des tableaux d objets personnalis s des portions de code sont crites alors qu ils ont d j t crits Dans la partie servant traiter les tableaux personnalis s il y a un test qui sert d terminer si le type actuellement trait ne contient pas un anc tre qui serait un tableau personnalis Exemple dans match parametre type mo
259. nt une petite portion de code des fins de tests mais cela va tr s vite devenir difficile pour crire dynamiquement des l ments de code et n est de loin pas facile a structurer et a comprendre la s quence de traitement et encore plus si le projet est d laiss pendant un certain temps 13 4 2 2 CodeDom Pour g n rer du code r p titif le CodeDom semble tre un bon outil Il a l norme avantage de pouvoir g n rer du code dans diff rents langages mais je ne suis pas convaincu que ce choix soit judicieux dans le cadre de ce projet La g n ration du code que je dois faire est bas e sur des web services que l utilisateur a choisis Chacun de ces web services est la plupart du temps diff rent donc cela donnera des fichiers de code diff rents En ayant consult quelques exemples qui utilisent du CodeDom tout le traitement pour construire une m thode par exemple est faite dans le code C Cela fait beaucoup de lignes de code pour g n rer quelque chose mais le plus d rangeant c est la lecture de ce code il est tr s difficile de se repr senter le code qui sera g n r en regardant le code de construction D autre part cela semble assez compliqu mettre en place pour avoir disposition un g n rateur qui puisse assembler diff rents bouts de code pour construire une classe sp cifique un web service Et finalement il faut galement coder la partie graphique XAML qui ne contient que du XML donc Co
260. ntation du code C de l application se trouve sur le cd dans le fichier documentation documentation du code csharp WpfClientGen codeDoc chm 3 7 Documentation sur contenu des fichiers de transformation La documentation concernant les fichiers de transformation de type XSLT n tant pas prise en charge par SandCastle elle est d crite ci apr s Avant de regarder les diff rents fichiers de transformation 1l faut parler de la fa on dont je proc de pour chapper certains caract res qui peuvent poser probl me dans une transformation Vionnet Olivier HES SO Valais juin 2008 9 217 ah A EEEEEEEEEKEEEEUAEEEEEEEKEEEEEEEEEEEEEE EE 00000000000000e 2000000000000000000000e 2000000000000000000000000000e 0000000000000e 00000000e h A EE A VALAIS Hee Co WALLIS Soc 000000000806 REES Ah A EAR 200000000000000000e bh A EE 000000000ece Kb A EAR 200000000000000000000000000000000e Tr s souvent les fichiers de transformation contiennent des amp lt ou amp gt au lieu d avoir lt ou gt ceci afin d viter que la transformation prenne en compte certains l ments souvent certains l ments sont interpr t s lors de la transformation et g n re pour les balises qui sont a l int rieur le nom du namespace ce qui provoque ensuite des erreurs pour compiler le fichier avec msbuild ou bien si le r sultat de la transformation est un template qui devra tre une nouvelle fois transform e A noter que certains l ments sont
261. ntrol d j transform Il faut commencer par le champ Genre 143 et diter l UserControl Vionnet Olivier HES SO Valais juin 2008 82 217 0 Ee MO EEE M editUcWindow Template en cours d dition Les lt xml version 1 0 encoding utf 3 gt lt xslistvlesheet version 1 0 xmilns xsl hthp www w3 org 1999 SL Transform xmlnssimsxsl urnischemas microsoft comixsit exclude result prefixes msxsl ies lt xsl output method xml indent yes gt UCGenre 13 ENU S Code XAML lt xsl template match finishTranstorm gt lt I CDATA lt UserControl x Class WCFCalculator userContrals UC Genre _I_id3_ENU_S xmins http schemas microsoft com winf 2006 xanml presentation xmins x http schemas microsoft com winh lt 2006 xaml gt Is Code CS lt ml version 1 0 encoding utt 8 gt lt xslistvlesheet version 1 0 xmins xsl http fa v org L999 XSL Transform xmins msxsl urnischemas microsoft comixelt exclude result prefixes msusl gt lt xsl output method xml indent yes gt lt xsl template match finishTranstorm gt using System using System Collections Generic using System Ling using System Text using System Windows using System Windows Controls Sauver Dans cette fen tre d dition 1l s agit de sp cifier la taille du tableau de Personne qui est le tableau de 1 niveau Il y a 2 Personnes mettre Mickey et Donald Comme il n
262. o EE Vionnet Olivier HES SO Valais juin 2008 93 217 aij IS Avia Dist NC Ee Se SES alm t ie ap emp 2 ME AL E ail 7 NOM EN Del SIN An lesion Ton lou ett Dr 2 a Ai Deg eu ES lee EE 2 emul AF Mami eligi lune Aa Sales Non Een zl 3 Prenom CSO SNS ASIN NS rel See SS secre S emi SE Ana taal 4 joke tonte SIN 4 Nem Ee eum ll engt Weel lilac SAIS eer Dewees wel lle SS Sue MEANS elm 4 pl SesAmis sesAmisArrayl pArray 1 pl Personnel pArrayWs objC getArrayPersonne pArray Assert AreEqual 80 pArrayWs 0 Age Assert AreEqual 74 pArrayWs 1 Age ER EE Ul RrEmenN 6 INS SISIOIE AVeelhoall irs Denmelicl EE mon La diff rence qu il y a par rapport WCFCalculator est qu il faut d abord construire les objets puis appeler le web service et c est seulement une fois le retour obtenu que l on peut tester les valeurs Il y a 4 assertions les 2 premi res concernent l ge et les 2 suivantes le pr nom Le r sultat obtenu est le suivant W R sultat des tests unitaires name executed success time Jassen message stacktrace Vionnet Olivier HES SO Valais juin 2008 94 217 seeee eee eeeeeeeeeeeeeeeeeeeeeeeceeeeseeeseeeeeeeeeeeeee eeesececee eee 00000000000000e 20000000000000000000000e 20000000000000000000000000000000000000000000000000000006e VALAIS Hes so WALLIS 0000000006 0000060066006000000000006000600 0006 000000000000000
263. ocument WSDL du web service afin de r cup rer toutes les informations n cessaires telles que les op rations disponibles les types pr sents de g n rer le code XAML pour construire l interface graphique et le code C pour les traitements effectuer et de compiler le tout en un ex cutable Le d veloppeur n aura alors plus qu utiliser l application g n r e pour tester son web service Pour rendre cet outil encore plus attractif aupr s du d veloppeur et lui faciliter son travail l application se doit de proposer diff rents moyens de g n rer un client e De mani re automatique sans que l utilisateur n aie besoin de sp cifier quoi que ce soit lors de la g n ration du client e Dans un style wizard o le d veloppeur pourra choisir quelles op rations et quels contr les XAML d souhaite utiliser lors du processus de g n ration du client e De type test o le d veloppeur pourra rentrer des tests unitaires qui seront ex cut s automatiquement et le r sultat du traitement effectu clairement affich Au final cet outil r duira sensiblement le temps que le d veloppeur devra consacrer la cr ation d un client pour tester son web service et lui permettra galement de faire des tests unitaires facilement et rapidement 2 Fonctionnalit s de l application G n rateur LCD G n ration automatique G n ration NUnit n st KE G n ration Wizard Utilisateur ie i ee 8 Configuration
264. ode Enfant Parent Coot node Enfant Parent Coor Enfant Parent Coot Moi Mes fr nodeBl node Moi Mes fr nodeAZ Mol Mes fr 000000000000000000000000000000000000000000000000000000000000000000000000000000000e Hee Co WALLIS ZE 2000000000000000000000000000000000000000000000000000000000000000000000000000000e nodeA2 a4 a a nodeBl a nodeBl a6 Ancestor Permet de trouver tous les anc tres du n ud courant en utilisant ancestor nodeAl al nodeA2 PO Gel nodeA2 Al al nodeBl nodeBl On remarque que pour le node avec l id a3 le node portant l 1d ad n est pas un anc tre c est un oncle Following sibling Permet de trouver les fr res qui suivent en utilisant following sibling nodeAl al eres suivants HO BL ab nodeA2 a2 eres suivants ad nodeA3 a3 Cres Sulvants Moi nodeA2 a4 Mes fr res Suivante Moi nodeB1 a Vionnet Olivier HES SO Valais juin 2008 156 217 Hee co Mes fr res suivants nodeBl a6 Moi nodeBl a6 EE tr nee On constate que le n ud avec l id al 2 fr res qui le suit tandis que le n ud avec l 1d a6 n a personne qui le suit c est le cadet preceding sibling Permet de trouver les fr res qui pr c dent en utilisant preceding sibling Le n ud avec l id al n aura pas de pr c dents fr res c est l
265. ode concernant la r criture de fichiers pour changer des portions de code par exemple Maintenant j ai une classe MyTools statique qui contient une m thode unique Prends galement en compte si le fichier doit tre cras ou sauv avec un tmp Vionnet Olivier HES SO Valais juin 2008 192 217 Hes so VALAIS Options assemblies pour Nunit Les assemblies peuvent tre d finies maintenant dans les options pour les fichiers csproj ObjetClasse et TestClasse Modifi les fichiers de g n ration xml des donn es pour prendre en compte ce nouveau cas de figure ainsi que les templates XSLT pour la g n ration du code pour les classes utilis es pour le test Pour plus de clart a fait un tabltem pour les assemblies du client g n r automatiquement ainsi qu un autre pour les assemblies destin es aux tests Nunit Le bouton pour lancer la g n ration de l application pour les tests est maintenant d sactiv apr s avoir cliqu dessus et r activ une fois la fen tre de r sultat affich e Suite du travail r aliser la partie wizard Comme pour la partie des tests offrir le choix des op rations que l on souhaite traiter Identifier pour chaque type de donn es quels sont les contr les pouvant tre utilis s Les contr les seront mis dans des UserControls et il y aura pour un type un UC pour l input et un autre pour l output Mais l o a coince les types donn es peuvent tre membr
266. oduction Windows Communication Foundation http www microsoft com france msdn netframework 3 wcf introduction a windows communication framework mspx Description du langage WSDL http msdn2 microsoft com fr fr library bb469924 aspx Web Services Concepts Architectures and Applications Gustavo Alonso Fabio Casati Harumi Kuno Vijay Machiraju Edition Springer 2004 ISBN 3 540 44008 9 13 8 4 Creation d un client consommant un webservice Tutorial WCF Fernandes Bruno HEVS d cembre 2006 13 8 5 XAML TabControl Overview http msdn2 microsoft com en us library ms749171 aspx RichTextBox Overview http msdn2 microsoft com en us library aa970779 aspx Affichage de contenu flexible avec des documents dynamiques http msdn microsoft com msdnmag issues 07 08 WPF Default aspx loc tr FlowDocumentPageViewer Class http msdn2 microsoft com en us library system windows controls flowdocumentpageviewer aspx FlowDocumentScrollViewer Class http msdn2 microsoft com en us library system windows controls flowdocumentscrollviewer aspx ToolBars in Avalon http nayyeri net blog ToolBars in A valon StatusBar Class http msdn2 microsoft com en us library system windows controls primitives statusbar aspx Menu Overview http msdn2 microsoft com en us library ms747430 aspx Creating Buttons with XAML and C Vionnet Olivier HES SO Valais juin 2008 208 217 000000000000e 000000660e 2000000000000000000000000
267. oesanedens 117 13 5 Cr er un web service et un client avec VS 2008 ccccccccccccceeceeeeeeeeeeeeeees 118 KS ON SR a een ee 118 OO a ee en 120 13 6 DCH ONO CIS UU CS a TET ees 122 IB Fo EM EE gd oe ee eee ee ide 122 EN IS POR eE E A E ea 122 Vionnet Olivier HES SO Valais juin 2008 215 217 eeseeeaeeeeoeoeeesceeoeeeeeseeeeeeeeeceeeceeeese eee eeeeeeseeeeeeeeeeee ese eeeeeeseeseeeeeeeseseeeeee Hes So waits iii 13 6 1 2 structure d un document WS 122 13 6 2 Contenu du WS 123 DO eO E 123 DE DO KEE 123 OS eco eeee et 123 IK TIM SM EE 125 Eege EE 125 O2 O0 POS oo E 126 SC re een eee 126 IER NE E E E E E E 127 13 6 3 1 Quelques Informations g n rales 2 0 0 cccccsssseeseeeseseeeeeeeeeeeeees 127 LEO M NUE CONSO ae ee den be oo dis 127 SO COS EEE ere 128 13 6 3 4 Ev nements et Code behind oo ceecceecccecccsssceseseeeeseeessenes 129 SOS Uy OUI E 129 IER 6 A ME 130 S cies e DORA lesee E ETER 133 E Ge rc ONE 133 SO A E A A 134 ee EE eege 136 IER CA ee E 137 13 6 3 12 TabConmrol sense sseessssesssssessesses 137 SO EE De EE ee 138 e RC E EE 139 KZ NEE Ee BN 139 cr TBO EEN 139 13 6 4 3 Flow Document EN 139 ES e OO 142 13 6 5 1 ToolBar ToolBarPanel et ToolBarTray 142 E e EE EE 144 B Se ON A E E EEE 144 13 66 Images Border Group B OX gtt 145 SO Se a ee ie ee nec unies 145 OO En D D de ee 145 CO OK a ns 146 13 6 7 Button Checkbox ListBox amp RadioButton e
268. olderName 2 setStatusBarltem d nemen rege See d msbuildGenerationFilePath WizardarrayInfo 3 msbuildPath Class d msgFinal d namespaceGeneratedChent aP tbiEtEnfantList avec la m thode generateltForTest pour la cr ation des UserControls El Fields gi idType gf idTypeTblEnfant Properties SS IdType re TdT ypeTblEnfant Methods Wizard rrayinfo run Ss Class FileGeneration Class PE 2 proxyFileName d tblEtEnfantList vg tempFolderName d userControlFolderName 3 windowhameGeneratedClient Properties ExecPath gt GenerationFolderName Msginal TblEtEnfantList E Methods generatelt e generatelt2 Generate WizardClient rechercheTbIEtEnFants e setLviTblBoolean Une fois le traitement commun termin WizardWindow est instanci afin de choisir les op rations traiter puis le traitement est continu dans la classe Generate WizardClient Ensuite Operation WizardWindow est appel pour afficher pour chaque op ration les userControls disponibles EditUcWindow permettant d diter le code des userControls Une fois le choix valid le traitement se poursuit avec la m thode generateltForTest qui s occupe de construire l application Vionnet Olivier HES SO Valais juin 2008 11217 ss EE Hes sS0o WALLIS RGB EE de EE ate bi Stay he D ER ER D dee Soy de ni So bend 3 4 G n ration tests Nunit
269. on 3 2 Csproj Le fichier csproj est important pour la cr ation de l application g n r e c est sur lui que s appuie msbuild Il y a 2 fichiers de transformation le premier destin la g n ration automatique et wizard et le 2 pour la g n ration des tests Nunits Ces fichiers proviennent d un fichier csproj d un projet VS et ont t adapt s et transform s pour en faire des fichiers de transformation 3 7 2 1 manifest_csproj xslt C est celui des deux fichiers qui contient le plus d l ments car 1l est destin a g n rer une application graphique Les points importants sont les suivants e Template match property Il sp cifie comment doit tre fait la g n ration et l emplacement ou les fichiers seront mis e Template match ref Ce template s occupe de r f rencer toutes les assemblies qui doivent tre incluses ainsi que la dll du proxy e Template starteritem Ce template permet de sp cifier par quel fichier l application doit commencer en g n ral app xaml et app caml cs e Template item Ce template r f rence tous les fichiers que doit contenir application comment ils doivent tre trait s par le g n rateur les d pendances entre fichiers 3 7 2 2 manifest_nunit_csproj xslt Les points importants sont les suivants e Template match property Il sp cifie comment doit tre fait la g n ration et l emplacement ou les fichiers seront mis e Template match ref Ce te
270. on a t laiss e de c t 13 4 1 4 Parser le fichier WSDL N ayant rien trouv qui soit r ellement int ressant pour obtenir les informations du WSDL je me suis tourn vers la solution de parcourir le fichier WSDL comme il est bas sur du XML ce ne devait pas tre trop difficile de r cup rer les informations dont j ai besoin Apr s quelques essais le r sultat tait mitig Certes j ai r ussi r cup rer quelques informations mais le travail effectuer est immense et obtenir la fin une solution qui fonctionne tous les coups me semble difficile Cette solution a t laiss e de c t 13 4 1 5 wsdl exe amp svcutil exe Etant toujours la recherche d une solution pas trop compliqu e et qui ne prenne pas trop de temps je me suis pos la question suivante Comment Visual Studio 2008 fait pour g n rer un proxy lorsque l on utilise la commande Add Service Reference La r ponse il utilise Svcutil exe Cet outil permet de g n rer un fichier proxy cs qui contient toutes les informations du WSDL et un fichier de configuration En consultant la documentation du framework il y a 2 outils permettant de cr er le proxy et le fichier de configuration Wsdl exe Wsdl exe permet de g n rer les fichiers n cessaires pour faire un proxy partir du contrat WSDL et des sch mas XSD Contrairement a SvcUtil exe Wsdl exe n est pas un outil WCF et n est a utiliser que dans le cas ou les classes
271. on et famille Il est possible de conna tre la position d un noeud par rapport ses fr res gr ce position et last attention les m thodes first of type first of any last of type last of any ne sont plus d actualit s Il est galement possible d acc der directement un n ud pr cis en utilisant des crochets L exemple suivant montre l utilisation des 3 possibilit s Paul Uda a2 rile EK EE EE height 50 gt a lt node gt height 30 gt b lt node gt height 50 gt c lt node gt heroht l0 gt d mode height 20 gt e lt node gt height 50 gt f lt node gt Vionnet Olivier HES SO Valais juin 2008 153 217 ITT Hes s0 WALLIS SES lt xsl template match gt lt xsl for each select node gt lt xsiliat test position i Premier lt xsl value of select id gt ysl Pasi lt xel 1f test posrtio0n last T gt Dernier lt xsl value of select id gt clea lt xsl for each gt contenu du Zeme mode lt xollvalue on select node Z 7 lt xsl template gt R sultat Premier al Dernier ap contenu du 2eme node b Il peut tre int ressant de savoir par rapport au n ud courant quels sont ses enfants descendants parents ou encore ses anc tres Pour illustrer voici le fichier XML qui a t utilise EE lt nodeAl id al gt lt nodeA2 id a2 gt lt nodeA3 id a3 gt lt nodeA3 gt SE lt no
272. on identifiant int insertNewClhient ClientInsert cli Ajouter un nouveau client int insertNewClients ClientInsert cli Ajouter des nouveaux clients un tableau contenant plusieurs objets de type client est pass en parametre Article listArticleQ Afficher tous les articles pr sents Article getOneWithNomAndAuteurArticle string nomArticle string auteurArticle Afficher un article en utilisant le titre du livre et l auteur int insertNewArticle ArticleInsert artl Ajouter un nouvel article retourne le nombre d enregistrements effectu s dans la base de donn e int insertNewArticles ArticleInsert artl Ajouter plusieurs articles en m me temps tableau d articles Commande getCommandeByIdCommande int idCommande Obtenir les informations sur une commande pr cise avec le contenu de la commande le client a qui appartient la commande n est qu un int ClientCommande getClientCommandeByld int idClient Permet de r cup rer toutes les commandes d un client Cette m thode renvoi les informations du client la liste de toutes ses commandes ainsi que le d tail de chacune des commandes La gestion des erreurs est sommaire et les appels a la bd et la cr ation des objets sera fait directement dans la classe Service qui contient le traitement des op rations du web service e Partie tests Nunit de l application je suis en train de terminer d impl menter le code pour lancer les tests Il y aura plusieur
273. onnel i p Int32 2 Age UC_Int32_1 id le Genre 3 Genre UC Genre d ENU_S String A Nom UC String _I d String 5 Prenom UC String TI IO Amil 6 Ses4mis Boolean 7 AmiDenfance UC Boolean I id 5 5 se String 8 Nom UC String I d String 9 Prenom UC Gring IJ ido w Personnel 10 Int32 11 Age UC_Int32_0 idii Genre 12 Genre Genre idi ENU 5 w String 13 Nom UC String _idi3 String 14 Prenom UC String O idi4 se Ami 15 SesAmis Dernier template s lectionn UC Boolean O idis BS S1 la g n ration s est bien d roul e dans la fen tre principale appara t le bouton permettant de lancer le client g n r G n ration Options Lancer l application g n r e G n ration termin e En lan ant l application on retrouve bien l op ration que l on a s lectionn e Vionnet Olivier HES SO Valais juin 2008 87 217 getArrayPersonne Input Obj Personne Ta Int32 id 2 nameMember Age Genre id 3 nameMember Genre String id 4 nameMember Nom Oooo String id 5 nameMember Prenom Obj Amil Boolean id 7 nameMember AmiDenfan tol C lth 0 0 tb 0 1 tb 0 2 tbl1 L_ tbl 1 0 C lth 1 1 C tbl 1 2 1 tbl 1 3 tbl 1 4 Output Obj Personnel Int32 id 11 nameMember Age Genre id 12 nameMember G
274. oooo D compte des heures hebdomadaires T che Aufgabe e UserControls le code a t modifi pour la g n ration automatique Maintenant il y a pour chaque type de donn es un UserControl diff rent pour l input et l output e Cr ation d un exemple de web service exemple une mini gestion de client vente de livre Le diagramme de la base de donn es Article id4rticle nomdrticle prix rticle auteur rticle Client VW dchert noraClient Commande prenomClient VW idCommande idClient npClient adresseClient prix TotalCommande ville Client pavsClient telClient email lient DetailCommande pc id Article idQuantiteDc prixTotalbc idCommande J ai d fini les op rations du web service suivantes Client listClent Afficher tous les clients pr sents Vionnet Olivier HES SO Valais juin 2008 Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 24 Woche 11 04 2008 17 04 2008 Deklaration Wochenstunden Heures Stunden 186 217 VALAIS seeccccccccccccccccce 8 9 9 eee 8 9 9 9 eee eee eee 8 8 ee e Hes SO I NALLIS ccc 8 9 9 8 9 9 8 8 9 9 8 9 9 9 9 9 8 8 8 9 8 9 8 8 9 9 9 9 8 9 9 8 9 9 8 9 9 8 9 8 8 9 9 8 9 9 8 8 9 9 8 8 9 9 8 8 9 9 amp 9 9 8 9 8 8 9 Client getOneWithIdClient int 1d Afficher un client en utilisant s
275. oque lors de la 3 ex cution des tests J obtiens le message d erreur suivant WPFHelloCCC NunitTest multiply System TimeoutException Le canal de demande a d pass le d lai imparti en attendant une r ponse apr s 00 01 00 Augmentez la valeur du d lai d expiration transmise l appel Request ou augmentez la valeur SendTimeout sur Binding Le temps allou cette op ration fait peut tre partie d un d lai d attente plus long gt System TimeoutException La demande HTTP a http localhost 8000 ServiceModelSamples service a d pass le d lai d expiration allou de 00 01 00 Le temps allou a cette op ration peut avoir t une partie d un d lai d expiration plus long gt System Net WebException Le d lai d attente de l op ration a expire Pour le moment je n ai pas d id es pr cises de ce qui pourrait tre l origine de ce probl me Je pencherai pour le pc qui est vieillissant et a de la peine avec tous les programmes ouverts en m me temps et le fait que le web service soit ex cut en d bug sur la m me machine Ou alors Visual Studio qui aurait des rat s 1l n est pas rare que lors d une ex cution j ai tout d un coup tout le layout des fen tres qui change Correction de bug dans la partie s occupant d afficher les erreurs Maintenant les erreurs MSBUILD sont prises en compte et affich es dans le rapport d erreur Modification du c
276. ors encourage the submission of comments and suggestions concern ing this software All suggestions will be given serious technical considera tion By submitting material to the authors you are granting the right to make any use of the material deemed appropriate 1 e any communication or mate rial that you transmit to the authors by electronic mail or otherwise including any data questions comments suggestions or the like is and will be treated as non confidential and nonproprietary information The authors may use such communication or material for any purpose whatsoever including but not limited to reproduction disclosure transmission publication broadcast and further posting Further the authors are free to use any ideas concepts know how or techniques contained in any communication or material you send for any purpose whatsoever including but not limited to developing manufacturing and marketing products 13 8 3 Web Services Information et d finition de webservices http www w3schools com ngws ngws webservices asp Defining the web service with WSDL http www ws standards com wsdl asp WSDL Tutorial Vionnet Olivier HES SO Valais juin 2008 207 217 Hes SO i VALAIS 3 eee EE http www w3schools com wsdl default asp Describing Web Services using DAML S and WSDL http www daml org services daml s 0 7 daml s wsdl html Language WSDL 1 0 http msdn2 microsoft com fr fr library bb469923 aspx Intr
277. ouleurs Je pensai qu il y aurait une d clinaison des l ments XAML de base et qu il y aurait toute une s rie de templates pr t l emploi ce qui m aurait permis de voir au niveau du code comment c est construit Malheureusement ce niveau l application est vide Est ce que cela vient du fait que cette version est en beta et que tout n est pas encore pr sent Quoi qu il en soit on retrouve les contr les de base mais sans plus Certes il est plus agr able de travailler sur ce logiciel que sous Visual Studio mais il faudra n anmoins mettre la main dans le code pour r aliser quelque chose par exemple je n ai pas trouv comment faire depuis l interface graphique afficher les lignes des cellules du grid et y mettre une couleur De plus l Intellisense semble absent Au final ce programme n est pas d une grande n cessit pour mes besoins Vionnet Olivier HES SO Valais juin 2008 109 217 VALAIS seeccccccccccccccccc cece eee eee eect eee cette eee esse esses eseeesesceessseeeeeeees Hes so WALLIS EE Ab AER 200000000000000000000000000000000000000000000000000e6 20000000000000000000000e 13 3 8 NUnit NUnit est un programme de tests unitaires pour tous les langages Net Il peut tre ex cut aussi bien en mode graphique qu en mode console Au niveau de l installation rien de particulier noter il suffit de suivre le wizard pour l installer Site officiel http www nunit org index php
278. ow size device resolution and optional user preferences In addition flow documents offer advanced document features such as pagination and columns This topic provides an overview of flow documents and how to create them Flow documents are designed to optimize viewing and readability Rather than being set to one predefined layout flow documents dynamically adjust and reflow their content based on run time variables such as window size device resolution and optional user preferences In addition flow documents offer advanced document features such as pagination and columns This topic provides an overview of flow documents and how to create them lt Paragraph gt ase lt ListItem gt lt Paragraph gt Listltem 1 lt Paragraph gt lt ListItem gt lt ListItem gt lt Paragraph gt ListItem 2 lt Paragraph gt lt Listitem gt lt ListItem gt lt Paragraph gt ListItem 3 lt Paragraph gt lt ListItem gt NES lt FlowDocument gt lt FlowDocumentReader gt Lors de l ex cution de l application on obtient l affichage par d faut suivant Vionnet Olivier HES SO Valais juin 2008 140 217 VT bor Window MISES Some bold text in the paragraph Some text that is not bold i de 5 3 EE E On trouve le 1 paragraphe du texte et en bas de la fen tre les diff rentes fonctionnalit s par d faut du FlowDocumentReader En agrandissant la fen tre l image est affich e ainsi que tout le texte
279. oxItem gt lt ComboBox gt lt Label Height 28 Name ucLabel error VerticalAlignment Top HorizontalAlignment Left MinWidth 120 Visibility Collapsed Foreground Red gt lt StackPanel gt Je modifie au fur et mesure les templates XSLT R cup rer les donn es saisies par l utilisateur Avec le syst me actuel la r cup ration des donn es saisies est crite comme suit uc l ucTextBox saisie Text Vionnet Olivier HES SO Valais juin 2008 195 217 VALAIS f Zi f fj Hes so Ca va tres bien dans la g n ration automatique car tous les UserControls sont identiques c est un TextBox qui recoit la saisie Pour la partie wizard a ne fonctionnera pas car il n y a pas 100 de chances que ce soit un TextBox qui s occupe d accueillir la saisie Cette partie a t modifi e pour faire en sorte que l UserControl aie une m thode standard qui permette de r cup rer la valeur saisie le nom ne changera pas mais le contenu pour traiter la r cup ration oui Templates impl ment s UC standard idem g n ration automatique UC Boolean TextBox remplac par un CheckBox UC Enum TextBox remplac par un ComboBox N cessite l utilisateur de rentrer manuellement les ComboBoxItems code XAML ou d utiliser le TextBox pour rentrer une s rie de valeurs s par es par des points virgules Probl mes rencontr s perdu un peu de temps comprendre pourquoi lorsque je sauvais le contenu
280. place suivi de projet sous MS Project 0 jour 4 hr Mer 31 10 07 Installation VS 2008 3 hr 3 hr Dm 04 11 07 Recherche et documentation sur wsdl outils XAML 0 jour 74 hr Dim 04 11 07 Recherche et mis en place des exemples wsdl MS 4 hr 2 hr Dim 13 01 08 Installation VS 2008 version finale 0 jour 0 88 jour Sam 05 01 08 R cup rations Informations du WSDL 9 5 jours 2 75 jours Jeu 24 01 08 Recherche documentation outils MS du framework 3 5 8 hr 4hr Jeu 24 01 08 R cup rer informations sur les m thodes expos es 16 hr 10 hr Jeu 24 01 08 Vionnet Olivier HES SO Valais juin 2008 105 217 Date Fin Dim 22 06 08 Ven 07 09 07 Ven 07 09 07 Dim 13 01 08 Mar 16 10 07 Mar 23 10 07 Mar 30 10 07 Dim 13 01 08 Mer 31 10 07 Jeu 01 11 07 Dim 04 11 07 Dim 13 01 08 Dim 13 01 08 Dim 06 01 08 Lun 28 01 08 Jeu 24 01 08 Lun 28 01 08 Travail planifi 543 5 hr 24 hr 24 hr 25 5 hr 1 5 hr 12 hr 4 hr 8 hr 1 hr 0 hr 3 hr 0 hr 4 hr 0 hr 76 hr 8 hr 16 hr Travail r el 706 hr 24 hr 24 hr 105 5 hr 1 5 hr 12 hr 4 hr 88 hr 0 33 hr 4 hr 3 hr 74 67 hr 2 hr 4 hr 22 hr 4 hr 10 hr 1 6 1 1 6 2 1 7 1 7 1 172 1 8 1 9 1 10 1 10 1 1 10 2 M NALAIS WALLIS eeeeece eee eee eeeee eee eeeeeeeeeeeeceeeeec eee eeeeeeeeeeeeeeeeeeceeeeeeeeeeseeeeeeceese eee ee eeeeecee ee eceeeceeeeeeeeeeeeeeeceee se eeeeeeeeeeceeeeeeeeeeeeeeeeeceeeeeeeeeeeeeeeeeeeeee 6 eseeeeeeceeooceeeecees ees eeeeecese eeeeeeceeeeeeesee
281. possible de r agir par rapport l tat dans lequel se trouve le checkBox lorsque l utilisateur a cliqu Comme pour le bouton le principe est le m me 1l faut d finir dans le code behind les m thodes qui doivent tre appel es Checked lorsque le checkBox est s lectionn Unchecked lorsque le checkBox est d s lectionn Interminate lorsque le checkBox est dans l tat interm diaire 13 6 7 3 ListBox Ce contr le affiche une liste de choix pour une s lection Il est constitu de ListBoxltem Il y a 3 modes de s lection possible Single un seul l ment peut tre s lectionn la fois Multiple plusieurs l ments peuvent tre s lectionn s la fois Extended plusieurs l ments peuvent tre s lectionn s la fois Pour s lectionner plusieurs l ments il faut utiliser la touche ctrl lors des clicks L v nement lors du changement de s lection peut tre r cup r en sp cifiant le nom de la m thode appeler dans l attribut SelectionChanged Cricel lt StackPanel gt TextBox Name tb Width 140 Height 30 gt lt TextBox gt lt ListBox Name 1b Width 100 Height 55 SelectionChanged PrintText SelectionMode Single gt lt listBoxitem gt item 1 lt Listboxltem lt ListBoxitem ltem 2 lt ListBoxltem gt lt lhistBoxltem gt ltem 3 lt listBoxltem gt lt ListBoxItem gt Item 4 lt ListBoxItem gt lt ListBoxItem gt Item 5 lt ListBoxItem gt lt ListBoxItem gt Item 6 lt
282. ppuyer sur Continuer ioi Liste des op rations ke add Double Double gt Double Iv div Double Double gt Double mult Double Double gt Double Le deuxi me choix concerne les UserControls que l on souhaite utiliser Seul les types Boolean Boolean les num rations et les tableaux d num rations peuvent avoir un UserControl sp cial en plus Dans le cas de WCFCalculator il n y a que des Double donc pour cette partie il n y a rien de particulier faire et l on peut sans autre cliquer sur G n rer pour g n rer application cliente Wizard client l ei E add div sousi Double 1 al UC Double IIe Double 2 a UC_Double_I id2 Double 3 UC Double OM Dernier template s lectionn Editer G n rer S1 la g n ration s est bien d roul e dans la fen tre principale appara t le bouton permettant de lancer le client g n r la Aucun Vionnet Olivier HES SO Valais juin 2008 80 217 windows sis G n ration Options Lancer l application g n r e t En lan ant l application on retrouve bien que les 3 op rations que l on a s lectionn es CO 0 ES Double id 4 nameMember a1 e Double id 5 nameMember a2 Double id 6 nameMember r 7 3 2 WCFPersonne Le premier choix qui s offre l utilisateur est celui des op rations qu il souhaite utiliser en les cochant Une fo
283. put Obj getWeatherReportResponse Obj WeatherReport DateTime id 26 nameMember timestar 15 10 2006 15 20 00 Boolean id 27 nameMember timestamp ka valeur 0 Obj Station String id 29 nameMember icao for String id 30 nameMember wmo 47671 String id 31 nameMember iata ro Double id 32 nameMember elevation Double id 33 nameMember latitude 25 55 Double id 34 nameMember longitude 58 217 TTT es Hes so WALLIS sccccccccccccccccccc ER EE RRE e eee ee eee e eee ee ees eee cee e eee eee eseeneeoeneeeeseees bh A EEEKEEEEEEEEEEEEEEEEEEEEEEEEAKEEEEEEEEEAKEEEEEEAKEAEK 200000000000000000000000000000000e Remarques Les noms de certaines donn es membres contiennent des mots qui ont une signification pour le framework par exemple string return Dans de tel cas cela provoque une erreur de g n ration Pour viter ce probl me je rajoute un devant le nom du membre Ce web service contient 2 clients GlobalWeather et StationInfo Il m a fallu modifier le code pour prendre ce genre de cas de figure en compte A noter galement que pour l op ration listCountries l objet ListCountries pass en param tre est vide il n y a que la d claration de la classe Il a fallu modifier le template de g n ration du XAML pour prendre ce cas de figure en compte et viter que lors de la construction des l ments XAML le temp
284. qu il souhaite effectu antenu de la classe g n r e a A CalculatorClient client new CalculatorClient ublic Double execute Ws_i Double str_1 Double str si TH ppel WS et renvoyer le r sultat A return dent Add str_1 str_2 Kach public Double executeWs_ Double str_4 Double str u L lasse contenant les tests using NUnit Framework gt TestFixture public class NunitTest d ing rer ici les tests Nunits Test public void addi d ObjClass objC new ObjClass Assert AreEqual t add 0 8 D H j G n rer le tes 4 G n rer le projet final et lancer les tests Nunit en utilisant la console 5 Afficher le r sultat par rapport au fichier de r sultat xml g n r par Nunit TODO Ce qui est pr vu du 18 au 24 avril Terminer la partie Nunit test Total Rendre certaines variables ou assembly param trables dans le menu des options Impl menter l affichage des r sultats dans un grid Tester les tests voir comment a se comporte avec diff rentes op rations en m me temps Regarder les asserts possibles et faire un petit exemple de tests avec un web service de type calculatrice Contr ler que l affichage soit clair entre les diff rents tests Th oriquement le 24 avril cette partie devrait tre termin e 24h Vionnet Olivier HES SO Valais juin 2008 188 217 WA GE WEE GE VALAIS 99995990 9 9 9 9 8 8
285. r fromPressureUnit r Pressures id 3 nameMember toPressureUnit PascalnewtonFPersqm Output Double id 4 nameMember 1b0000 lt a e lt ai an ap es G Lo O lt E Lei is juin 2008 erreur non fatale le binding soap fonctionne R sultat g n ration wizard G n ration de application r ussie Utilisation de l application r ussie ChangePressureUnit Input Double id 1 nameMember PressureValue Pressures id 2 nameMember fromPressureUnit bar t Pressures id 3 nameMember toPressureUnit PascalnewbonPersqm Output Double id 4 nameMember 100000 51 217 eeeeeee ee eceeeceeoee eee eee eeeeeeeeeceeseeseaeseeeceeeeeeeeeeeeeeeeeseeeeeeeseeseeeeeeeseseeeee eeeeeceeeoeeoeeeceeeeeeeeeeeceeeeceee ea eeseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee W VALAIS 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e Hee Co WALLIS Fad EE Detaled adi i EE dee Soy dni So ben 6 2 3 Metric Weight Convertir une valeur dans une autre unit de mesure de poids Source http www webservicex net WCF ServiceDetails aspx SID 59 WSDL http www webservicex net convertMetricWeight asmx wsdl Exemple Convertir kilo kilogram en gramme gram R sultat attendu 1000 Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonct
286. r 20000000 00000000C00OC0CCCOCROCOCC0CLOLCCOOCRCCCCOLOLOCC0C000000000000000000000000000000000e 7 4 2 WCFPersonne Apr s avoir lanc la g n ration des tests la premi re tape consiste pour l utilisateur de choisir quels op rations il souhaite tester M Tests Liste des op rations getPersonne Personne gt Personne Ww get rrayPersonne Personnel gt Personnel L Une fois les classes C g n r es l application affiche les 2 fichiers de code Le principe est le m me que pour WCFCalculator Voici un exemple pour tester le web service Test PODE E o EEA sommet IECH OI new Nuni EE Ee Personne pArray new Personne 2 Personne p0 new Personne Nom Mouse e El ya Age 80 Genre Genre masculin Ami sesAmisArrayO new Amil l Zon emai Oo eg Bima SONO NOT Err amin 0 0 eeneg Minnie a egenen vive EES EA 10 elm 0 Zort em EL eye Aum Stro Nom EE SNE Ee aim U1 AL Dn ue Eller Sesame EA I emi iy vag eran 7 EME Bama ONE amao 2 oem EM RESTE A aml reenen Fle 2 a0 Ain DS renee rriue Ses Ame D 2 emu 2 p0 SesAmis sesAmisArrayO pArray 0 po Personne pl new Personne Nom Duck Prenom Donald Age 74 Genre Genre masculin Ami sesAmisArrayl new Ami 5 Zon em t Bini amp ENEE Str Luet Ee Ce ajith E eer Dee Eer EE yl 0 Sri Oe ipa en syn Aa E ail Nom En elitist lls eS i
287. r de l op ration pour obtenir les types standards Le principe de traitement est le m me que pour le template match parametre type mode input1 sauf que l objet est decompose Le xsl choose s occupe d appliquer le bon traitement par rapport au type ou n ud rencontr pour placer les valeurs dans des variables String Vionnet Olivier HES SO Valais juin 2008 24 217 VALAIS seeccccccccccccccccc cece eee cece eee e eect e eee eee esse eseteeseseseseseeessseeeeeeees Hes so WALLIS EE G 00000000000000e 0000000e 000000000e0e Kb A EAR 200000000000000000000000000000000e qui ont t d clar es gr ce au template select output mode outputInit Pour le cas d un n ud de type primitif ou num ration s il n y a pas d objet parent la valeur de retour est stock e dans une variable str lt id gt S il y a un parent et qui ne soit pas un tableau d objets personnalis s le contenu provient du membre de l objet parent Pour le cas d un n ud de type complexe ou tableau d num ration s il n y a pas de parent le tableau est parcouru les valeurs sont stock es dans un String et s par es par un d limiteur S il y a un parent c est la m me op ration mais le contenu provient du membre de l objet parent Pour le cas d un n ud de type personnalis s il y a un parent le contenu pris est le membre du parent sinon 1l provient directement de l op ration du web service Dans les 2 cas
288. recommandation a t mise faisant voluer le WSDL vers la version 2 0 avec comme changement entre autres des modifications sur les noms de diff rents composants A noter que cette recommandation n est pas support e dans WCF 3 0 3 5 pour une utilisation telle quelle mais qu il existe quelques possibilit s pour prendre en charge certains points Cette recommandation est l tude pour une ventuelle impl mentation dans des versions futures selon Dave Cliffe mod rateur du forum MSDN 13 1 4 Namespaces L espace de nom correspond une collection de noms qui est identifi e par un URI et que l on utilise entre autres dans des documents XML Cela permet de d finir pour un nom une certaine signification par rapport un certain namespace 13 1 5 WCF WCE Windows Communication Foundation est la nouvelle couche de communication du framework 3 0 Elle permet de faire communiquer des applications entre elles sur la m me machine ou sur diff rentes machines Ceci existe d j depuis longtemps remoting web services mais apporte au d veloppeur plus de facilit pour d velopper ses applications sans se soucier du moyen de communiquer ou de la technologie utilis e Vionnet Olivier HES SO Valais juin 2008 101 217 PR ET eee e cess cece I TT T CRIS LIT NT EE 3 Me S SO waits SE Le code d velopp ne devra pas tre chang pour utiliser un autre moyen de transport par exemple C est WCF qui se charge de fair
289. rentre dans cette partie 1l n en sort plus pour tout ce qui concerne le traitement des n uds enfants A l int rieur un for each s occupe de traiter les n uds enfants et utilise des xsl 1f pour appliquer le bon traitement effectuer suivant le type rencontr Tout la fin de cette partie la construction des objets commence Le traitement part depuis l objet parent d claration d une boucle for dans le code C et cr ation de l objet Le traitement est poursuivi en appelant le template select parametre type mode inputArrayCust e Templates select parametre type mode inputArrayCust Ce template s occupe si besoin de cr er les objets et surtout de renseigner les membres de objet parent Le traitement suit la m me logique que le template match parametre type mode inputl e Template name conversion Ce template s occupe d crire le casting de la valeur contenue dans le UserControl A noter l utilisation d un param tre pour utiliser ce template Ce param tre est en fait le nom de UserControl et la m thode a appeler pour obtenir sa valeur e Template name mode2 Ce template s occupe d crire les param tres que operation attend pour fonctionner e Template name outputmode2 Ce template traite le retour de l op ration du web service en cr ant un objet du type du retour de op ration e Template match parametre type mode outputl Ce template s occupe de d composer l objet re u en retou
290. restants sont mis dans une nouvelle ligne Vionnet Olivier HES SO Valais juin 2008 133 217 VALAIS EE VUES SOSSHONOREORSEAS OSE SRA ES ORERESESEER ET DORE EE DEEE EES eS ND OES Hes so Les propri t s ItemHeight et Item Width permettent de g rer l espacement des diff rents l ments Si la taille de l l ment est plus grande que celle d finies dans le WrapPanel les l ments seront coup s par les l ments suivants lt WrapPanel Name wrapPanell FlowDirection LeftToRight ItemHeight 50 TtemWidth 85 gt Button Height 23 Name buttonl Width 75 gt Button lt Button gt lt Button Height 23 Name button2 Width 75 gt Button lt Button gt Button H 1ght 23 Name button3s Width 75 e Burton Button lt Button Height 23 Name button4 Width 75 gt Button lt Button gt lt Butron Herghnht 23 Name buetons Wirdih 7 5 gt Bubton lt Burton lt WrapPanel gt 13 6 3 9 Grid Avec le Grid il est possible de cr er un tableau dans la fen tre en utilisant les propri t s ColumnDefinitions et RowDefinitions lt Grid ShowGridLines true gt Grid ColiummDertimitions lt ColumnDefinition Names coll gt lt ColumnDefinition Neme cols gt Columabeltinition lMeme Col gt Cru Coltmaberinierons Crid Il n est pas possible de fusionner des cellules comme on pourrait le faire en HTML avec l attribut rowspan ou colspan mais on peut placer des l ments par
291. ridSpliter M Window L fol Label too long Label who got lot of space Label bo Label who got lot of space 13 6 3 10 UniformGrid Cet l ment fait penser un Grid mais pr sente l avantage d tre plus simple a utiliser En effet pas besoin de d finir les lignes et colonnes chaque l ment plac dans ce contr le quivaut une cellule L inconv nient de cette m thode tient dans le fait que la taille des cellules est uniforme d o le nom du contr le et que le layout des cellules est pr d finie sans possibilit de changement Si les l ments d bordent ils ne seront pas affich s enti rement sauf si la taille de la fen tre est agrandie lt UniformGrid lt Border Height 500 Name borderl1 Width 500 Background 800DD0FF gt lt Border gt lt Border Height 100 Name border2 Width 150 Background 800000FE gt lt Border Height 100 Name border3 Width 150 Background 800000FE gt lt Border Height 100 Name border4 Width 150 Background 800000FE gt SE EE Eeer Vionnet Olivier HES SO Valais juin 2008 136 217 Etat Initiale de la fen tre Fen tre agrandie 13 6 3 11 Canvas Lorsque l on pose un Canvas dans une fen tre si on ne sp cifie pas les attributs Height et Width il prendra toute la place dans la fen tre Si l on sp cifie la m me taille que la fen tre le Canvas d bordera sur la droite et en bas de la fen tre Le positionnement d
292. rien comme donn e et le code de l application n arrive pas convertir rien en Boolean Un autre probl me non fatal a t identifi dans l cran affichant toutes les op rations disponibles Il n y a pas de scroll disponible pour le cas o le nombre d op ration d passerait la taille d affichage Pour viter le probl me ci dessus j ai g n r une nouvelle version en utilisant que des userControls standards Cette op ration retourne un tableau contenant des informations sur les matchs ainsi que ce que les gens ont pronostiqu s une entr e du tableau gal un match On distingue 2 objets principaux tGamesInfo qui contient les informations r elles sur le match et tBetHint pour les pronostiques Objet tGamesInfo information sur l 1d de la rencontre quel tour elle appartient la date et heure du match Cet objet contient d autres objets Objet tStadiumInfo information sur le lieu de la rencontre la capacit du stade et la ville Objet tleamInfo information sur le nom de l quipe et une image du drapeau Cet objet est present deux fois un par quipe Objet tGameCard C est un tableau d objet qui permet de lister pour la rencontre les joueurs qui ont eu un carton et si le carton tait jaune ou rouge Objet tGoal C est un tableau d objet qui permet de lister pour la rencontre a quel temps a t marqu les buts et par quels joueurs Au niveau des membres de l objet on y trouve le
293. ring HelloWord qui ne prend pas de parametres en entr e et renvoie un string Hello MyHello int njoursSemaine qui prend un integer comme param tre et renvoie un objet Hello l objet est cr lors de l appel de la m thode et un switch s lectionne le jours de la semaine renvoyer 13 6 2 Contenu du WSDL 13 6 2 1 definitions C est l l ment root pour tous les documents WSDL II d finit le nom du service d clare les namespaces qui seront utilis s dans tout le document et contient tous les l ments tels que portT ype message types binding et service 13 6 2 2 portType Il d crit le web service les op rations qui peuvent tre r alis es et pour chacune des op rations comment l change des messages doit se faire le tout tant group dans le port type Il y a plusieurs types d op rations e One way L op ration peut recevoir un message mais ne donne pas de r ponse e Request response L op ration peut recevoir une demande et va retourner une r ponse e Solicit response L op ration peut envoyer une demande et va attendre une r ponse e Notification L op ration va envoyer un message mais n attendra pas pour une reponse Chaque op ration est r pertori e et pour chaque input output les actions et messages sont sp cifi s Pour savoir quoi correspond par exemple tns HelloWorldContract HelloWorld InputMessage il faut se rendre dans la partie message du WSDL
294. roxyCs ToDIl 7 ReportProgress 8 getServices Informations 9 ReportProgress 10 getClassesServicesinformations 11 ReportProgress X Traitement commun termin Appeler le traitement sp cifique Si echec traitement termin Tout ce traitement est effectu pour les diff rentes g n rations Il est ax autour de la classe CommonGeneration qui se charge d utiliser les diff rentes classes permettant de cr er la base n cessaire a savoir obtenir toutes les informations utiles du WSDL qui seront utilis s par la suite pour r aliser une application 1 La m thode generatelt int choix est appel e lorsque l utilisateur demande une g n ration parmi les 3 disponibles la variable int indiquant quel doit tre la g n ration 2 Cr ation du dossier qui va contenir l application g n r e mais galement tous les fichiers temporaires et les fichiers de code C est la m thode statique createGenerationFolderName choix de la classe MyTools qui est charg e du travail A noter qu ensuite il y a une s rie d objets qui sont initialis s 3 Utilisation de la m thode proxyAndConfigGeneration bw de la classe SVCTool afin de cr er le proxy et le fichier de configuration 4 Un objet de type bw a t pass en param tre dans la m thode pr c dente Ceci permet de mettre jour l affichage en mettant un texte dans le stat
295. rs ce qui j esp re me permettra d avoir une transformation qui fonctionnera mieux qu actuellement et qui soit galement plus simple Planing nouvelle orientation commenc le 1 1 mars e Tentative de correction des bugs de g n ration custom non concluant 11 5h e G n ration code red veloppement pseudo code trace 24h Vionnet Olivier HES SO Valais juin 2008 175 217 Hes so Wiis EE Coder le pseudo code 18h Debug et essais 24h e Wizard identifier les l ments rendre param trable 4h e Gestion des tests exploration de nunit 4h e Expression essayer et regarder comment sont construits certains contr les 4h S1 le travail se passe selon l estimation j ai un doute tout de m me je devrais avoir termin ceci le dimanche 30 mars les 2 semaines de vacances que j avais planifi es sont remplac es par 48h de travail Total 20h Vionnet Olivier HES SO Valais juin 2008 176 217 NALAIS Hes s O WALLIS ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEEEIEEEEEERE 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e 2000000000 000000000000000000000000000000000000000000000000000000000000000000000000e 2000000 000000000000000000000000000000000000000000000000000000000000000000000000000e 20000000 000000OCCO0OC0CCCOCCOCOCCROLOCCOOCCCOCCCOLOLOCC0C00000000000000000000000000000000e Sujet du travail de dipl me WSD
296. s Input Obj Header 153 109 6 32 String id 83 nameMember Username RE id 99 nameMember he RS certes CH Responding String id 84 nameMember Password String id 85 nameMember Tracer Kgl String id 86 nameMember HostName 153 109 6 32 Output CutcomeTypes id 90 nameMember Outcome SUCCESS String id 91 nameMember Message String id 92 nameMember Identity P Double id 93 nameMember Delay 0 359375 Utilisation de l application op ration WholsThat r ussie Une erreur s est produite lors de l utilisation de cette op ration pour l adresse IP 153 109 6 32 www hevs ch Le message d erreur obtenu lors de l utilisation est le suivant La r f rence d objet n est pas d finie une instance d un objet Cette erreur provient du fait que l objet Whols retourn est nul Apr s avoir recherch dans le code C il s av re que le probl me se situe lors du traitement du tableau de String 1420 Il n y a pas de v rification qui est faite pour savoir si le membre de l objet est nul alors que pour tous les types simples 1l y a cette v rification En utilisant l IP 143 166 83 38 www dell com l op ration a r ussie Vionnet Olivier HES SO Valais juin 2008 61 217 IsOpenMarketDate GetOpenMarketDates String id 13 nameMember Country WholsThat SetLastClosingDate IsMarketOpen Obj Whols
297. s Finalement avec toutes ces informations travailler sur papier pour cr er l architecture de l application et se mettre la place de l utilisateur qu est ce que j attends d une application comme a comment faudrait il faire pour gagner un maximum de temps lorsque j utilise l application quel sera le cheminement suivre pour ex cuter une fonctionnalit est ce que je peux utiliser mes outils pr f r s Une fois l architecture d finie la cr er afin de se rendre compte de comment fonctionne l ensemble et ensuite se pencher sur la partie g n ration de code en d veloppant les templates et en testant au fur et mesure les diff rents l ments des templates Au final ce travail de dipl me fut enrichissant Bien que cela m ait permis d accro tre mes connaissances au niveau du XAML de la transformation XSLT et d explorer un peu plus les web services il me reste encore ind niablement un tr s long chemin parcourir avant d avoir une meilleure ma trise de ces l ments et l exp rience n cessaire pour r aliser une application bien construite r pondant parfaitement aux attentes de l utilisateur Vionnet Olivier HES SO Valais juin 2008 100 217 VALAIS seeccccccccccccccccc cece eee cece eee e eect e eee eee esse eseteeseseseseseeessseeeeeeees Hes so WALLIS EE Ab AER GA EEEEEEEEEEKEEEEEEEEEEKEEEEKEEEEEEKEEEKEKEAEEEEEEEEEER bh A EEEEEEEEEEEEEEEEEEEER 13 Annexes 13 1 Definition
298. s 13 1 1 Web service Les web services sont des petits l ments de code qui sont construits pour s occuper d une t che bien pr cise Ils s appuient sur des protocoles de communication qui utilisent le XML Ils sont ind pendants du syst me d exploitation qui les ex cute et du langage de programmation utilis Leur t che est de connecter aussi bien des gens que des syst mes ou des appareils entre eux Les avantages d utiliser les web services sont de rendre plus facile la communication entre applications la r utilisation de services existants la distribution d informations a beaucoup de clients ou utilisateurs du service et sont rapides a d velopper 13 1 2 W3C Le World Wide Web Consortium s occupe de d velopper et de mettre en place des sp cifications et standards pour le web pour une meilleure interop rabilit entre les diff rents services possibles 13 1 3 WSDL Le WSDL Web Services Descriptions Language est un document crit en XML qui d crit un web service Il sp cifie l adresse du service et les diff rentes m thodes expos es Il repr sente un contrat entre le fournisseur du service et le consommateur de ce service De plus le WSDL est ind pendant de la plateforme et du langage utilis Une recommandation ou guide de sp cification a t mise en 2001 par le W3C Cette recommandation sp cifie la version 1 1 du WSDL et est suivie par Microsoft pour le WCF En juin 2007 une nouvelle
299. s tapes 1 Lancer l application pour les tests cr e les fichiers n cessaires pour conna tre les op rations possibles 2 Choix des op rations que l on veut tester Ja opt pour utiliser des CheckBox au lieu de RadioButton Maintenant l utilisateur peut choisir plusieurs op rations en m me temps traiter WW JestWindow Liste des op rations Add Double Double gt Double Subtract Double Double gt Double _ Multiply Double Double gt Double _ Divide Double Double gt Double _ MyString String gt String _ MyFloat Single Single gt Single _ MyBoolean Boolean Boolean gt Boolean _ MyDecimal Decimal Decimal gt Decimal _ MyLong Int Int 4 gt Int 4 _ Mylnt Int32 Int32 gt Int32 _ MyShort Inti6 Inti6 gt Inti _ MyByte Byte Byte gt Byte _ MyUlong Ulnt 4 Ulnt 4 gt Uirt a Myint UIntS2 UInt32 gt Ulnt32 MyUshort Uinti6 Uinti6 gt Ulntis MySbyte SByte SByte gt SByte _ MyDateTime DateTime gt DateTime _ MyStringArray String gt String _ MyDoublesrray Gouble gt Double Continuer 3 Cr ation des fichiers de codes la classe objet qui contient les appels Vionnet Olivier HES SO Valais juin 2008 187 217 Hes so au web service et la classe de test qui contient juste un exemple en commentaire et que l utilisateur devra remplir la main pour les tests
300. s uutput Obj NineDayForecastinfo Obj DayForecastinto Obj DayForecastInfo String id 231 nameMember Day String id 223 nameMember Day Sat String id 232 nameMember Date String id 224 nameMember Date beis Jun Le Int32 id 233 nameMember Icon Index Int32 id 225 nameMember IconIndex 7 E String id 234 nameMember Forecast String id 226 nameMember Forecast Isolated T Storme Sunny String id 235 nameMember High String id 227 nameMember High 37 83 String id 236 nameMember Low String id 228 nameMember Low SS 65 S String id 237 nameMember PrecipChance String id 229 nameMember PrecipChance 10 3 jours ae jours Obj DayForecastinfo Obj DayForecastinfo String id 239 nameMember Day String id 247 nameMember Day Sun Mon String id 240 nameMember Date String id 248 nameMember Date Jun 15 Jun 16 Int33 id 241 nameMember IconIndex wo id erie an be ikoni String id 242 nameMember Forecast String id 250 nameMember Forecast AM Showers Scattered T Storms String id 245 nameMember High String id 251 nameMember High gfe EK String id 244 nameMember Low String id 252 nameMember Low 62 66 String id 245 nameMember PracipChance String id 253 nameMember PrecipChance Vionnet Olivier HES SO Valais juin 2008 40 gd 70
301. s tableaux personnalis s car en les ditant l application effectue une transformation XSLT pour arriver un fichier XAML et C final et utilisable Cette dition permet de sp cifier pour les cas o 1l y a des tableaux personnalis s parents de saisir la taille 14 Une fois le choix termin le code d v nement du bouton s occupe de contr ler qu il n y a pas de UserControls sp ciaux non transform s et s occupe de lancer Vionnet Olivier HES SO Valais juin 2008 29 217 Hes so VALAIS EE NW VE EE EE un nouveau BackgroundWorker qui a pour tache de lancer la m thode generatelt2 de l objet Generate WizardClient 15 Lancement de la m thode generatelt2 pour g n rer l application 16 Informer l utilisateur que l application s occupe de prendre tous les UserControls qui ont t choisis 17 Cr ation des fichiers de donn es pour l App Window et le csproj avec chaque fois la transformation effectu e par la m thode createFile de l objet FileGeneration 18 Chaque fichier est r crit pour convertir les caract res sp ciaux 19 G n ration de l application avec msbuild 20 Affichage du r sultat de la g n ration Si elle s est bien d roul e un bouton est cr dans la fen tre principale pour lancer l application g n r e 4 4 G n rer du code pour la g n ration test Nunit utilisateur
302. s19 Custom string Custom Double 20 WefService20 Custom wefs20 Custom Custom2 Double 21 WefService21 Custom wefs21 Custom string Custom2 Double String 22 WefService22 Custom wefs22 Custom string Custom2 Double String Boolean 23 WefService23 Custom wefs23 Custom string Custom Custom3 String 24 WcfService24 Custom wefs24 Custom string Custom2 Custom3 String int Boolean 25 WefService25 Custom wefs25 Custom string Custom2 Custom3 String 26 WefService26 String wcfs26 27 WefService27 Custom wefs27 Custom string Custom2 string Custom3 int 28 WefService28 Custom wefs28 Custom string Custom2 string Custom3 int 29 WefService29 Custom wefs29 Custom string Custom2 string Custom3 int 30 WefService30 Custom wefs30 Custom string Custom2 string Custom3 string 31 WefService31 Custom wefs3 1 Custom stong Custom2 string Custom3 string 32 WefService32 Custom wcfs32 Custom string Custom2 string Custom3 string Double Vionnet Olivier HES SO Valais juin 2008 48 217 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 VI VALAIS Hes so WefService33 Custom wcfs33 Custom string Custom2 string Custom3 string Double WefService34 Enum wefs34 string Enum1 WefService35
303. sion de Visual Studio Il tait pr f rable de continuer sur cette voie que de convertir les projets pour la version 2008 avec les probl mes que cela aurait pu apporter L inconv nient de cette m thode est que toutes les fonctionnalit s pour faciliter le d veloppement du XAML par exemple ne sont pas pr sentes Ainsi un double click sur un bouton ne g n re pas la m thode Click dans le code behind C est pourquoi d s que Visual Studio 2008 beta 2 est sorti j ai l ai utilis suivi de la version finale Visual Studio 2008 Professional La beta 2 avec le framework 3 5 beta a permis de se familiariser avec le nouvel environnement de d veloppement tr s semblable la version 2005 patch e et pouvoir tester plus facilement l utilisation des l ments XAML 13 3 2 Visual Studio 2008 beta 2 Au niveau de l installation rien de particulier signaler 1l suffit de suivre le wizard d installation Probl mes rencontr s Outre quelques bugs d rangeants dont la fermeture intempestive du programme par moments j ai rencontr un probl me lors de la cr ation de nouveaux projets Le message d erreur tait le suivant The build was aborted because the HostLogger logger failed unexpectedly during initialization La r paration n a pas permis de r soudre le probleme En cherchant sur Internet 2 possibilit s pour r soudre ce probl me e D sinstaller Microsoft Windows Software Development Kit 6000 0 0
304. sponsable Schumacher Michael Ignaz Russo David Semaine 26 Woche 25 04 2008 1 05 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden Commence la partie wizard Choix des op rations traiter OK Pour la partie Input mis en place la g n ration des UserControls standard Boolean non test Il y aun UserControl pour chaque donn e s il y a 2 param tres strings il y aura 2 UserControls diff rents Mise en place de la s lection des UserControls utiliser Pour chaque donn e une liste d roulante avec le choix des UserControls en g n ral il n y a que celui par d faut En s lectionnant une liste d roulante on affiche le nom du dernier template s lectionn et un bouton pour l diter ouvre une nouvelle fen tre Note j tais parti dans un premier temps en affichant au dessous l dition mais a faisait trop charg ensuite Dans cette nouvelle fen tre 2 TextBox xaml cs pour diter le contenu Par exemple pour le cas des Enums mettre dans les ComboBoxItems les diff rentes valeurs de l Enum lt StackPanel gt lt Label Height 28 Name ucLabel info VerticalAlignment Top HorizontalAlignment Left MinWidth 120 gt Enum1 lt Label gt lt ComboBox Height 23 Name ucComboBox saisie VerticalAlignment Top gt lt ComboBoxItem gt al lt ComboBoxItem gt lt ComboBoxItem gt a2 lt ComboBoxItem gt lt ComboBoxItem gt a3 lt ComboB
305. sssssssssssssesssesssssssssssessssssssesscs Test Elke CNRC LES EME Ciel IER EE ob EC new Nunitobjeci Assert IsInstanceOfType Type GetType System Double objC add 4 2 Assert Arekgual o Obj G add 4 5 2 Assert Arcekgual 10 ob adda Z je Accert or eater 20 Ee j Test EE O e clin NummeObyece Che new Nuni tobe ci Assert Arekgual 2 Obie diw 4 2 ASsere Axcenouall a ODIL div 2 Ee ASssere lsNahl Ee Test OWS Lie Weave esse mille El Ee GEET new NUnit Obec Ascert Pr qua Moore mod 2e PSS re de E oD multe nr Test PUD CEVO Sse SOUS Er 0 Num eObgyeer CIC mew Nummer objec Assert Arcemhowal 2 obyC soustr 4 2 EE EE EE obye soustr s 7 E ye Ve pie Il faut faire attention ce que chaque op ration m thode test e ait le tag Test et utilise la bonne classe pour instancier l objet objC Si l on doit comparer un type avec un autre en utilisant IsInstanceOfT ype il faut toujours pr ciser le type en entier Double ne sera pas la m me chose que System Double Une fois que tous les tests sont rentr s 1l ne reste plus qu lancer la g n ration en cliquant sur G n rer le test On obtient le r sultat suivant W R sultat des tests unitaires Il se peut tr s bien qu un ou plusieurs tests unitaires chouent Voici un exemple Test PADCEV Or RES eaa EI EE DEE EE eca ASsere E EE e Ek EE E Ee DE Doublet ob a
306. standard la majorit des cas Il est compos d un Label pour afficher les informations du type le nom et id du membre d un TextBox avec une couleur diff rente suivant le type et d un Label d erreur cach rootBoolean rootBooleanArray rootEnum rootEnumArray Ces templates sont destin s la cr ation de UserControls sp cifiques dans la partie wizard La logique est commune au 4 templates La premi re tape consiste crire les informations de base tel que le contenu x Class et les differents contr les qui sont toujours identiques Tout le reste contenu dans le template est destin la 2 transformation La deuxi me tape consiste crire les contr les sp cifiques suivants ce que l utilisateur aura fourni comme information concernant l emplacement du type Il y a 3 cas de figures possibles le type n est pas contenu dans un tableau de type personnalis ou il est contenu dans 1 ou 2 tableaux de type personnalis Suivant ce qu il aura pr cis et qui aura t transpos dans le fichier de Vionnet Olivier HES SO Valais juin 2008 10 217 Hes so VALAIS WALLIS eeeeaee eee seeeeeeee eee eeeeeeeeeeseeceeeese eee eeceeceeeeeeeeeeeeeeeeeeeeeeseeeeeeeeceseseeeeee eeeeecee ee ecoeeeceeeeeeeeeeeeeeeceee eae eeseeeeeeeeceeeeeeeeee 0000000000000e 00000000e h A EE ab A AE EEEEEEEEKEKEAEEEAEEEEEAEEAKEEEAEEEEKEEEKEAKEEAEEKEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAKEER ab A EEEEEEEEEEEEEEEK
307. t 16 62 lt P E gt lt Name gt DELL INC lt Name gt lt Stock gt lt StockQuotes gt R sultat g n ration wizard L affichage est le m me que pour la g n ration automatique 6 2 10 Currency Convertor Taux de change Source http www webservicex net WCE ServiceDetails aspx SID 18 WSDL http www webservicex net CurrencyConvertor asmx wsdi Exemple Quel est le taux de change entre des euros EUR et des francs suisse CHF Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique R sultat g n ration wizard G n ration de l application r ussie G n ration de l application r ussie Utilisation de l application r ussie Utilisation de l application r ussie ConversionRate ConversionRate Input Input Currency id 1 nameMember FromCurrency Bea ane E oder ele LL V 2 7 EUR EUR Ki Currency id 2 nameMember ToCurrency Currency id 2 nameMember ToCurrency CHF La geg Output Double id 3 nameMember Double id 3 nameMember 1 6203 1 6203 6 2 11 Global Weather Vionnet Olivier HES SO Valais juin 2008 51 217 Hes so WA GE WE EE Obtenir un rapport de m t o pour une station Source http developer capeclear com q webservices globalweather index shtml WSDL http live capeclear com ccx GlobalWeather wsdl Ce web service es
308. t compose de diff rentes operations getStation isValidCode listCountries searchByCode searchByCountry searchByLocation searchByName searchByRegion getWeatherReport Rapport d erreur Erreur svcutil binding http get et post erreur non fatale le binding soap fonctionne R sultat g n ration automatique G n ration de l application r ussie Utilisation de l application r ussie searchByCode searchByCountry searchByLocation searchE Name searchByRegion getWeatherReport getStation isValidCode listCountries Input Obj getStation String id 2 nameMember code fro Output Obj getStationRespanse Obj Station String id 5 nameMember icao for String id 6 nameMember wmo 47671 String id 7 nameMember iata Po Double id 8 nameMember elevation Ge Double id 9 nameMember latitude 35 55 Double id 10 nameMember longitude 139 783 String id 11 nameMember name Tokyo International Airport String id 12 nameMember region dere String id 13 nameMember country Japan String id 14 nameMember string RT T TYQ Tokyo International Airport Jap Vionnet Olivier HES SO Valais juin 2008 R sultat g n ration wizard G n ration de application r ussie Utilisation de l application r ussie getStation isValidCode listCountries getWeatherReport fro Out
309. t par exemple une caisse enregistreuse on saisit les prix des articles et a chaque fois le web service garde le r sultat des additions pr c dentes pour ajouter le prochain prix Une fois que l on souhaite le r sultat on demandera au web service la somme totale 8 3 Types supportes L application supporte les types les plus courants simple ou complex tableau String Double Boolean Single Decimal Int64 Int32 Intl6 Byte UInt64 UInt32 UIntl6 SByte DateTime Elle supporte galement les types qui sont des num rations ou tableau d num rations ainsi que les types personnalis s Le type XmlAttribute n est pas impl ment 8 4 tests NUnits cod s la main Les tests doivent tre d velopp s et crits par utilisateur Cela comprend les tests en eux m me et galement la pr paration des diff rents objets n cessaires pour utiliser le web service et le traitement du retour pour ensuite tester les valeurs Il aurait t pr f rable que ce soit l application qui s occupe de g n rer le code pour la pr paration des diff rents objets et les tests mais cela aurait demand norm ment de Vionnet Olivier HES SO Valais juin 2008 95 217 seeeeeeoeseeeeeeeeeeeeseeeeeeeeeeeceeeeseeeeeeeeeeeeeeeeeeeeeeeeeeeeee eG 00000000ve 000e eg VALAIS geg o e H ee Hes so WALLIS EE temps pour d velopper cette partie donc la solution d offrir un point d entr e pour pouvoir ensuite tendre les fonctio
310. th 200 gt lt FlowDocument gt Paragraph lt Hyperlink google lt Hyperlink gt This as flow content and you can lt Bold gt edit me lt Bold gt Button Height 27 Nime bution Wideh 75 Button Button lt Paragraph gt Ponar one lt Image Height 150 Name imagel Width 200 Source Collines jpg lt Paragraph gt lt FlowDocument gt lt 7 Rene xEBOr lt Label Height 23 Name label3 Width 120 gt PasswordBox lt Label gt Vionnet Olivier HES SO Valais juin 2008 138 217 eg NALAIS 2000000000000000000000000000000000000000000000000000000000000000000000000000000000e ee Hee co WALLIS elated BE dd ee dr don EE E bh AE EEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEEEEEKEEUEEEAEEEEEEEEEEEEUEEEEEEIEEEEEEEEEEEEEEEER ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEIUEEEEEEEEEIEUEEEIEEEEEERE lt PasswordBox Height 21 Name passwordBoxl Width 120 gt lt StackPanel gt TextBox hello world RichTextBox This is fow content and you can edit me Password Box ere 13 6 4 Affichage de texte 13 6 4 1 Label Pour n afficher qu une ligne le meilleur l ment est le Label A noter une chose trange avec l affichage lorsque l on utilise l attribut FlowDirection dans VS 2008 beta 2 lorsque la propri t est mise en RightToLeft le texte commence sur la droite et que l on repasse en LeftToRight le designer ne fait pas le changement par contre une fois compil le t
311. tion cr e les UserControls 9 A ce stade l application va parcourir le fichier de donn es des op rations et pour chaque type trouv cr er le ou les UserControls C est ici galement que l application contr le pour chaque type s il a des parents qui sont des tableaux personnalis s si c est le cas la cr ation de l UserControl se fait diff remment et utilise pour chaque cas un fichier de donn es pour UserControl diff rent 10 Informer l utilisateur sur le r sultat de la cr ation des UserControls A ce stade tous les types pr sents pour les op rations on au moins un UserControl standard et pour les types tels que Boolean Boolean les num rations et tableau d num rations un UserControl sp cial qui est personnalis suivant la pr sence ou non de tableaux personnalis s comme parent 11 Initialisation de la fen tre permettant l utilisateur de choisir les UserControls a utiliser qui sont pour chaque type affich dans un ComboBox 12 La fen tre est affich e a l utilisateur pour qu il puisse choisir les UserControls qu il souhaite utiliser A chaque fois que l utilisateur choisi un UserControl son choix est stock dans un ArrayList ce qui permettra plus tard de savoir quels sont les UserControls qu il faudra incorporer pour la g n ration 13 Si Vutilisateur utilise des UserControls sp ciaux pour la partie input 1l doit imp rativement les diter qu ils contiennent ou non de
312. tion demand e par l utilisateur 4 2 G n rer du code pour la g n ration automatique Window1 GenerateClient Xm IDataGenera FileGeneration My Tools tion 1 ReportProgress 2 generateXm DataFile gt 3 createUserControl lt 4 generateXmlAppFile 5 generateXmICsprojFile 6 createFile 7 rewrite 8 ReportProgress 9 ReportProgress Si erreur gt stop ici 0 msBuildlt lt 11 ReportProgress 12 setLaunchExec E X Le traitement pour produire une application de mani re automatique ne demandant pas d intervention de la part de l utilisateur est effectue par la classe GenerateClient avec l aide de diff rentes classes Lorsque le traitement effectu par CommonGeneration est termin un objet GenerateClient est instanci en passant en param tre les objets BackgroundWorker et CommonGeneration ceci pour avoir la liste des op rations des classes sp ciales et le nom du dossier de g n ration entre autres Vionnet Olivier HES SO Valais juin 2008 211217 gt VALAIS 6 6eegeegeegggegggeeeeeeggegeggegegeeegeegegegeeggeeeegggeggegeggee g6eegegegeegegeeee eeeeceeeee NO A 8 H 10 11 12 200000000000 000000000CRCCOROCCOROCCOCOCCOCOCCCLOCCeCOCLCLOCCRC00000000000000000000000000000e 2000000000 0000000000000000000000000000
313. tour pour le cas o l application est utilis e plus d une fois La 2 tape s occupe de cr er un string pour accueillir la valeur de retour de l op ration Cette variable string est importante car elle permet de r duire la complexit des templates XSLT par d faut quel que soit le type que UserControl doit afficher il attend toujours un string pour mettre a jour le contenu de son TextBox C est l UserControl ensuite de s occuper de traiter correctement ce qu il re oit Ensuite le TextBlock destin aux messages d erreurs est nettoy La 3 tape s occupe de r cup rer le contenu saisi par l utilisateur et de stocker la valeur dans une variable du type attendu par le web service Dans ce cas ce sont des Doubles Vient ensuite l appel au web service et la r cup ration de la valeur de retour Convertir le r sultat en string puis transmettre l UserControl qui s occupe d afficher le r sultat 5 1 2 userControls Ce dossier contient tous les UserControls qui sont utilis s par l application g n r e Dans le cas de ce web service il n y a que 2 UC diff rents un destin pour l input et l autre pour l output Exemple avec UC Double I XAML Use rConn sole Chass NCE Ee xmins http schemas microsoft com winfx 2006 xaml presentation SE EE schemas muerosort com wantx 2006 7 mie EE EE EE HorizontalAlignment Left MinWidth 120 gt Double lt Label gt
314. ts au niveau du XAML le code est simplifi C est juste une ligne par type trouv pour poser l l ment Pour la partie cs apr s avoir initialis le composant il faut mettre a jour chaque label d information de chaque UserControl par d faut il n y a que le type qui est pr sent de base Il faut rajouter l identifiant et le nom membre provenant du web service A noter que le probl me de remise z ro des TextBox apr s utilisation devrait tre corrig Je commence perdre ma motivation Total 53h Vionnet Olivier HES SO Valais juin 2008 179 217 TTT DR Hes so WALLIS SSssssssssssssssssssssssssssssssssessssssssssssssesssssssssssssssssssssssssssssssss Sujet du travail de dipl me WSDL amp XAML Etudiant Vionnet Olivier Professeur responsable Schumacher Michael Ignaz Russo David Semaine 22 Woche 28 03 2008 03 04 2008 D compte des heures hebdomadaires Deklaration Wochenstunden Tache Aufgabe Heures Stunden e Red veloppement de la g n ration de code termin e Choix d une limitation pour les tableaux de type custom Custom Primitif Custom Complex SSS S o Custom Custom Primitif Custom Custom Complexe 1 Custom Custom Primitif Custom Custom Complexe 1 e Cr ation d une 30aines de services WCF pour tester la g n ration de code e Microsoft Expression 2 install la beta f v 08 pour conna tre comm
315. type trait se trouve dans 0 1 ou 2 tableaux de type personnalis Tout comme le fichier de transformation UC xaml xslt il est compos de 5 templates root Ce template est utilis lorsqu il faut cr er un UserControl standard Il s occupe d crire le bon namespace si n cessaire d importer le type et d crire le nom de classe du controle Il y a galement un v nement sur la perte de focus du contr le Cet v nement est uniquement pr sent pour montrer qu il est possible de contr ler des valeurs et d afficher un message d erreur le cas ch ant Toutes ces m thodes n ont pas besoin d tre modifi e pour fonctionner avec tous les types rootBoolean Ce template est destin la cr ation de UserControls sp cifiques pour le type Boolean Au lieu d afficher un TextBox il affiche un CheckBox getUCValue Aucun tableau d objets personnalis s qui est parent lt get Boolean gt amp lt xsl for each select zeroDimension input gt public er EE String returnValue r amp lt xsl for each select BooleanC amp gt returnValue amp lt xsl value of select nameElement amp gt IsChecked return returnValue amp lt xsl for each gt SIG xsl for_eachsgt Vionnet Olivier HES SO Valais juin 2008 11 217 VALAIS secccccccccccccccccc cece eee eee eee e eee cece eee eee ees cesses esos eeeseseeessseeeeeeees Hes so WALLIS 9 9 9 9 8 9 9 8 9 9 9
316. ue l on va recevoir au niveau de la taille des tableaux C est pourquoi pour les UserControls sp ciaux la cr ation des l ments graphiques est effectu en C liste des usings namespace WCFPersonne userControls using Wefoervicel PUO Eege user String enumStrArray Enum GetNames typeof Genre puoli WC Genre EE BEE d et Omponent Cette cr ation est effectu e dans la m thode setUCValue C est les donn es qui vont d terminer combien de fois 1l faut mettre un ComboBox Cette information est trouv e en splitant le string pour obtenir un tableau temporaire Pour chaque entr e du tableau je cr e un contr le et je remplis ses items Il ne reste plus qu s lectionner la valeur pour chaque contr le public void setUCValue String str Vionnet Olivier HES SO Valais juin 2008 44 217 eeeecaee eee se eeeeeeeeeeeeeeeeeeeeseeceeeese eee eeeeeeeeeeeeeeeeee ee eeeeeeeeeeeeeeeseseeeeee VALAIS Ah EE EEEEEEEEEEEEAKEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEER ab A E EEEEEEEEEKEEEEEEEEEEEEEEAEEEEEEEEEEEKEEAEKEEAEEEEEEEEEEEEEZEEEEEEEEEEEETEEEEEEEEEEER 20000000000000000000000000000000000000000000000000000000000000000000000000000000e Steng Creve wel om icleca Ces is ComboBox co null Sering memory ee br oP newn oer agit fe ae SVSECM Ehe Ee li COPE TONS Removekmpreyameries One iane NT ie ie EE eb new ComboBox cb Name Ti
317. ufgabe e S ance Heures Stunden e En train de travailler la partie wizard pour impl menter les types qui peuvent utiliser d autres contr les que le TextBox par d faut Je rencontre pas mal de difficult pour mettre en place les l ments identifier et corriger les bugs dont une bonne partie survienne lors de la 2 transformation XSLT Taille des tableaux J avais pens dans un premier temps g rer la taille des tableaux dans la fen tre permettant de s lectionner les UserControls utiliser mais je suis rest bloqu sur la fa on de faire pour saisir les tailles des sous tableaux les tailles pouvant tre diff rentes cela implique d avoir un nombre diff rent de TextBox pour saisir les tailles et comme la majorit du contenu affich est cr en C c est tr s difficile de s y retrouver et de r cup rer des valeurs J ai finalement pris la d cision de traiter ceci dans la partie dition des UserControls sp ciaux enum et boolean pour viter de rester coincer sur ce probl me Mais a pr sente un inconv nient l utilisateur est responsable de mettre les bonnes tailles du ou des tableau x qui contiennent le type pour chaque UserControl sp cial Suite du travail e Terminer la partie wizard dans le courant de la semaine prochaine Total Vionnet Olivier HES SO Valais juin 2008 33h 197 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEEUEEEEIEEEEEEEEEEIEUEE
318. ui lt hwsdl operation lt hwsdl hinding gt 13 6 2 6 Ports Il fait le lien entre l interface de liaison binding et l adresse r seau d o se trouve l impl mentation de ce type de port pouvant tre acc d 13 6 2 7 service C est un groupement logique de port On peut par exemple trouver diff rents ports qui repr sentent diff rents types de connexion pour un m me port type une m me fonctionnalit disponible au travers de diff rents protocoles de transport Cet l ment fourni l adresse physique par laquelle on peut acc der au web service lt wsdl sermice name Hello WorldContractTspe wedl port name BasicHtipBinding HelloWorldContract binding tns BasicHttpEmding Hello WorldContract lt soap address location http MocalhostheUoworld lt hwsdlpori lt hwedl service Vionnet Olivier HES SO Valais juin 2008 126 217 h A EEEEEEEEEEEEEEUEEEEEEEEUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEIEUEIEEETER 00000000000000e 000000000000000000000000e 20000000000000000000000000000000000000000000000000000006e VALAIS Hes so WALLIS 0000000006 0000060066006000000600006000600000C 000000000000000000000000000000000 c bh A EAEEEEEER 00000000ve 0000000e 000000000ee Kb A EAR 200000000000000000000000000000000e 13 6 3 XAML Avec la version 2008 de Visual Studio utiliser le XAML devient plus facile Certaines actions ne n cessitent plus d tre cod es a la main par exemple maintenant un bouton pos
319. um pour prendre les bons UserControl En ce qui concerne le template du code behind a va tre long faire les modifications et tout retester pour viter qu a un endroit un Enum soit consid r comme un type custom Je pense laisser de c t les tableaux d Enum et n impl menter que les Enum Le plus simple est de se baser sur le model actuel on peut avoir lors du traitement le choix entre primitif complexe custom et custom Je vais mettre pour chaque cas le choix Enum Temps estim 24h si pas de probl mes actuellement j en suis 10h et J ai commenc a modifier le template de code behind Modification de l utilisation des UserControls actuellement que ce soit pour de l input ou de output il n y a pas de diff rences pour chaque type de UserControl cela sera probl matique pour la partie wizard Il faut modifier les templates et la cr ation des fichiers UserControls pour Vionnet Olivier HES SO Valais juin 2008 181 217 WS EE Hes so Total EEE EEE EEE WW RL EE ER TE ET PE SES EEE RE ES des te qu il y ait pour chaque type un UserControl pour l input et l output Temps estim 12h Cr ation de 1 ou 2 exemples concrets de web service par rapport l informatique de gestion afin de mieux pouvoir expliquer le fonctionnement du client g n r et tre moins abstrait que les services WCF de test que j ai d velopp s Temps estim 12h D velopper la partie
320. un projet en ligne de commande sous VS 2008 g n rer une application console en utilisant le web service Service Model Sample fourni dans le sdk de Microsoft Contient 4 op rations calculatrice R cup ration des informations du wsdl e G n ration du proxy et fichier config svcutil e G n ration du proxy sous forme de dll e Acc s la dll runtime pour r cup rer toutes les m thodes et leur signature e Affichage console des informations trouv es dans la dll G n ration du fichier MyProgram cs qui doit s occuper d utiliser les m thodes du web service avec des valeurs par d faut tout n est de loin pas g n r dynamiquement ceci parce qu il risque d avoir beaucoup de diff rences entre du code console et du code dans un environnement XAML G n ration d un ex cutable en utilisant le fichier MyProgram cs et mettre tous les fichiers n cessaires dans un m me r pertoire exe proxy dll config Recherche sur les possibilit s de g n rer du code qu est ce qu il faut utiliser Choix retenu XSLT Points claircir pour le futur e Utilisation d un autre binding que wsHttpBinding th oriquement a ne devrait pas poser de probl me car cette partie est d termin e par le Vionnet Olivier HES SO Valais juin 2008 162 217 fichier config g n r par rapport au WSDL eeeeaee eee eeeeeeeeeeeeeeeeeeeeeseeceeeese eee eeceeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeseseeeeee
321. ur un GroupBox dont le header est Obj Personnel Cela indique que l on est en pr sence d un tableau de type Personne Tout ce qui est contenu dans le GroupBox l int rieur de la ligne grise fait parti de l objet Personne A l int rieur on retrouve bien l ge de type int le nom et pr nom qui sont des strings Pour le genre c est le type Genre qui est un num Comment savoir si c est bien un num et pas un simple objet Simplement parce que si c est un objet 1l ne peut pas avoir d UserControl 1l serait un GroupBox C est le cas du dernier membre un objet le tableau d Ami A l int rieur se trouve le nom et pr nom de type string et la propri t AmiDenfance de type Boolean Comment utiliser l application g n r e Lorsqu il y a des tableaux il faut utiliser des d limiteurs sans espaces Cela d pend s il y a uniquement un tableau ou s il y a un tableau dans un tableau Par exemple 1 tableau a c a taille 3 2 tableaux a b c d e f Le tableau parent TblParent est de taille 2 a b et c d e f Pour chaque entr e du tableau parent 1l y a un autre tableau TblParent 0 a b Vionnet Olivier HES SO Valais juin 2008 78 217 Hes so f f VALAIS ceeeseecscccccccscce secs eee ee eee eee OOOO OOOO SESE SOOSSOO ESOS OOOE OSES OOS SOESESEEE WALLIS sccccccccccecs PPTTTTTTTITITITI TIT TIT TITI III TITI TECH TblParent 1 c d e
322. ur de binding il ne sait pas quelle m thode doit tre utilis e pour utiliser le web service car il y en a plusieurs Pour r soudre ce cas lorsque je cr e l objet client checkSoapClient client new checkSoapClient il faut que je passe en param tre le nom du endpoint a utiliser D autre part lors de la g n ration du fichier de configuration svcutil renvoie des erreurs http forums microsoft com MSDN ShowPost aspx PostID 2893 137 amp SiteID 1 amp pageid 0 Il n arrive pas traiter 2 bindings Get et Post et donc dans le fichier de configuration je n ai que les bindings pour le soap qui sont pr sents J ai modifi le code qui se charge de r cup rer le nom de la classe pour cr er le client Je r cup re maintenant tous les bindings Ensuite je contr le que les bindings sont bien pr sents dans le fichier de configuration je me base sur l attribut contract du n ud endpoint D s qu un est pr sent J arr te les tests et je l utilise Si je n en trouve aucun c est qu il n y a pas l attribut contract et j utilise celui par d faut C est la seule solution que j ai trouv e jusqu pr sent qui me permette d utiliser le web service CDYNE et les web services que j ai cr s Probl mes actuellement non r solus Si J envoie un Hello au web service CDYNE mon application g n re une exception g n rale par contre si je marque n importe quoi qui n est pas un mot
323. us Gr ce l l ment Menu il est possible de cr er ses propres menus contenant des Menultem ainsi que la possibilit pour ces Menultem de contenir d autres l ments lt StackPanel gt lt Menu Background Salmon gt lt Menultem Header Menu 1 gt lt Menultem Header Iteml Name menulteml gt lt Menultem Header Item2 Name menultem2 gt lt Menultem Header Item3 Name menultem3 gt lt Menultem gt lt Menultem Header Menu 2 gt lt Menultem Header Sous Menu 2 gt lt Menultem Header Item2 1 Name menultem4 gt lt Menultem gt lt Menultem Header Iltem2 1 Name menultem5 gt Vionnet Olivier HES SO Valais juin 2008 144 217 Will Hes so WALLIS cccccccccccccccccccc ER 099 8 0 9 5 9 8 9 5 8 9 8 8 8 9 9 9 9 5 8 0 eee 8 8 0 8 8 0 8 9 8 8 6 8 8 9 8 8 8 5 6 6 8 8 8 0 0 8 Mernuitem Header m2 Name menviiemon lt Menultem gt lt Menu gt lt SErschkeEsael M Window Menu 2 Sous Menu 2 gt ren Item2 1 Item2 3 13 6 6 Images Border GroupBox 13 6 6 1 Image Pour ajouter une image dans un projet il faut avoir au pr alable avoir mis l image dans le dossier contenant le projet Il suffit ensuite dans la fen tre Solution Explorer faire un click droit sur le projet et choisir Add gt Existing Item Dans la nouvelle fen tre mettre le type d objets All Files et s lectionner l image Il n y a plus qu
324. usBarltem de 26 217 ab AE EEEKEEEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEKEEEEEEUEIEUEEEIEEEEEEEEEEIEUEEEIEEEEEERE Hes so de 8 9 VALAIS EE WE AR ORSRSS RSE SRAHELR ONES SESE EE la fen tre Affiche l utilisateur le message suivant Web service en cours d interrogation par svcutil Ce message est important car le traitement peut prendre du temps suivant que le web service est en local ou a distance que la connexion Internet est rapide ou non et le pc puissant ou non Idem qu en 4 Informer l utilisateur que la g n ration de la dll du proxy est en cours Utilisation de la m thode proxyCsToDII de MyTools pour transformer le fichier proxy cs en une dll afin de pouvoir y acc der en runtime pour obtenir les informations du web service Informer l utilisateur que l application r cup re la liste des op rations getServicesInformations s occupe de rechercher toutes les op rations qui sont disponibles dans la dil du proxy Informer l utihisateur que l application va r cup rer les classes sp ciales 10 getClassesServicesInformations s occupe de rechercher toutes classes qui sont des classes personnalis es et de conna tre tous les membres pr sents c est un inventaire 11 Si une erreur s est produite il faut informer l utilisateur 12 Dans le cas o il n y a pas eu d erreur un switch permet de diriger le code sur la classe sp cifique a utiliser pour r aliser la g n ra
325. utes http geekswithblogs net lorint archive 2006 07 06 84287 aspx Comparing HTML Tables to WPF Grids http geekswithblogs net lorint archive 2006 08 01 86857 aspx Learn WPF http learnwpf com Posts PostsByCategory aspx categoryld 85 1b9683 69b8 4d66 9381 1944b3a3a854 13 8 6 XSLT amp XPath Recommandation W3C sur le XSLT http www w3 org TR xslt Vionnet Olivier HES SO Valais juin 2008 209 217 ab AE EEEKEEEEEEEEEEEEEEEERK eege eegeeg 000000000000e 200000000000 000000000000000000600000e 20000000000000000000000000000000000000000000000000000000000000000000000000000000064e JPNALAIS EE HHH ee Hes so WALLIS Sn inchs QE nae a ees in D A a ee a oak een ace De dd dr de De Sp tcl ah den 200000000000000000000COCC0COCCC0000L000000000000000000000e 2000000000000000000000000000e Recommandation W3C sur le XPath Int ressant pour la s rie d exemples de Location Paths http www w3 org TR xpath Tutorial sur le XSLT et XPath avec de nombreux exemples transformation XML vers HTML Excellent site http www zvon org xxl XSLTutorial Output_fre contents html Tutorial sur le XSLT et XPath http www topxml com xsl tutorials intro default asp Valeur boucle et l ment courant en XSLT 1 0 Contient pas mal d exemples http erwy developpez com cours langage xsit boucle R f rence XSLT http msdn2 microsoft com fr fr library ms256069 aspx R f rence XPath http msdn2 microsoft com fr fr library ms2561 15 aspx
326. uts IsEditable et IsReadOnly permettent de modifier le comportement du contr le IsEditable IsReadOnly False False Saisir un string pour s lectionner un item si le d but du string saisi ne correspond a aucun l ment de la liste rien ne se passe Ne peut pas s lectionner une partie du texte s lectionn Idem que False False True False Curseur lors du click sur l item s lectionn Saisir un string pour s lectionner un item Copier Coller le contenu s lectionn True True Possible uniquement de copier le contenu s lectionn Impossible d crire et de s lectionner un item en crivant les premi res lettres de l item 13 6 7 5 RadioButton Ce contr le ressemble un CheckBox la diff rence qu une fois le contr le s lectionn 1l n est pas possible de le d s lectionner En g n ral le RadioButton est utilis dans un groupe de contr le la s lection tant exclusive Il y a deux fa ons pour faire en sorte que les RadioButton soient group s e ils sont dans le m me conteneur e Sils portent la m me valeur dans l attribut GroupName L exemple ci dessous montre les 3 cas de figure lt Grid lt S9tackPanel gt Groupsex lt GroupBox Header gt Group par containeur lt GroupBox Header gt lt StackPanel gt lt RadioButton Name rb1 gt Yes lt RadioButton gt Pidioburren Name to2 gt No RadiobULLon lt RadioButton Name rb3 gt No opinion lt RadioButton gt
327. y a pas d autres tableaux sp cifier pour cet UserControl la transformation XSLT est faite et le code du UserControl est finalis il n y a plus de balise xml et 1l ne reste plus qu sauver les modifications Vionnet Olivier HES SO Valais juin 2008 83 217 2 Hesso Wiis GE M editUcWindow Template en cours d dition UCGenre_I id3_ENU_ S Code XAML lt UserControl x Class WCFCalculator userContrals UC Genre I id3_ ENU S5 xmins http schemas microsoft com winf 2006 xanml presentation xmins x http schemas microsoft com winh lt 2006 xaml gt lt StackPanel Name stackPanel_uc gt lt Label Height 28 Name ucLabel_ info Vertica lt UserControl gt public partial class UC Genre 3 ENU_S UserControl String enumStrArray Enum GetNames typeor Genre public UC Genre 13 EMU SI Initializecomponenti initUC_unef Vient ensuite l UserControl pour le champ AmiDenfance qui est de type Boolean id7 Vionnet Olivier HES SO Valais juin 2008 84 217 M editUcWindow Template en cours d dition Lee lt xml version 1 0 encoding utf 3 gt lt xslistvlesheet version 1 0 xmilns xsl hthp www w3 org 1999 SL Transform xmlnssimsxsl urnischemas microsoft comixsit exclude result prefixes msxsl ies lt xsl output method xml indent yes gt UCBoolean_I_ id BS Code XAML lt xsl template match finishTranstorm gt lt I CDATA lt UserControl x Class
Download Pdf Manuals
Related Search
Related Contents
Origin Storage KB-FFP28 1 - 岐阜県バスケットボール協会 GB Operating Instructions Model 407706 Analog Sound Level Meter Mode d`emploi du logiciel PhotoFiltre - E 入札説明書(PDF形式:252KB) User manual NIBE™ F470 Boston Digitral Arm Clinician`s Manual Copyright © All rights reserved.
Failed to retrieve file