Профили StructureMap безопасны для потока?

Я думал об использовании профилей StructureMap, чтобы облегчить выявление небольших различий в поведении в моем веб-приложении на основе типа аутентифицированного пользователя. Мой вопрос, если я сделаю что-то вроде

ObjectFactory.Profile = Session["UserType"];

это будет поточно-ориентированным или будут ли одновременные запросы потенциально мешать друг другу при разрешении вещей на основе профиля?

1 ответ

Решение

Все операции над статическим фасадом ObjectFactory являются "потокобезопасными". Это означает, что вы можете безопасно вызывать их в разных потоках, не портя внутреннее состояние ObjectFactory.

Тем не менее, вы спрашиваете, получает ли каждый поток свою личную копию ObjectFactory, и ответ - нет. Любые изменения, внесенные вами в ObjectFactory в любом потоке, будут отражены во всех других потоках внутри домена приложения.

Функция "Профили", вероятно, не является тем решением, которое вы ищете. Вы, вероятно, хотите использовать что-то вроде именованных экземпляров:

ObjectFactory.GetInstance<ISomeService>( Session["UserType"] );

Существуют и другие потенциальные решения, в зависимости от того, что вы пытаетесь сделать. Подумайте о том, чтобы опубликовать вопрос о проблеме, которую вы пытаетесь решить, например: "Как мне получить другое поведение в зависимости от типа пользователя текущего пользователя..."

Другие вопросы по тегам