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

时间:2011-06-21 15:31:11

标签: multithreading wcf static service-locator

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

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

有没有办法让服务定位器可用于类,而不是让它被不同的线程重用或者调用WCF服务?

1 个答案:

答案 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/