【发布时间】:2009-09-30 06:36:05
【问题描述】:
我正在考虑使用 StructureMap 的配置文件来帮助根据经过身份验证的用户类型在我的网络应用程序中提供细微的行为差异。我的问题是,如果我做类似的事情
ObjectFactory.Profile = Session["UserType"];
在基于配置文件解决问题时,它会是线程安全的,还是同时请求可能会相互干扰?
【问题讨论】:
标签: .net thread-safety structuremap
我正在考虑使用 StructureMap 的配置文件来帮助根据经过身份验证的用户类型在我的网络应用程序中提供细微的行为差异。我的问题是,如果我做类似的事情
ObjectFactory.Profile = Session["UserType"];
在基于配置文件解决问题时,它会是线程安全的,还是同时请求可能会相互干扰?
【问题讨论】:
标签: .net thread-safety structuremap
静态 ObjectFactory 外观上的操作都是“线程安全的”。这意味着您可以安全地在不同线程上调用它们,而不会破坏 ObjectFactory 的内部状态。
但是,您要问的是每个线程是否都有自己的 ObjectFactory 个人副本,答案是否定的。您在任何线程上对 ObjectFactory 所做的任何更改都将反映在 AppDomain 内的所有其他线程中。
配置文件功能可能不是您正在寻找的解决方案。您可能想要使用命名实例之类的东西:
ObjectFactory.GetInstance<ISomeService>( Session["UserType"] );
还有其他可能的解决方案,具体取决于您要执行的操作。考虑发布一个关于您要解决的问题的问题,例如:“我如何根据当前用户的 UserType 获得不同的行为...”
【讨论】: