我们一直在使用Unity作为ASP.NET MVC3应用程序。配置仅在web.config文件中完成。请参阅下面的示例,我们使用单例。我们正在使用构造函数注入。对于99%的课程,我们不使用单身生命周期属性。我们正在查看我们的性能,发现同一个类的多个实例正在为同一个请求多次构建。我们意识到,不是每个请求生成3000个对象,我们可以将它击倒到大约200个对象。我们可能有更大的设计问题,但这是另一天。我们正在研究制作一个很好的统一类配置来使用单例。
<typeAlias alias="singleton"
type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<type type="ITMSLogger" mapTo="TMSLogger">
<lifetime type="singleton" />
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
</typeConfig>
</type>
问题:
答案 0 :(得分:3)
单个实例在容器实例之间共享。您应该只在应用程序中有一个容器实例,因此实际上,单例生存期会创建一个全局共享的实例。
是的,许多线程都可能访问所有单例,因此它们必须是线程安全的。
是的,请勿使用XML配置容器。写一组约定。