FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 28 juin 2013 

 
OuvrirSommaireXml et WebServices

Selon le W3C:

"Un service Web est un système logiciel conçu pour soutenir l'interaction de machine-à-machine de façon interopérable sur un réseau. Il fait décrire une interface dans un format compréhensible par toutes machines (spécifiquement WSDL). D'autres systèmes agissent réciproquement avec le service du Web dans une façon prescrite selon sa description utilisant des messages SOAP, typiquement transmise via HTTP avec une sérialisation XML en conjonction avec les autres normes (standards) Web."

Créé le 29 mai 2006  par Stéphane Reip

Dans le cas des Web Services, on peut parler de WSE.

Derière cet acronyme se cachent simplement les mots : Web Service Enhancements (grossièrement traduit par Perfectionnements des Services Web). Il s'agit de suppléments apportés au SDK .NET afin de rester à jour avec les dernières spécifications des Services Web, ces dernières ayant beaucoup évolué ces dernières années. Ces compléments apportent également de nouveaux outils et des facilités de programmation aux développeurs.

Créé le 29 mai 2006  par Stéphane Reip

Un document WSDL est un fichier XML définissant les services Web comme un ensemble d'opérations et de messages (arguments, types de données, …) reliés à des protocoles et des serveurs réseaux.

Le langage de description WSDL (Web Service Description Language) est une spécification issue de la problématique de la description des services Web. Il fallait une description des services Web qui puisse être comprise de tous les consommateurs, quelque soit leur plate-forme ou leur langage de programmation. Le but d'un document WSDL est donc de décrire dans un langage universel un service Web.

Créé le 29 mai 2006  par Stéphane Reip

Les évolutions étant relativement fréquente, je vais vous donner ici les versions actuelles, mais pour avoir le dernier cri, n'hésitez pas à visiter le site Microsoft dédié aux Services Web.

Pour les utilisateurs de Visual Studio 2003, on optera pour WSE 2.0 Service Pack 3

Pour ceux qui auraient la joie de posséder Visual Studio 2005, on prendra le WSE 3.0 (A noter qu'il est compatible avec Windows Communication Foundation).

Mis à jour le 14 novembre 2007  par Stéphane Reip

Pour créer un Service Web, vous pouvez utiliser l'assistant :

  • Fichier-> Nouveau -> Projet
  • Votre langage -> ASP.NET Web Service

Un premier Service Web vous sera ouvert à titre d'exemple, le bon vieux HelloWorld (Il suffit d'enlever les commentaires). Une petite compilation et votre premier Service Web est en place. Pour plus d'informations, rendez-vous dans la partie article de votre site préféré ;).

Créé le 29 mai 2006  par Stéphane Reip

Malgré leur lien avec ASP.NET, les Services Web ne peuvent pas utiliser le TraceContext. Il reste donc le bon vieux duo Trace/TraceListener et les outils liés N4Log, etc.

On peut également très facilement utiliser les EventLogs à l'aide de la fonction statique

 
Sélectionnez

Microsoft.Web.Services2.Diagnostics.EventLog.WriteLine("votre texte")
Créé le 29 mai 2006  par Stéphane Reip

Pour qu'un Service Web expose votre classe, il faut préciser votre classe en valeur de retour à votre WebMethod. Le fichier WSDL sera généré automatiquement en fonction de votre classe pour autant qu'elle soit sérialisable.

 
Sélectionnez

<WebMethod> _
Public Function GetClasse() As MaClasse 
End Function
Créé le 14 novembre 2007  par Stéphane Reip

Pour pouvoir utiliser l'héritage, il " suffit " de définir la classe " mère " en valeur de retour à votre méthode et de définir grâce aux attributs les classes héritées pouvant être retournées par votre méthode.

 
Sélectionnez

<WebMethod()> _
<System.Xml.Serialization.XmlInclude(GetType(String))> _
Public Sub SetObjet(ByVal maVariable As String)
End Sub
Créé le 14 novembre 2007  par Stéphane Reip

La classe SoapException permet de personnaliser les exceptions en construisant une nouvelle instance avec un message décrivant l'exception.

 
Sélectionnez

<WebMethod(Description = "Comment lever une exception personnalisée dans un service Web ?")>_
Public Function Diviser(ByVal a As Integer, ByVal b As Integer) As Integer
	Try
		Return a / b
	Catch ex As DivideByZeroException
		Throw New System.Web.Services.Protocols.SoapException("La division par 0 est impossible", SoapException.ClientFaultCode, Context.Request.Url.AbsoluteUri, ex)
	End Try
End Function
Créé le 14 novembre 2007  par Mehdi Feki

Cette erreur arrive généralement lorsqu'on débute et que notre serveur IIS est éteint ou rencontre un problème lors de son démarrage. Suivant votre processus d'installation du framework .NET, il est parfois nécessaire d'enregistrer votre compte ASP.NET par la ligne de commande DOS suivante (démarrer-> exécuter)

 
Sélectionnez

%windir%\microsoft.net\framework\v1.1.4322\aspnet_regiis -i

Le numéro de version du framework devant être adapté à votre configuration.

Créé le 29 mai 2006  par Stéphane Reip

Il arrive parfois que générer un WSDL utilisant un protocole trop récent pose quelques soucis. Dans ce cas, indiquez dans le web.config qu'il ne faut pas générer ce WSDL pour un ou plusieurs protocoles particuliers. Dans l'exemple ci-dessous, il s'agit de SOAP 1.2.

 
Sélectionnez

<system.web>
	<webServices>
		<protocols>
			<remove name="HttpSoap12"/>
		</protocols>
	</webServices>
</system.web>
Mis à jour le 14 novembre 2007  par Didier Danse

Lors du développement, ajoutez votre référence de manière tout à fait classique. Il est nécessaire pour connaître les méthodes exposées par le Web service.

Ainsi, dès que votre application connaît votre Web Service, peu importe où il se trouve. On peut donc lui assigner l'adresse du Web Service au runtime.

Dans le web.config, vous devez dès lors ajouter un ensemble clé / valeur nommé Service1Url et l'utiliser à l'aide du code suivant:

 
Sélectionnez

Dim service As Service1 = New Service1()
service.Url = ConfigurationManager.AppSettings["Service1Url"]
Créé le 14 novembre 2007  par Didier Danse

Dans certains cas, le client ne veut pas attendre une réponse du serveur après avoir appelé un service Web. L'attribut OneWay indique au serveur que le client ne veut pas recevoir d'acquittements et que sa tâche s'arrête à l'appel de la méthode Web.

 
Sélectionnez

<SoapDocumentMethod(OneWay:=True), _
WebMethod(Description:="Comment appeler une méthode Web sans attendre une réponse du serveur ?")> _
Public Sub SaveToLog(ByVal logEntry As String)
	Dim FaqLog As EventLog = New EventLog("OneWayAttributeDemo")
	FaqLog.Source = "OneWayAttributeDemo"
	FaqLog.WriteEntry(logEntry, EventLogEntryType.Information)
End Sub
Créé le 14 novembre 2007  par Mehdi Feki, nico-pyright(c)
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.