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

3
我对PRISM框架还比较陌生,因此我的问题可能有些离题。
我已经建立了由两个项目组成的WCF服务。
1. WCF .svc和Web.config项目仅包含服务定义。 2. 服务类型项目定义了WCF服务接口和服务类型。
在客户端方面,我有点担心应该如何实现单个、长期存在的代理来访问服务。
我的方法是使用ChannelFactory<T>创建一个连接到服务的通道,并将其注册到我的模块中的Unity容器中。这意味着我的模块必须引用服务类型项目以获取服务接口(这样做正确吗?)。
问题是,“在需要提供身份验证以创建连接并处理断开连接/重新连接时,如何管理此通道的最佳方法?”
1个回答

1

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接