J'ai créé un service web et quand je veux utiliser ses méthodes, je l'instancie dans une procédure, j'appelle la méthode, et finalement je la dispose, mais je pense aussi que ça peut être bien d'instancier le webservice dans l'événement "private void Main_Load (expéditeur d'objet, EventArgs e)". Le fait est que si je le fais de la première façon je dois instancier le webservice chaque fois que j'ai besoin de l'une de ses méthodes mais dans l'autre sens je dois garder un webservice connecté tout le temps quand je l'utilise dans un forme par exemple.Meilleure pratique pour les services Web
Je voudrais savoir lequel de ces pratiques sont mieux ou s'il y a une meilleure façon de le faire
Stratégie 1
private void btnRead_Click(object sender, EventArgs e)
{
try
{
//Show clock
this.picResult.Image = new Bitmap(pathWait);
Application.DoEvents();
//Connect to webservice
svc = new ForPocketPC.ServiceForPocketPC();
svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
svc.AllowAutoRedirect = false;
svc.UserAgent = Settings.UserAgent;
svc.PreAuthenticate = true;
svc.Url = Settings.Url;
svc.Timeout = System.Threading.Timeout.Infinite;
svc.CallMethod();
...
}
catch (Exception ex)
{
ShowError(ex);
}
finally
{
if (svc != null)
svc.Dispose();
}
}
Stratégie 2
private myWebservice svc;
private void Main_Load(object sender, EventArgs e)
{
//Connect to webservice
svc = new ForPocketPC.ServiceForPocketPC();
svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
svc.AllowAutoRedirect = false;
svc.UserAgent = Settings.UserAgent;
svc.PreAuthenticate = true;
svc.Url = Settings.Url;
svc.Timeout = System.Threading.Timeout.Infinite;
}
private void btnRead_Click(object sender, EventArgs e)
{
try
{
//Show clock
this.picResult.Image = new Bitmap(pathWait);
Application.DoEvents();
svc.CallMethod();
...
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void Main_Closing(object sender, CancelEventArgs e)
{
svc.Dispose();
}