我已經WCF服務的一些調試方法:WCF異步工作太久
public Result DebugMethod(TimeSpan time){
Thread.Sleep(time);
return new Result { Code = new Random().Next()};
}
我想測試同步和異步調用之間的性能。
我收拾好結果爲Response類,具有互斥等待結果:
class Response {
public Result result;
bool loaded = false;
public ManualResetEvent _wait = new ManualResetEvent(false);
public Result get(){
if(!loaded){
_wait.WaitOne();
loaded = true;
}
return result;
}
而且我DebugMethodCompleted事件:
//r - correct response structure, result - wcf response
r.result = result
r._wait.Set();
我打電話DebugMethodAsync 10次,每次用時間跨度= 1秒。 然後,在所有的異步調用之後,我正在檢查結果(只是等待它們)。
所以我認爲這將需要約1秒。 但所有這一切都需要5秒鐘。
如果我將呼叫次數更改爲n,則需要n/2秒才能獲得所有響應,例如可能只是針對在時間處理的異步任務。
編輯: 似乎所有的客戶端應用程序異步調用,但服務器同時處理(從一個客戶端)2。
因此: 客戶端做了4個異步調用並正在等待結果,服務器正在處理前兩個,然後是1秒後,第三個和第四個。
所以我可以在不同的應用程序上同時運行它,但是在一個應用程序中,max是2? – Ari
這是服務器端限制。這意味着客戶並不重要。您需要更改服務器上的設置。但是,如果你的服務器有一個客戶端操作系統,那麼你不能超過10個。這通常是開箱的情況。 – usr
謝謝,明天我會試試,然後我會給予反饋。 – Ari