WCF / WPF最佳实践 - WCF ChannelFactory和PRISM

时间:2010-11-03 06:34:59

标签: wpf wcf prism channelfactory

我是PRISM框架的新手,所以我的问题可能有些偏离主题。

我已经建立了一个由两个项目组成的WCF服务。

  1. WCF .svc和Web.config项目只包含服务定义。
  2. 定义WCF服务接口和服务类型的服务类型项目。
  3. 在客户端,我有点担心如何为服务实现一个单一的,长期存在的代理。

    我的方法是使用ChannelFactory<T>创建一个服务通道,然后将其注册到我的模块中的Unity容器中。这意味着我的模块必须引用服务类型项目才能获得服务界面(这是正确的方法吗?)。

    问题是“当我们需要提供身份验证以创建频道以及如何处理断开连接/重新连接时,管理此频道的最佳方法是什么。”

1 个答案:

答案 0 :(得分:1)

代理不应该是IMO单身(或基于统一的单身),而应该按需要创建。这样每个逻辑模块都可以随意创建它,同时不会干扰其他模块。

除此之外,你的方法是非常正确的。代理应该引用ServiceType项目等。

如果要实现身份验证“服务”,那么我将创建另一个名为AuthenticationService的类,并在Unity中将其作为单例注册。反过来,这将获得对新代理的引用,并将处理与身份验证/授权相关的所有内容。

我们的想法是让每个逻辑模块的行为就好像它是应用程序中唯一的东西,而不需要担心除了它的依赖之外的其他模块。所以这种方式,如果你有两个视图,每个可以获得自己的IAuthenticationService,它们是相同的(他们不应该关心它),而AuthenticationService本身依赖于代理,它将保持对它的引用彻底解决它的生活。