Ich habe einen Webservice erstellt und wenn ich seine Methoden verwenden möchte, instanziiere ich es in einer Prozedur, rufe die Methode auf, und ich verfüge schließlich über sie, aber ich denke auch, dass es in Ordnung sein könnte zu instanziieren den Webservice im Ereignis "private void Main_Load (Objekt Absender, EventArgs e)".Best Practice für Webservices
Die Sache ist, dass, wenn ich es die erste Art mache, ich den Webservice instanziieren muss, jedes Mal, wenn ich eine seiner Methoden brauche, in der anderen Weise muss ich einen Webservice ständig verbunden halten, wenn ich es in einem benutze Form zum Beispiel.
Ich möchte, welche diese Praktiken wissen, besser oder wenn es ein viel besserer Weg, es zu tun
Strategie 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();
}
}
Strategie 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();
}