首页 / 知识

关于Web服务:Web服务最佳实践

2023-04-12 08:05:00

关于Web服务:Web服务最佳实践

Best practice for webservices

我已经创建了一个Web服务,当我想使用它的方法时,我在一个过程中实例化它,调用该方法,最后我将其处置,但是我认为在"私有空间"中实例化Web服务也是可以的。 Main_Load(object sender,EventArgs e)"事件。

问题是,如果我以第一种方式进行操作,则每次需要使用其中一种方法时,都必须实例化该Web服务,但是以另一种方式,当我以某种形式使用Web服务时,则必须一直保持连接状态。

我想知道哪种做法更好,或者是否有更好的办法

策略1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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();
}


这取决于您要多久调用一次Web服务。如果您几乎要不停地调用它,则最好使用方法2。但是,如果不会经常调用它,那么最好使用方法1,并且仅在需要时才实例化它。


现在,我为移动设备提出了一个解决方案,该解决方案可以在不规则的时间使用,可以在10分钟,1小时,4个小时的可变时间内使用,似乎更好的方法是第一个策略。

去年,我们进行了一个使用Web服务的项目,事实是我们在Sub New()过程中实例化了Web服务,并且运行得很好,但是,有时有些用户向我们宣称他们从椅子上醒来了,当他们返回并尝试继续使用该应用程序时,他们收到超时错误消息,因此必须再次重新登录。

我们认为这可能还可以,因为也许用户长时间不在座位上出去了,但是一旦与CEO一起进行应用程序演示时,发生的情况完全相同,我个人不喜欢这种行为,这就是为什么这个问题。

感谢您的回答。


服务最佳实践方法实例化

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢