2014-10-19 23 views
0

我正在將一個客戶端應用程序部署到配置爲使用兩個網絡服務器之一的移動筆記本電腦。網絡服務器是相同的,但IP地址不同,因爲每個服務器位於不同的辦公室。如何動態只編譯一次類類型?

當客戶端應用程序第一次啓動時,它只需要確定它所在的辦公室以及哪個數據服務器要連接的位置。因此,使用客戶機的IP地址,我希望做 是這樣的:

internal TYPE??? dataservice = new ResolveDataService(); 

    NovaDataServiceClient ResolveDataService() 
    { 
    if (localip == xxx.xxx.xxx.xxx) 
     { 
      retrun new DataService.NovaDataServiceClient(); 
     } 
     else 
     { 
      return new LibraryWebService.NovaDataServiceClient(); 
     } 
    } 

此外,由於它只需進行一次,靜態構造函數將是首選。但真正的問題是,在命名空間「的DataService」和「LibraryWebService」被給了客戶端項目的添加服務引用所以在上面的代碼

internal TYPE??? dataservice 

類型不知道,直到ResolveDataService被調用。

這是如何正確完成的?謝謝

回答

2

如果這兩個服務完全相同,只是IP地址不同,那麼正確的做法是隻有一個服務引用,並在創建服務時設置端點。在你的情況下,最簡單的方法可能是將另一個具有name屬性的端點配置添加到app.config並在client's constructor中提供。

+0

您如何在客戶端的構造函數中提供端點? – 2014-10-19 14:20:20

+0

@AlanWayne - 客戶端有一個構造函數,它接受一個帶有端點配置名稱的字符串。 – shf301 2014-10-19 17:40:32