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