Мы использовали Unity для наших приложений ASP.NET MVC3. Конфигурация выполняется исключительно в файле web.config. Смотрите пример ниже, где мы используем синглтон. Мы используем конструктор инъекций. Для 99% наших классов мы не используем одноэлементное свойство времени жизни. Мы смотрим на нашу производительность и обнаружили, что несколько экземпляров одного и того же класса создавались несколько раз для одного и того же запроса. Мы поняли, что вместо генерации 3000 объектов на запрос мы можем свести его к 200 объектам. У нас может быть большая проблема дизайна, но это на другой день. Мы пытаемся создать хороший кусок наших конфигураций класса Unity для использования синглтона.
<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>
Вопросы:
- При маркировке типа времени жизни для singleton этот экземпляр является общим только для конкретного пользователя или всей пользовательской базы?
- Помечая их как синглтоны, нужно ли нам настраивать синхронизацию для методов, чтобы избежать проблем с выполнением пользователем нескольких запросов одновременно?
- Что-нибудь еще, что я должен знать?