2008-08-16 4 views
2

私はwebserviceを作成しました。メソッドを使用する場合は、そのメソッドをインスタンス化してメソッドを呼び出し、最後に処理しますが、インスタンス化することもできます"private void Main_Load(オブジェクト送信者、EventArgs e)"イベントのWebサービス。ウェブサービスのベストプラクティス

私は最初の方法で、私はそのメソッドの1つを必要とするたびにインスタンス化する必要がありますが、それ以外の方法では、いつでも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
を行うにはもっと良い方法があるかどう優れているか、これらのプラクティスのどのお知りになりたい

Webサービスを呼び出す頻度によって異なります。あなたがほぼ常にそれを呼ぶつもりなら、おそらく方法#2を使うほうが良いでしょう。しかし、それほど頻繁に呼び出されない場合は、メソッド#1を使用するほうが、必要なときにインスタンシエートする方が良いです。

0

今私はモバイルデバイス用のソリューションを作ったが、それは不規則な時間に使用されるように変わり、10分、1時間、4時間という非常に可変で使用できるようになり、より良いaproachが最初の戦略。

私は昨年、Webサービスを使用したプロジェクトに参加しましたが、事実はSub New()プロシージャでWebサービスをインスタンス化して実行していて、非常にうまく動作しています。彼らが椅子から戻ってきて、アプリケーションで続行しようとしたときにタイムアウトエラーメッセージが表示され、再度ログインする必要がありました。

ユーザが非常に長い時間座席に出ていた可能性がありますが、CEOとのアプリケーションのプレゼンテーションではまったく同じシナリオが起こったため、その行動のように、それはなぜ質問です。

お返事ありがとうございます。