我正在使用服务定位器来保存在WCF服务中使用的类的具体实例。而不是传递ServiceLocator,我决定让它静态,所以我可以从每个类访问它。当WCF服务启动时,服务定位器将被填充,并且根据某些参数,它可以填充不同的具体实现。
我的问题是,如果在另一个调用完成之前调用WCF服务,那么(我认为)将使用不正确的实现填充ServiceLocator。
有没有办法让服务定位器可用于类,而不是让它被不同的线程重用或者调用WCF服务?
答案 0 :(得分: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/。