2011-06-21 11 views
5

私のExcelサービスがはるかに高速に動作していることに気付きました。環境条件があるかどうかはわかりません。私はその方法に変更を加えました。それはC# - WebMethodAttributeはパフォーマンスに悪影響を及ぼす可能性がありますか?

class WebServices{ 
[ WebMethod(/*...*/) ] 
public string Method(){} 
} 

だった前に今、その属性が削除され、この方法は、別のクラスに

class NotWebService { 
public string Method(){} 
} 

を移動される場合でも、メソッドがが呼ばれるか、サービスとして使用されていないので、私はこれをしませんでした。代わりに、

WebServices service = new WebServices(); 
service.Method(); 

と同じアセンブリ内で呼び出されました。今すぐメソッドを呼び出すとき

NotWebService notService = new NotWebService(); 
notService.Method(); 

応答時間が上がったようです。 WebMethodAttributeはローカルコールを遅らせる可能性がありますか?

答えて

2

実際、WebMethod属性は、XML WebServiceを介してメソッドを公開するために、多くの機能を追加します。 オーバーヘッドは、ウェブメソッドの構成可能なものの一部であると考え、以下の機能している原因となる機能の

パート:

  • トランザクション処理の処理

    • BufferResponse
    • CacheDuration
    • セッション

    F以上の情報は、ちょうどWebMethod attribute documentation

    よろしく、

  • 0

    私はこれが古い質問ですけど、誤報を避けるために、私はとにかくそれに答える必要性を感じるをチェック。

    私はwacdanyの評価に同意しません。

    webmethodとしてマークされたメソッドは、HTTPではなくメソッドとして直接呼び出された場合、追加のオーバーヘッドがありません。結局のところ、それはカスタム属性の存在以外の全く同じ中間言語にコンパイルされます。

    カスタム属性を追加すると、performaceがコンパイラまたはランタイムにとって特別なものの1つである場合、performaceに影響する可能性があります。 WebMethodAttibuteもどちらでもありません。

    次に、Webサービスオブジェクトを構築するための特別なオーバーヘッドがあるかどうかを検討します。コンストラクタを追加した場合は、いくつか存在する可能性がありますが、基本クラスのコンストラクタは簡単なので、デフォルトでは実際のオーバーヘッドはありません。

    したがって、実際にこのメソッドを直接呼び出していた場合、Webサービスアクションとしてもアクセス可能であるにもかかわらず、実際のオーバーヘッドは発生しません。大きな違いがあった場合は、実際のWebServicesクラスを構築していて、Webサービスプロキシを何らかの形で使用していないかどうかを確認することをお勧めします。

    関連する問題