Multithreading 如何在WCF服务中使用服务定位器

Multithreading 如何在WCF服务中使用服务定位器,multithreading,wcf,static,service-locator,Multithreading,Wcf,Static,Service Locator,我使用一个服务定位器来保存类的具体实例,这些实例在WCF服务中使用。我没有传递ServiceLocator,而是决定将其设置为静态,以便可以从每个类访问它。服务定位器在WCF服务启动时填充,根据一些参数,它可以使用不同的具体实现填充 我的问题是,如果在另一个调用完成之前调用了WCF服务,那么(我认为)ServiceLocator将被错误的实现填充 有没有办法使服务定位器对类可用,而不被不同的线程或对WCF服务的调用重复使用?您提供了一些关于服务定位器和不可靠实现的详细信息。从我读到的,我知道这是

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

我的问题是,如果在另一个调用完成之前调用了WCF服务,那么(我认为)ServiceLocator将被错误的实现填充


有没有办法使服务定位器对类可用,而不被不同的线程或对WCF服务的调用重复使用?

您提供了一些关于服务定位器和不可靠实现的详细信息。从我读到的,我知道这是你自己的

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

您可以在此处阅读有关反模式服务定位器的更多信息:

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

以下是使用带有WCF服务的StructureMap进行依赖项注入的正确实现: