문제

웹 서비스를 만들었고 해당 메서드를 사용하고 싶을 때 프로시저에서 인스턴스화하고 메서드를 호출한 다음 마지막으로 처리합니다. 그러나 "private void"에서 웹 서비스를 인스턴스화하는 것도 괜찮을 수 있다고 생각합니다. Main_Load(개체 전송자, EventArgs e)" 이벤트입니다.

문제는 첫 번째 방법으로 수행하면 메서드 중 하나가 필요할 때마다 웹 서비스를 인스턴스화해야 하지만 다른 방법으로는 예를 들어 양식에서 사용할 때 항상 웹 서비스를 연결해야 한다는 것입니다.

이러한 관행 중 어느 것이 더 나은지 또는 훨씬 더 나은 방법이 있는지 알고 싶습니다.

전략 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를 사용하는 것이 더 나을 것입니다.그러나 너무 자주 호출되지 않을 경우 방법 #1을 사용하고 필요할 때만 인스턴스화하는 것이 좋습니다.

다른 팁

지금은 모바일 기기를 위한 솔루션을 만들었고 불규칙한 시간에 사용하게 되었는데, 10분, 1시간, 4시간 내에 사용할 수 있으며 매우 가변적이므로 더 나은 접근 방식이 첫 번째 전략인 것 같습니다.

작년에 우리는 웹 서비스를 사용하는 프로젝트를 진행했습니다. 사실 우리는 Sub New() 프로시저에서 웹 서비스를 인스턴스화했고 매우 잘 실행했습니다. 그러나 때때로 일부 사용자는 의자에서 일어나서 그들이 돌아와서 애플리케이션을 계속하려고 시도했을 때 시간 초과 오류 메시지를 받았고 다시 로그인해야 했습니다.

어쩌면 사용자들이 자리에서 아주 오랫동안 밖에 나갔을 수도 있기 때문에 우리는 그것이 괜찮을 것이라고 생각했지만, CEO들과의 애플리케이션 프레젠테이션에서 한 번은 똑같은 시나리오가 일어났고 개인적으로 나는 그 행동을 좋아하지 않았습니다. 그래서 질문입니다.

답변 해주셔서 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top