【问题标题】:WCF/WPF best practice - WCF ChannelFactory and PRISMWCF/WPF 最佳实践 - WCF ChannelFactory 和 PRISM
【发布时间】:2010-11-03 06:34:58
【问题描述】:

我是 PRISM 框架的新手,所以我的问题可能有点跑题了。

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

  1. WCF .svc 和 Web.config 项目只包含服务定义。
  2. 定义 WCF 服务接口和服务类型的服务类型项目。

在客户端,我有点担心我应该如何实现一个单一的、长期存在的服务代理。

我的方法是使用ChannelFactory<T> 为服务创建一个通道,并将其注册到我的模块中的 Unity 容器中。这意味着我的 Module 必须引用 Service Type 项目才能获取服务接口(这是正确的方式吗?)。

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

【问题讨论】:

    标签: wpf wcf prism channelfactory


    【解决方案1】:

    代理不应是 IMO 单例(或基于统一的单例),而应由需求创建。这样每个逻辑模块都可以随意创建,而不干扰其他模块。

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

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

    这个想法是让每个逻辑模块表现得好像它是应用程序中唯一的东西,而不需要担心除了它的依赖之外的其他模块。所以这样如果你有两个视图,每个视图都可以获得自己的 IAuthenticationService,这将是相同的(他们不应该关心它),而 AuthenticationService 本身依赖于代理,它会持有对它的引用贯穿其一生。

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多