Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
-4
22:21, 20 января 2011

В каких случая, использование IoC-контейнера, будет злоупотреблением?

Да, это клевая штука (я использую http://unity.codeplex.com/ в составе Microsoft Enterprise Library) для упрощения кода, уменьшения связности и грамотного тестирования частей веб-приложения.

При запросе (как и в подавляющем большинстве веб-приложений) идет попытка аутентификации пользователя, сбор данных о нём (из кукисов или базы) и сохранение "полного" пользователя...

Сохранение куда? Ответов на "кудаканье" много. Это может быть и контекст текущего запроса и сессия и те же самые кукисы и можно даже обратно в базу (наверное изврат, но кто знает...).

Контекст запроса или сессия до сего времени мне казались самым актуальным решением этой задачи. Затем в каком-либо месте кода, а точнее, в экземпляре класса, я, используя контекст или сессию, извлекаю пользователя.

Можно ли такой класс протестировать не в контексте веб-приложения? Хрен. Потому что нет ни контекста запроса ни сессии. А надо ли так тестировать, вне веб-приложения?

В исходном коде проекта OXITE, обнаружилась любопытная штука. Там реализовали-таки полностью абстрагированный от контекста запроса и сессии класс. Используя IoC-контейнер. Кратко, в контейнере регистрировался не экземпляр класса пользователя, а метод его получения. А метод получения, брал экземпляр класса пользователя из контекста запроса.

В итоге мы имеем класс, который ложит на то, в веб-приложении он существует или в любом другом. Он принимает пользователя из конструктора, всё остальное его не касается.

А вот безопасно ли доверять IoC-контейнеру, экземпляр класса пользователя (или метод его извлечения из контекста или сессии)? Хрен знает. Я пока не доверяю и переписал код в проекте. Несмотря на то, что это сделано разработчиками из Microsoft. :)

Microsoft Enterprise Library

-4
299
3