3

我正在使用服务定位器来保存在 WCF 服务中使用的类的具体实例。我决定将它设为静态,而不是传递 ServiceLocator,这样我就可以从每个类中访问它。服务定位器在 WCF 服务启动时填充,根据某些参数,它可以填充不同的具体实现。

我的问题是,如果在另一个调用完成之前对 WCF 服务进行了调用,那么(我认为)ServiceLocator 将填充不正确的实现。

有什么方法可以使服务定位器对类可用,并且不会被不同的线程或对 WCF 服务的调用重新使用?

4

1 回答 1

2

你提供了一些关于你的服务定位器和底层实现的细节。从我读到的,我知道这是你自己的。

我的个人建议是,您不应该在 WCF 服务的情况下使用服务定位器,因为 WCF 公开了一些启用依赖注入的接口。

您可以在此处阅读有关反模式服务定位器的更多信息:http: //blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx

您不应该实现您的服务定位器,因为您可以使用许多围绕依赖注入的 OSS 项目,并且可以以正确的方式完成工作。

这是使用带有 WCF 服务的 StructureMap 的依赖注入的正确实现:http: //lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/

于 2011-06-21T15:41:58.973 回答