2016-03-08 107 views
-1

我是.NET新手,正在研究實現客戶端/服務器體系結構的選項。如何創建WCF客戶端庫

我跟着MSDN教程創建一個簡單的WFC計算器客戶端和服務器,但我覺得我要產生一些那種第三方可以使用打電話給我服務的簡單的客戶端庫。

我做出決定,我添加自動生成的代理編碼,但發現在app.config仍然需要包含在客戶端應用程序,而不是庫中的類庫項目。

問題

在我的目標設計,我更願意封裝大多數(但不是全部)在app.config數據的內在的東西,該公司生產的客戶端不能碰。 app.config包含了一些我不希望第三方修改的信息,以及一些信息,比如我希望在安裝時可配置的服務的地址(包括端口)。

任何人都可以點我在進一步閱讀,樣品或教程,將幫助我進步我的研究? (我知道我可能甚至試圖做一些合理的!)

背景:我真正想要做

我需要設計一個能夠從.NET 3.5客戶端調用服務。我還不知道什麼技術將用於服務(例如,它可以用Java而不是.NET編寫)或用於客戶端和服務之間通信的協議。在初始部署後,所使用的服務和通信協議的實施也可能需要改變大約一年左右的時間。

但是,我確實知道我想要呈現給客戶端的方法列表以及要用於參數和響應的數據類型。我還需要將一個客戶端界面的版本記錄並提供給一個獨立的公司,他們會在項目早期向我的服務添加對現有.NET客戶端應用程序的調用。所以,我想開發一個客戶端庫,最初將用於連接到服務的臨時測試版本(可以用.NET編寫)以返回模擬響應。客戶端庫的更新版本對於調用客戶端應用程序來說看起來是一樣的,但是連接到真正的服務。

WCF看起來有我需要讓我獨立於服務和連接協議的服務設計客戶端界面的靈活性。但正如我上面所說的,app.config包含了一些我不希望第三方修改的信息和一些信息,比如我希望在安裝時可以配置的服務的地址(包括端口)。

回答

0

如果您可以控制客戶端的安裝,則可以將對app.config文件的訪問鎖定到某些用戶帳戶。

另一種方法是在部署前選擇encrypt the contents app.config file

這一切都與你想怎麼方便,使配置客戶端與你想有多難它是篡改權衡。

編輯: 如果你的目標是簡單地隱藏你的端口號和地址,這實際上不可能。有人可以使用網絡流量監控器來查找該信息。

+0

感謝您的回覆,但並不是我想保持信息的祕密。我希望能夠通過重新傳送客戶端庫來更改連接底層中使用的協議,而無需重新構建客戶端可執行文件。至於地址信息,它必須可以作爲配置參數定期更改,而無需重新傳送服務器或客戶端。 – user358795

+0

如果您想使用配置文件進行更改,則可以加密您不希望其他人修改的部分。否則,您可能需要考慮使用數據庫進行設置,或者改變架構以使用模板方法和/或策略設計模式。 – Robert

1

你可以去ChennelFactory,你確實可以將大部分配置信息保存在數據庫中(例如:端點地址),你的客戶端庫應該處理第三方客戶端應用程序和你的服務之間的通信應該閱讀來自DB的服務配置細節並調用所需的服務並返回結果集第三方​​應用程序。

但是爲什麼您需要隱藏第三方應用程序/用戶的服務細節?服務細節不是你不想公開給最終用戶的東西。爲什麼不簡單地使用適當的WCF Security來暴露服務,並讓他們致電相關服務。

如果您打算爲單獨的客戶端庫/應用程序封裝服務詳細信息,如果您將來需要爲此提供任何修補程序,並且用戶基數很大,則需要擔心升級機制和所有。這會增加更多的複雜性。