2011-06-21 90 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公開該方法。

部分導致開銷的功能被認爲是Web方法的配置填充部分以下特點:

  • BufferResponse
  • CacheDuration
  • 會話處理
  • 事務處理

F以上信息只是檢查WebMethod attribute documentation

問候,

0

我知道這是一個老問題,但要避免誤傳我覺得有必要反正回答。

我不同意wacdany的評估。

標記爲webmethod的方法應該沒有額外的開銷,如果直接調用方法而不是通過HTTP調用。畢竟,它編譯爲完全相同的中間語言,除了存在自定義屬性之外。

現在添加自定義屬性會影響性能,如果它是編譯器或運行時特有的屬性之一。 WebMethodAttibute既不是。

接下來我會考慮是否有任何特殊的開銷來構建Web服務對象。如果你添加了一個構造函數,可能會有一些,但是默認情況下沒有真正的開銷,因爲基類的構造函數是微不足道的。

因此,如果您確實直接調用方法,則不應該有任何實際開銷,儘管它也可以作爲Web服務操作進行訪問。如果您遇到了顯着差異,那麼驗證您是否正在構建真正的WebServices類,而不是以某種方式無意中使用Web服務代理,這可能是由於向項目添加了Web服務引用。

相關問題