2011-01-25 21 views
5

特定のWebサービスで公開されているWebメソッドのコレクションのラッパーを記述する必要があります。この新しいラッパーメソッドは、同じタイプのオブジェクトに影響を与えるため、同じサービスに貼り付けるのが理にかなっています。同じWebサービスからWebメソッドを呼び出す

これらのWebメソッドのほとんどは、他のファイルで静的メソッドを呼び出す細いメソッドですが、これらの静的メソッド呼び出しの前にセキュリティロジックがあります。ラップしたい各メソッド呼び出しの前にセキュリティロジックを再作成するのではなく、ローカルで同じサービス内からこれらの他のWebメソッドを呼び出すことは可能ですか?ここで

は例です:一般的に

[WebMethod] 
public int SmallMethod1(int a) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod1(); 
} 

[WebMethod] 
public int SmallMethod2(int b) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod2(); 
} 

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.StaticMethod1() + AnObject.StaticMethod2(); 
} 

答えて

4

あなたはあなたの例では、あなたがAnObjectでそれらをカプセル化することによって、これを行っている、などきれいに可能な限り実際の実装からWebサービスのパブリックインターフェイスを分離することになるでしょうカプセル化されたメソッドを個別にテストすることができます(特にウェブメソッドでは大きな問題です)。これは、あなたがテストを直接WrapperMethodAnObjectにカプセル化)テストを書くことができるようになる

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.WrapperMethod(c) 
} 

、というよりもAnObject.StaticMethod1() + AnObject.StaticMethod2()のテストを再作成しようとしている:テストの観点から、私はこれをやって、むしろ示唆していると述べた

あなたのユニットテストでは、これはすぐに2つの異なる場所に同じロジックを持っているので、面倒です。

+0

テストの面で大きなポイント。ありがとう! –

0

全くありません。そのロジックをカプセル化することは非常に良いアイデアです。あなたはAnObject.WrapperStaticMethod()を持つことができます。

関連する問題