Webservice en vie pour toujours


1

-je utiliser souvent webservice cette façon

public void CallWebservice() 

{ 

    mywebservice web = new mywebservice(); 

    web.call(); 

} 

mais parfois je le fais

private mywebservice web; 

public Constructor() 
{ 

    web = new mywebservice(); 

} 

public void CallWebservice() 
{ 

    web.call(); 

} 

La deuxième approche me aime beaucoup, mais parfois il arrive à expiration et je devais commencer l'application encore une fois, le premier je pense qu'il apporte des frais généraux et il n'est pas très efficace, en fait, parfois le premier appel renvoie une WebException - ConnectFailure (je ne sais pas pourquoi).

Je trouve un article (Web Service Woes (A light at the end of the tunnel?)) qui dépasse le temps tourner la propriété KeepAlive false dans la fonction surchargée 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 d'étendre toujours le délai d'expiration du service Web et, enfin, comment implémentez-vous vos services Web pour gérer ce problème?

1

Les classes générées par Visual Studio pour les services web ne sont que des proxies avec peu d'état, donc leur création est assez bon marché. Je ne m'inquiéterais pas de la consommation de mémoire pour eux.

Si ce que vous cherchez est un moyen d'appeler la webmethod en une ligne, vous pouvez simplement faire ceci:

new mywebservice().call() 

Vive