作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用服务定位器来保存类的具体实例,它在 WCF 服务中使用。我没有传递 ServiceLocator,而是决定将其设为静态,这样我就可以从每个类访问它。服务定位器在 WCF 服务启动时填充,并且根据某些参数,它可以填充不同的具体实现。
我的问题是,如果在另一个调用完成之前调用 WCF 服务,那么(我认为)ServiceLocator 将填充不正确的实现。
有什么方法可以使服务定位器对类可用,并且不会被不同的线程或对 WCF 服务的调用重新使用?
最佳答案
您提供了一些关于您的服务定位器和底层实现的详细信息。根据我的阅读,我知道这是你自己的。
我的个人建议是,您不应在 WCF 服务的情况下使用服务定位器,因为 WCF 公开了一些启用依赖项注入(inject)的接口(interface)。
您可以在此处阅读有关反模式服务定位器的更多信息:http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx
你不应该实现你的服务定位器,因为有很多围绕依赖注入(inject)的 OSS 项目你可以使用并且以正确的方式完成工作。
这是使用 StructureMap 和 WCF 服务的依赖注入(inject)的正确实现:http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/ .
关于multithreading - 如何在 WCF 服务中使用服务定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427924/
我是一名优秀的程序员,十分优秀!