3

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

于 2011-04-01T16:09:21.510 回答