2010-11-03 88 views
3

我是新來的PRISM框架,所以我的問題可能有點偏離主題。WCF/WPF最佳實踐 - WCF ChannelFactory和PRISM

我已經建立了由兩個項目組成的WCF服務。

  1. WCF .svc和Web.config項目只包含服務定義。
  2. 定義WCF服務接口和服務類型的服務類型項目。

在客戶端,我有點擔心我應該如何實現一個單一的長期代理服務。

我的方法是使用ChannelFactory<T>爲服務創建一個通道,並將其註冊到模塊中的Unity容器。這意味着我的模塊必須引用服務類型項目才能獲得服務接口(這是正確的方式?)。

問題是「當我們需要提供身份驗證來創建頻道以及如何處理斷開/重新連接時,管理此頻道的最佳方式是什麼。」

回答

1

代理不應該是IMO單身人士(或基於統一的單身人士),而應該由需求創建。這樣每個邏輯模塊可以隨意創建它,而不會干擾其他模塊。

除了你的方法是非常正確的。代理應該有一個ServiceType項目的引用等

如果你想實現一個認證「服務」,那麼我會創建另一個名爲AuthenticationService的類,並在Unity中註冊爲單例。這反過來會得到對新代理的引用,並且將處理與認證/授權有關的所有事情。

這個想法是讓每個邏輯模塊的行爲就好像它是應用程序中唯一的東西,而不需要擔心除依賴關係之外的其他模塊。所以如果你有兩個視圖,每個視圖都可以獲得他們自己的IAuthenticationService,這將是相同的(並且他們不應該關心它),而AuthenticationService本身依賴於代理,並且它會持有對它的引用貫穿其生活。