2008-08-16 8 views
2

webservice를 만들었습니다. 메서드를 사용하려면 메서드에서 인스턴스화하고 메서드를 호출하고 마침내 처리합니다. 그러나 인스턴스화해도 괜찮을 것이라고 생각합니다. "개인 무효 Main_Load (개체 발신자, EventArgs 전자)"이벤트에서 webservice.웹 서비스 모범 사례

내가하는 첫 번째 방법은 내가 그 방법 중 하나를 필요로 할 때마다 webservice를 인스턴스화해야하지만, 다른 방법으로는 내가 사용하는 모든 시간에 웹 서비스를 계속 연결해야한다는 것이다. 양식.

내가 더 잘하거나 이러한 관행을 알고 싶습니다 할 수있는 더 나은 방법이 있다면

전략 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(); 
    } 
} 

전략이 ​​

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

웹 서비스를 호출하는 빈도에 따라 다릅니다. 거의 끊임없이 호출하려고한다면 # 2 방법을 사용하는 것이 좋습니다. 그러나 매우 자주 호출되지 않을 경우, # 1 메소드를 사용하는 것이 더 나을 것이고 필요할 때만 인스턴스화하는 것이 좋습니다.

0

지금은 모바일 장치를위한 솔루션을 만들었고 불규칙한 시간에 사용하기로 변함, 10 분, 1 시간, 4 시간 동안 매우 가변적으로 사용할 수 있습니다. 더 나은 aproach가 첫 번째 것 같습니다. 병법.

작년에 우리는 webservices를 사용하는 프로젝트를 진행했지만 Sub New() 프로 시저에서 우리의 웹 서비스를 인스턴스화하고 매우 잘 실행한다는 사실이 있습니다. 그러나 일부 사용자는 우리에게 깨어 났다고 종종 주장했습니다. 그들의 의자에서 돌아 왔고 그들이 돌아 왔고 응용 프로그램에서 계속하려고 할 때 그들은 타임 아웃 오류 메시지를 받았고 다시 로그인해야했습니다.

어쩌면 사용자가 자리에서 나가기도했지만 어쩌면 CEO와의 응용 프로그램 프레젠테이션에서 정확히 같은 시나리오가 발생했기 때문에 Ok 일 것입니다. 개인적으로는 그렇지 않았습니다. 그 행동과 그 이유는 질문입니다.

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