我有一個類來處理我的應用程序中與我的WCF服務的所有交互,並且似乎MSDN認爲使用using)_語句與WCF很差 - 我可以看到爲什麼會這樣是不好的,並同意它(http://msdn.microsoft.com/en-us/library/aa355056.aspx)調用WCF服務的多種方法
我的問題是,他們建議的實現方法將意味着我有10個方法[10在我服務的公共方法]將具有相同的結構代碼,這當然不符合DRY委託 - 代碼看起來類似於以下內容:
try
{
results = _client.MethodCall(input parameteres);
_client.Close();
}
catch (CommunicationException)
{
if (_client != null && _client.State != CommunicationState.Closed)
{
_client.Abort();
}
}
catch (TimeoutException)
{
if (_client != null && _client.State != CommunicationState.Closed)
{
_client.Abort();
}
}
catch (Exception ex)
{
if (_client != null && _client.State != CommunicationState.Closed)
{
_client.Abort();
}
throw;
}
這還沒有任何日誌記錄,但當然,當我來開始記錄它,然後我將不得不在幾乎10個不同的地方添加日誌記錄工作
沒有任何人有任何提示我如何可以更有機會在這裏重用代碼
感謝
保羅
我認爲你有S中的解決方案uggested非常好。擴展方法的使用將使這非常有用 - 如果我擴展System.ServiceModel.ClientBase與CloseIfNeeded()你認爲這將是一個好的或壞的舉動? – stack72 2010-10-06 13:30:28
如何爲'System.ServiceModel.ICommunicationObject'實現它?這將更符合該接口的架構意圖,該接口爲通信狀態管理提供原語。 – 2010-10-06 13:46:12
虐待給了一個去 - 謝謝:) – stack72 2010-10-06 15:06:12