Question
J'ai souvent l'utilisation d'un webservice de cette façon
public void CallWebservice()
{
mywebservice web = new mywebservice();
web.call();
}
mais parfois je fais ceci
private mywebservice web;
public Constructor()
{
web = new mywebservice();
}
public void CallWebservice()
{
web.call();
}
La seconde approche, qui m'aime beaucoup, mais parfois il fois et j'ai dû commencer à nouveau l'application, pour la première, je pense qu'il apporte les frais généraux et il n'est pas très efficace, en fait, parfois le premier appel renvoie un WebException - ConnectFailure (je ne sais pas pourquoi).
J'ai trouvé un article (Service Web de Malheurs (la lumière au bout du tunnel?)) qui dépasse le temps de tourner la propriété Persistante à false dans le remplacé fonction GetWebRequest, voici le code:
Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest
Dim webRequest As Net.HttpWebRequest = CType(MyBase.GetWebRequest(uri), Net.HttpWebRequest)
webRequest.KeepAlive = False
Return webRequest
End Function
La question est, est-il possible de prolonger indéfiniment le webservice de temps et enfin, comment voulez-vous mettre en œuvre vos webservices pour gérer ce problème?
La solution
Les classes généré par Visual Studio pour les webservices sont juste des proxys avec peu d'état, de sorte que le processus de création est assez bon marché.Je ne voudrais pas vous soucier de la consommation de mémoire pour eux.
Si ce que vous cherchez est un moyen d'appeler le webmethod dans une ligne, vous pouvez simplement faire ceci:
new mywebservice().call()
Cheers