Web服务的最佳实践

时间:2008-08-16 14:58:31

标签: web-services

我已经创建了一个web服务,当我想要使用它的方法时,我在一个过程中实例化它,调用该方法,最后我将它处理掉,但是我认为也可以在实例化中提供web服务。 “private void Main_Load(object sender,EventArgs e)”event。

问题是,如果我这样做,第一种方法是每次我需要其中一种方法时必须实例化web服务,但另一方面,当我在表单中使用它时,我必须始终保持web服务的连接例如。

我想知道哪些做法更好,或者有更好的方法做到这一点

策略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();
    }
}

策略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();
}

2 个答案:

答案 0 :(得分:2)

这取决于您调用Web服务的频率。如果你几乎要经常调用它,那么使用方法#2可能会更好。但是,如果它不会经常被调用,那么最好使用方法#1,并且只在需要时实例化它。

答案 1 :(得分:0)

现在我为一个移动设备制作了一个解决方案,它转而在不规则的时间使用,它可以在10分钟,1小时,4小时内使用它变化很大,似乎更好的方法是第一个策略

去年我们开展了一个使用webservices的项目,事实是我们在Sub New()程序中实例化了我们的web服务并运行得很好,但是,有时一些用户声称我们从他们那里醒来他们的椅子,当他们返回并尝试继续申请时,他们收到了超时错误消息,他们不得不重新登录。

我们认为这可能是好的,因为可能是用户长时间离开了他们的座位,但一旦在与CEO的应用程序的演示中它发生了完全相同的情况,我个人不喜欢这种行为就是问题的原因。

感谢您的回答。