2011-06-30 39 views
0

我不知道這甚至有可能要誠實,配置WCF不使用配置文件和實例化代理客戶端的默認構造函數

我想知道是否有刪除使用配置文件,而無需的方式覆蓋客戶端代理的創建。讓我舉個例子:

在客戶端應用程序中,我們有一個WCF DAL項目。這是他們的WCF服務器的客戶端應用程序使用的包裝。目前客戶端應用程序將需要在配置文件中給出的所有綁定和端點和通常會(在我們的項目)執行類似下面的包WCF服務:

public MyObject GetMyObject(int id) 
{ 
    using(var service = new MyObjectDataServiceClient()) 
    { 
     return service.GetMyOBject(id); 
    } 
} 

這將創建調用服務器並返回對象。如果客戶端應用程序沒有綁定和端點,它會炸燬。我們可以更改數據服務客戶端的每個創建,以創建綁定和端點,或者創建我們自己的chanelfactory來爲我們完成此操作,但這意味着更改當前的WCF DAL層代碼。

我的目標是嘗試創建一種將過程插入WCF DAL層的方式,該過程將處理綁定和端點,而不必消耗代碼,而不必更改配置文件。

我到目前爲止的想法是嘗試使用TT文件,以便它創建數據服務客戶端的部分類並覆蓋通道工廠部分。由於數據服務客戶端的構造函數調用會直接進入抽象類(System.ServiceModel.ClientBase <T>)並嘗試獲取配置信息,因此失敗。我無法找到停止它在配置中通過此部分類而不改變WCF DAL服務層的方法。

回答

1

如果您在DAL中具有綁定和端點,則可以使用客戶端類的不同構造函數(採用綁定+端點地址)。該構造函數完全繞過配置,所以你不需要配置任何東西。

+0

嗨,我在我的文章中提到我確實想避免DAL層中的任何更改。這樣做的原因是嘗試創建一個可用於多個項目的實用程序來刪除配置元素以及已經安裝了其服務客戶端的項目。我的中途住宅解決方案一直按照您的建議來做,或者使用綁定和端點使用channelfactory,但這確實需要對客戶端DAL層進行更改。謝謝 – Jon

+1

您需要在某處傳遞綁定/地址,所以如果您無法更改現有客戶端,則需要在創建WCF代理的層中完成。 – carlosfigueira

+0

是的,這就是爲什麼我試圖使用TT文件爲每個客戶端代理生成部分類並在其中覆蓋它的原因。但我沒有讓它停止在那裏檢查,並使用我的配置,而不是 – Jon