我有一個ASP.net頁面創建一個WCF服務的服務引用,並在我的頁面的多個地方撥打電話。我實例在Page_Load中的服務引用,並有一個實例變量來存儲它:ASP.net頁面中的WCF服務參考 - 何時處理?
private FooClient _serviceClient;
protected void Page_Load(object sender, EventArgs e)
{
_serviceClient = nwe FooClient();
_serviceClient.GetAllFoos();
}
protected void btnSave_Click(object sender, EventArgs e)
{
_serviceClient.SaveFoo();
}
我才發現,原來我需要配置服務引用的時候,我用它做,否則連接將被保持活並且如果達到最大連接數將阻止傳入連接。處理這些參考文獻的最佳地點在哪裏?我正在考慮在OnUnLoad事件上做這件事。
有沒有更好的方法來做到這一點?
爲什麼繼承'IDisposable'性能很重? – 2010-08-31 17:13:38
所以你建議我在每種需要訪問數據的方法中打開一個頻道?這在表現上似乎相當重要。 – Dismissile 2010-08-31 17:17:18
@Dismissile - 爲什麼打開連接而不是在需要時打開它?如果數據庫沒有被使用,你會保持與數據庫的連接嗎?當然,目標是在可能的情況下保持連接免費使用,因此只在必要時纔打開.WCF服務可以在Dispose()上拋出異常,因此垃圾收集器將不得不清理連接。如果代碼看起來很難看,那麼確保它可以被重新考慮以保持代碼DRY – stack72 2010-08-31 20:33:45