ASP.NET Part 2 - Aide Scolaire - 2009 - FR

2 018 vues

Publié le

A tutorial I did for my school in 2008/2009 about ASP.NET. It is the 2nd part and it's in french only.
------------------------------------------------------------
Un tutorial que j'ai fait pour mon école en 2008/2009 sur ASP.NET. C'est la deuxième partie et c'est en français seulement.

Publié dans : Développement personnel
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 018
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
17
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

ASP.NET Part 2 - Aide Scolaire - 2009 - FR

  1. 1. ASP.NET – Aide scolaire – Partie 2<br />Par Sonny Brabez, pour les étudiants de SUPINFO.<br />Points étudiés dans ce document :<br />Savoir mettre en place une base de données et en créer des tables : utilisation du Server Explorer de Visual Studio.<br />Connaître le principe de DataSource et DataBind : précision de ce qu’on veut prendre de notre base et application de ce qu’on veut prendre.<br />Savoir utiliser les différents types de DataSource possibles : SQLDataSource, LinqDataSource ...<br />Pouvoir mettre en place l’affichage des données de notre base avec l’aide de contrôles supportant les DataSource : GridView, Repeater, DataList, DetailsView etc.<br />Connaître le principe des Template et l’utilisation du Binding : utilisation d’un Repeater et des <%# %>.<br />Mettre en place un contrôle utilisateur personnalisé : créer un élément ASCX, savoir le placer dans une page ASP.<br />Mettre en place du cache, du trace, du debug sur nos pages ASP : configuration « poussée » de web.config et des directives ASP.<br />Savoir mettre en place un menu via le SiteMap et gérer plusieurs SiteMap en un unique : utilisation du SiteMapDataSource, du Menu et du SiteMapPath.<br />Connaître comment mettre en place une authentification Forms : ASP.NET Configuration, la base de données générée par la configuration.<br />Utiliser l’authentification et l’autorisation de Forms : classes Membership, Roles, gestion des contrôles LoginView, Login, LoginName, LoginStatus et utilisation des balises <authorization> du web.config.<br />Savoir utiliser la personnalisation sur les pages : classe Profile et balise <profile> de web.config.<br />Mettre en place un Web Service côté serveur : création du ASMX, utilisation d’une classe, utilisation du code behind de ASMX.<br />Mettre en place la consommation du Web Service, côté client : création d’une application lourde (WinForm/Console), mise en place d’une Web Reference et utilisations du cache, de la mémoire tampon ou encore de méthodes asynchrones.<br />Savoir mettre en place une base de données et en créer des tables : utilisation du Server Explorer de Visual Studio.<br />Pour mettre en place une base de données, il est nécessaire soit d’avoir une base à disposition soit de la créer soi-même.<br />Il est possible de créer notre propre base sur un projet Website en allant sur la racine et faire : Add New Item > SQL Server Database. Mettez un nom approprié. A sa création, on vous demande de la placer dans /App_Data : dire « oui ». Vous avez dorénavant une base de données créée. Evidemment, il est ensuite nécessaire de la remplir.<br />Maintenant, voyons plutôt commencer insérer une base de données :<br />Tout d’abord, ouvrez la vue « Server Explorer » (Raccourci clavier : CTRL+W puis ensuite L).<br />Vous devez obtenir quelque chose de sensiblement identique à cela :<br />Sur ceci, cliquer-droit sur « Data Connections » : Choisir « Add Connection… ».<br />Vous arrivez sur une fenêtre. La seule étape à faire est de parcourir vos répertoires pour rechercher la base de données via le bouton « Browse… ». Garder l’authentification Windows et tester votre connexion. Si tout est OK, cliquer sur « OK ».<br />Vous remarquez dans « Server Explorer » que notre base apparaît en dessous de « Data Connections ».<br />De ceci, ouvrez votre base de données afin de créer une table (il suffit pour le moment de cliquer sur le « + »).<br />Aller dans le dossier « Tables ». En l’ouvrant (avec le « + »), vous constatez les différentes tables présentes dans notre base de données (s’il y en a).<br />Rester sur le répertoire « Tables » et cliquer droit dessus : Faire « Add New Table ».<br />De ceci, un onglet s’ouvre et vous montre la structure de votre table.<br />Mettez les noms des colonnes souhaitées. Pour notre exemple, mettons les colonnes : id en type int et name en type nvarchar(50).<br />Voici le résultat actuel :<br />Vous avez remarqué que, pour le moment, notre « id » n’est qu’un champ classique. Mettons-le en clé primaire (PRIMARY KEY).<br />Pour cela, cliquer sur la ligne de votre « id » (le bouton juste à droite de votre nom de colonne « id »), ceci va sélectionner la ligne et toucher à la petite clé situé au dessus de votre onglet.<br />Voici le résultat actuel :<br />La petit clé est en haut, entourée de bleue. Voyez également que la colonne « id » a bien été sélectionnée.<br />Maintenant, notre clé primaire est certes créée mais ne s’incrémente pas toute seule. Pour mettre cela en place, il est nécessaire de garder sélectionner la ligne avec la clé primaire et aller dans ses propriétés (« Columns Properties »). Par défaut, « Columns Properties » est en dessous de votre structure de table.<br />De là, chercher « Identity Specification » et déroulez-le. Metter « (Is Identity) » à « Yes ».<br />Voici le résultat actuel :<br />Maintenant, supposons que nous avons une seconde table et que nous souhaitons que notre table actuelle soit en relation avec la seconde table créée. Si on veut mettre en place une clé étrangère (FOREIGN KEY) sur notre table, il faudra d’abord ajouter une colonne qui va contenir cette clé étrangère (nommons la « fk » et mettons son type à int) ensuite, sur votre table, clic-droit et aller sur « Relationships… » (ou bien aller sur le logo juste à côté de la mise en place d’une clé primaire).<br />Dans la fenêtre qui apparaît, faîtes « Add ». Il est créé une relation. Renommer là de préférence. Sur le côté, vous remarquez une partie « General » : dans celle-ci,  aller sur « Tables and Columns Specifications » et appuyez sur le bouton « … ».<br />De ceci,  choisissez la table ou vous devez prendre sa clé primaire (ici notre seconde table) puis choisir sur notre table, la colonne qui va contenir la clé étrangère.<br />Voici le résultat :<br />Faîtes « OK » et « Close » : votre relation est créée.<br />Pour ajouter des données dans une table, allez sur votre table et faire clic-droit « Show Table Data ». De là, remplissez les colonnes (excepté la clé primaire).<br />Exemple :<br />Ajout de « Coucou ! » et « Bye ! » dans ma table.<br />Connaître le principe de DataSource et DataBind : précision de ce qu’on veut prendre de notre base et application de ce qu’on veut prendre.<br />Afin de prendre nos éléments de la base de données, il est nécessaire de mettre en place une source de données (DataSource).<br />La DataSource a pour but donc de juste prendre les données nécessaires « de notre base de données » et de pouvoir les utiliser à bon escient.<br />La DataSource n’affiche PAS les données, elle en fait juste l’agglomération de ses données.<br />Afin de pouvoir appliquer une DataSource (et donc la lancer), il est nécessaire de faire ce qu’on appelle le DataBind.<br />Le DataBind fait la liaison entre une DataSource et un quelconque élément de votre page ASP (enfin, nous allons voir quelques contrôles utilisant les DataSource). Ainsi, le DataBind c’est un peu le lancement de la requête effectuée par la DataSource sur un élément donné (qui en fera son affichage).<br />Savoir utiliser les différents types de DataSource possibles : SQLDataSource, LinqDataSource ...<br />Nous avons vu que la DataSource a pour but de prendre les données nécessaires de notre base de données. Cependant, il faut savoir qu’une DataSource n’est pas uniquement que pour les bases de données : il en existe plusieurs types.<br />Pour nous, nous n’allons pas étudier les autres types de DataSource (par manque de temps et d’intérêt).<br />Nous allons voir uniquement les deux gérées pour les bases de données :<br />SQLDataSource : son but est de prendre en considération une base de données en utilisant les principes de l’ADO.NET.<br />LinqDataSource : son but est de prendre en considération une base de données sous un angle fonctionnel (utilisation d’arbres). Il est plus souple à gérer que SQLDataSource mais n’est disponible que depuis .NET Framework 3.5.<br />Pour utiliser un LinqDataSource, il faut tout d’abord savoir qu’il est nécessaire de créer un fichier dbml (Linq to SQL Classes).<br />Pour cela, aller à la racine de votre solution web QUI DOIT ETRE EN .NET FRAMEWORK 3.5. Faire : Add New Item > Linq to SQL Classes.<br />ATTENTION : nommer convenablement votre fichier car il ne sera pas modifiable par la suite (ou du moins, il sera compliqué à modifier).<br />Dîtes « oui » pour la mise en place du dbml au niveau de /App_Code.<br />Normalement vous arrivez sur un onglet App_Code/xxx.dbml (xxx = nom mis à votre élément).<br />De celui-ci vous pouvez glisser-déposer dans le bloc de gauche des tables : pour cela, allez sur votre « Server Explorer », ouvrez votre base de données sur le répertoire « Tables » et glisser les tables souhaitées.<br />Le bloc de droite permet de déposer des procédures stockées.<br />Exemple de glisser-déposer effectué :<br />Maintenant, vous pouvez créer des LinqDataSource via les contrôles présents dans les pages ASP (<asp :LinqDataSource>) [Pour ceci, le faire de préférence en mode Design des pages via la Toolbox].<br />A savoir : si vous voulez utiliser votre fichier dbml, pensez à l’enregistrer, sinon ASP.NET ne le reconnaît pas.<br />Vous pouvez également faire du code pour générer une DataSource en Linq. Pour cela, il est nécessaire d’utiliser le xxxDataContext, sachant que xxx = nom de votre dbml. De ce contexte, vous pouvez gérer les tables posées de votre fichier dbml et même faire des requêtes.<br />En voici un exemple :<br />ATTENTION : Ceci sera ensuite à intégrer dans des contrôles… mais c’est le prochain point (voir donc ci-dessous ).<br />Pouvoir mettre en place l’affichage des données de notre base avec l’aide de contrôles supportant les DataSource : GridView, Repeater, DataList, DetailsView etc.<br />Pour pouvoir voir ce que fait comme résultat notre DataSource, il est nécessaire de l’implanter dans un contrôle supportant le système des DataSource. En effet, une DataSource ne gère pas l’affichage, il faut donc le céder à un contrôle spécifique. Il en existe plusieurs : DropDownList, GridView, Repeater, DataList, DetailsView…<br />Quelques explications de chaque :<br />DropDownList : contrôle qui permet de faire une sélection d’un élément qui peut avoir deux valeurs – celle inscrite dans la sélection (visible par le client) et celle gérée par le serveur. C’est ce qu’on appelle le DataTextField (côté client) et DataValueField (côté serveur). Penser à les préciser si vous mettre en place une DataSource (préciser uniquement le nom de la colonne souhaitée ).<br />GridView : contrôle qui permet de mettre en place un tableau en colonnes, offrant la possibilité de gérer la sélection d’une ligne. Evidemment, il est nécessaire pour cela de préciser une DataSource. Le GridView est très simple d’utilisation (on peut ajouter des colonnes à la volée…).<br />Repeater : contrôle qui permet de faire nous même notre style du fait qu’il gère uniquement le déroulement de nos données. En effet, un Repeater permet de répéter une action pour prendre toutes les lignes possibles de notre DataSource. Pour cela, il utilise des Templates (voir le prochain point). ATTENTION : un Repeater ne fait que la LECTURE de données.<br />DataList : contrôle dont le but est de faire une liste de données, utile pour mettre en place des articles d’un blog par exemple. Prend en compte une DataSource mais peut faire de l’ajout, de la modification ou de la suppression de données (face à GridView ou Repeater).<br />DetailsView : contrôle ayant pour but de permettre d’avoir le détail d’une ligne de données. Il peut faire de l’ajout, de la modification ou de la suppression. Peut facilement être lié à un GridView par une clause WHERE pointant sur la sélection faite dans le GridView. Se complète via une DataSource.<br />Pour pouvoir placer d’un point de vue code behind une DataSource, il est possible de gérer ceci via la propriété DataSource de chacun des contrôles.<br />Voici un exemple :<br />Vous voyez sur l’exemple qu’il est fait un DataBind(). Ceci est très utile car c’est cela qui gère l’activation de la liaison entre la DataSource et le contrôle. Voyez également comment relier nos requêtes Linq à un contrôle.<br />A savoir : Avec un GridView, on peut gérer le paging automatiquement. Pour cela, il faut mettre sa propriété « AllowPaging » à « true » puis gérer l’événement « PageIndexChanging » de la manière suivante (générer l’événement en utilisant l’éclair en mode Design [voir mon mail pour le TP noté 1]) :<br />Connaître le principe des Template et l’utilisation du Binding : utilisation d’un Repeater et des <%# %>.<br />Nous avons vu précédemment que pour le contrôle Repeater, il faut utiliser des templates. Mais qu’est ce que les templates ?<br />En fait, les templates vont permettre de gérer une action à effectuer, qui pourra se faire une fois ou plusieurs fois selon le template choisi.<br />Voici les templates existants :<br />HeaderTemplate : Permet de mettre une entête (par exemple les entêtes de tableau précisant le nom des colonnes). Ne s’effectue qu’une fois.<br />ItemTemplate : Permet de mettre en place chaque ligne présente dans notre table (ou une ligne sur deux s’il y a présence du AlternatingItemTemplate). Pour cela il devra faire ce qu’on appelle un binding unidirectionnel avec <%# Eval(« nomColonne ») %>.<br />AlternatingItemTemplate : Permet de mettre en place une ligne sur deux dans un style différent que ItemTemplate mais se gère de la même façon.<br />FooterTemplate : Même principe que le HeaderTemplate sauf que cette fois c’est le bas de tableau. Ne s’effectue qu’une fois et est particulièrement intéressant pour mettre en place du Paging.<br />L’élément le plus intéressant est au niveau de ItemTemplate où il est nécessaire d’utiliser la formule <%# Eval(« nomColonne») %> qui va pouvoir prendre du DataSource, un élément d’une colonne donnée.<br />A savoir : Si on veut faire un lien vers une autre page et vers un autre contrôle (exemple : un DataList), on peut utiliser un ItemTemplate tel que celui écrit ci-dessous :<br />L’intérêt est au niveau du HyperLink présent à l’intérieur du ItemTemplate : celui permet de naviguer en méthode GET (nom du GET = « getValue ») et de contenir la clé étrangère de ma table dans le GET. Par contre le lien hypertexte me donnera le nom de la ligne.<br />On gère ceci facilement avec la méthode String.Format demandant une chaîne de caractère et des paramètres. Les paramètres sont mis dans la chaîne de caractère via les {n} avec n allant de 0 à n-1.<br />Ensuite, il suffit de penser à faire dans notre DataSource une condition WHERE dépendant d’un GET :<br />Request.QueryString[«NomDonneApresLePointDInterrogation » ]<br />Exemple graphique :<br />Pour moi, le nom après le point d’interrogation était getValue. Ici mon contrôle pourra directement choisir l’élément dont la clé étrangère est celle choisie par mon lien hypertexte présent dans le Repeater.<br />Mettre en place un contrôle utilisateur personnalisé : créer un élément ASCX, savoir le placer dans une page ASP.<br />Un contrôle utilisateur personnalisé est en fait un contrôle (comme les <asp :Label> etc) mais que nous faisons nous-même. Ces contrôles contiennent souvent d’autres contrôles présents de base dans ASP.NET.<br />Pour cela, il faut tout d’abord créer un élément .ascx dans notre page. Aller sur la racine de notre projet web : faire Add New Item > Web User Control.<br />Dans un contrôle utilisateur personnalisé, il faut savoir que vous pouvez faire du code behind : ce qui est d’ailleurs recommandé. En effet, si on veut mettre en place des propriétés sur notre contrôle, ils sont gérables uniquement si on a des propriétés dans le code behind.<br />Pour cela faire dans le code behind quelques propriétés de la manière suivante :<br />Ici, vous voyez deux propriétés mises dans le code behind : MainId et NameToWrite. Afin qu’elles soient utilisables dans notre contrôle, il faut également les placer partie .ascx, de la manière suivante : <%= NomPropriété %><br />Exemple :<br />Evidemment, vous pouvez les mettre dans des contrôles Label etc selon ce que vous souhaitez faire. Le but d’un contrôle utilisateur personnalisé étant d’éviter de refaire plusieurs fois les mêmes blocs de code HTML sur vos pages ASP.<br />Maintenant, voyons comment les placer sur une page ASP. Tout d’abord, il faut penser à placer la directive @Register : dans cette directive il sera nécessaire de préciser la source (qui sera donc notre contrôle personnalisé), le TagPrefix (la première partie de la balise qui devra être utilisée pour appeler notre contrôle dans la page) et le TagName (la seconde partie de la balise qui devra être utilisée pour appeler notre contrôle dans la page).<br />En voici un exemple :<br />Maintenant, pour utiliser votre contrôle, penser à bien enregistrer autant votre contrôle que la page où vous avez fait le @Register.<br />Pour utiliser le contrôle, il faut penser à faire : <TagPrefix :TagName runat= « server » Propriete= « valeur » … > (Les propriétés ne sont pas obligatoires)<br />Exemple :<br />Vous voyez que les propriétés de mon code behind sont bien devenues des propriétés gérables dans mon contrôle.<br />Mettre en place du cache, du trace, du debug sur nos pages ASP : configuration « poussée » de web.config et des directives ASP.<br />Grâce au web.config ou à quelques directives ASP, on peut mettre en place du debug, du cache et du trace.<br />Pour debug, ceci est très simple : chercher dans web.config la balise <compilation> et mettre debug= « true ».<br />Pour le trace, on peut le faire sur une page via la directive @Page, en lui ajoutant Trace= « true ».<br />Sinon il est également possible de le faire dans web.config et d’éviter de le voir sur une page mais uniquement dans un fichier trace.axd (par défaut). Pour cela, il faut placer dans <system.web> ceci : <trace enabled= « true » pageOutput= « false » /><br />Résultat :<br />En ce qui concerne le cache, il y a plusieurs façons de le faire. Utilisons uniquement celle sur les pages.<br />Pour cela, il suffit de mettre en place la directive @OutputCache. La propriété Duration permet de mettre un temps de cache en secondes et VaryPyParams permet de dire s’il doit garder plusieurs éléments en mémoire (exemple : les GET, les POST etc).<br />Savoir mettre en place un menu via le SiteMap et gérer plusieurs SiteMap en un unique : utilisation du SiteMapDataSource, du Menu et du SiteMapPath.<br />Non étudié ici par manque de temps (voir le précédent mail où il y a quelques explications sur les menus etc).<br />Connaître comment mettre en place une authentification Forms : ASP.NET Configuration, la base de données générée par la configuration.<br />Pour mettre en place une authentification Forms, il est nécessaire de configurer ASP.NET pour qu’il soit capable de mettre en place cette authentification. Par défaut, l’authentification est à Windows, via IIS : on ne peut donc avoir que les utilisateurs de la machine.<br />Pour éviter ça, il faut passer par la configuration de l’authentification en Forms.<br />L’authentification Forms a pour but de reprendre les utilisateurs d’une base de données ainsi que leurs rôles respectifs.<br />Pour lancer la mise en place de ceci, appuyez sur le petit bouton Terre avec un marteau (dans « Solution Explorer ») : <br />Ceci va lancer une page web qui permet de créer une base de données avec des utilisateurs et des rôles (pour cela aller dans l’onglet Sécurité) :<br />Ici, penser à changer le type d’authentification en cliquant sur « Sélectionnez le type d’authentification » et placer le sur « A partir d’Internet ». Faîtes « Terminer » (en bas à droite, pas très facile à voir…).<br />Maintenant, à votre page de sécurité, vous aurez la possibilité de faire des ajouts d’utilisateurs et de rôles :<br />Retournez sur votre projet et rafraichir le répertoire /App_Data pour voir la création de la base de données contenant les utilisateurs et les rôles.<br />Utiliser l’authentification et l’autorisation de Forms : classes Membership, Roles, gestion des contrôles LoginView, Login, LoginName, LoginStatus et utilisation des balises <authorization> du web.config.<br />Maintenant, nous pouvons créer des utilisateurs et des rôles, on peut également associer un/des rôle(s) à un utilisateur via la base de données créée. Pour les gérer, il est possible d’utiliser plusieurs éléments : des classes telles que Membership (pour les utilisateurs) et Roles (pour les rôles des utilisateurs), des contrôles tels que LoginView, Login, LoginName et LoginStatus ou encore des balises dans web.config.<br />Au niveau des classes :<br />Membership : la classe Membership permet de gérer les utilisateurs. Un utilisateur authentifié sera par exemple trouvable via : Membership.GetUser().UserName.<br />Roles : la classe Roles permet de gérer les rôles. On peut voir le rôle d’un utilisateur via : Roles.GetRolesForUser(nomUtilisateur) ;<br />Au niveau des contrôles :<br />LoginView : le contrôle LoginView permet de jongler entre deux templates contenant des autres contrôles : le template Anonymous (si l’utilisateur n’est pas connecté, il verra tout ce qu’il y a comme contrôles dans le template Anonymous) et le template LoggedIn (si l’utilisateur est authentifié, il verra tout ce qu’il y a comme contrôles dans le template LoggedIn).<br />Login : le contrôle Login permet de pouvoir s’authentifier. Il est important de lui préciser des propriétés sur les URL à atteindre (DestinationPageUrl) quand on est bien authentifié. Il recherche selon la base de données créée via la configuration ASP.NET (partie ci-dessus). Le contrôle Login peut se mettre dans un LoginView côté template Anonymous. ATTENTION = j’ai bien dit « peut » donc il est également possible de le mettre n’importe où hors un LoginView !!<br />LoginName : contrôle donnant simplement le nom de l’utilisateur quand il est authentifié. Il peut se mettre dans un LoginView côté template LoggedIn. ATTENTION = j’ai bien dit « peut » donc il est également possible de le mettre n’importe où hors un LoginView !!<br />LoginStatus : contrôle permettant de se loguer/se déloguer. Il dit si on est logué ou non.<br />Au niveau des balises :<br />Pour mettre en place des autorisations, il faut créer des balises <location path= « endroit à surveiller »> et à l’intérieur des balises <system.web> puis des balises <authorization>. Dans <authorization> on pourra préciser qui mettre en <allow> ou en <deny> selon des rôles ou des utilisateurs.<br />Exemples :<br />ATTENTION : Mettez les après </system.web> dans le fichier web.config…<br />A savoir : De préférence, pour éviter les problèmes d’atteinte de la page par les utilisateurs anonymes quand ils sont interdits (s’ils s’amusent à écrire les URLs, ils peuvent tomber sur les pages qui leurs sont interdites… ce qu’il faut éviter !) et les forcer à se loguer, changer la balises <authentication> de la manière suivante :<br />Savoir utiliser la personnalisation sur les pages : classe Profile et balise <profile> de web.config.<br />Pour utiliser la personnalisation, il faut d’abord créer dans web.config, une balise <profile> dans <system.web>:<br />Ensuite, pour les gérer sur nos pages, il suffit d’utiliser la classe Profile.<br />Exemple :<br />Ici, grâce à mon Profile, je peux changer la couleur de mes labels. Effectivement, penser à laisser notre utilisateur changer la valeur Profile.ChangeColor comme il le souhaite…<br />Mettre en place un Web Service côté serveur : création du ASMX, utilisation d’une classe, utilisation du code behind de ASMX.<br />Pour créer un Web Service côté serveur, il faut tout d’abord créer un .asmx en faisant : clic droit sur la racine du projet et Add New Item > Web Service.<br />Par défaut, on nous met directement dans le code behind du .asmx.<br />Pour créer une méthode utilisable en tant que service web, mettre l’attribut [WebMethod] au dessus de la méthode.<br />Pour exemple, nous allons d’abord créer une classe sur laquelle on va prendre une propriété.<br />Pour créer une classe en Website, aller à la racine du projet et faire : Add New Item > Class. Dites « oui » pour la placer dans /App_Code.<br />Mettons en place une propriété changeable via le constructeur de la classe :<br />Maintenant, revenons sur notre code behind et utilisons une WebMethod pour changer la valeur de notre classe et une autre pour la récupérer.<br />Lançons notre Web Service :<br />Il possède mes deux méthodes.<br />Mettre en place la consommation du Web Service, côté client : création d’une application lourde (WinForm/Console), mise en place d’une Web Reference et utilisations du cache, de la mémoire tampon ou encore de méthodes asynchrones.<br />L’étape la plus dure est de faire la Web Reference car il faut penser à mettre en place le Using de la Web Reference ainsi que d’appeler votre service via le nom .asmx qu’il possède.<br />

×