Попробую выделить тему из
Re[26]: QueryObjectАвтор: IT
Дата: 08.02.13
, может что путное выйдет.
Ниже будут утверждения на которые можно возражать, а можно пропустить мелкие огрехи
Но не в этом суть сообщения, суть другом:
В ответ на сообщение я бы хотел получить примеры логики которую можно вынести из контроллера, чтобы он "похудел". А так же способы, которыми это можно сделать
Особенно интересует меня вещи, которые можно вынести в инфраструктуру проекта (т.е. логику которая никак не завязана на проект и может быть без изменений перенесена в другой).
Я приветствую ответы от
всех, не только от
IT).
A>>Мне сложно говорить за Игоря, но я 100% уверен, что в случае FatController-a, большая часть логики переедет из контроллера в другие классы/методы.
IT>В слове FatController ключевое слово — Fat. И это означает, что у нас просто много функционала в одном месте. Если этот функционал переместить в BL, то мы получим FatBL. Вот и вся разница.
О, давай рассмотрим эту тему. Глядишь и извлеку каку-то пользу из этого
бесполезного топика.
Хотя этот термин (FatController) я увидел прямо здесь, но в принципе, я понимаю что это. Хотя не уверен, что у нас с тобой общее видения вопроса.
Я не согласен, что в FatController-е весь функционал -- это бизнесс логика. Дай бог там ее 20%.
Вот если взять, например, ASP net MVC, то в контроллер можно напхать:
1) Валидацию пользовательского ввода
2) Авторизацию, аутентефикацию
3) Получение данных о текущем пользователе
4) Саму бизнесс логику
Что с этим можно сделать:
1) вынести в валидацию модели и дата биндеры
2) выносим ее в инфраструктуру
3) опять инфраструктура: выделить базовый класс контроллера с данными о пользователе AuthenticatedUserControllerBase (название страшное, но суть понятна, думаю)
4) пока ничего делать не будем
Даже если после всего вышеперечисленного в контроллере останется много логики (тут она как раз
бизнесс логика), то можно посмотреть на функционалность:
а не много ли мы делаем в этом месте. Скорее всего пользователю так же неудобно работать с этим, скажем, сценарием ("экраном", операцией). Может нужно разбить этот сценарий на части и получить несколкьо контроллеров.
Если и дальше логики в контроллере останется много, тогда и выносить ее куда-то. Но не факт, что для этой логики будет отдельный слой, а тем более сборка.
СУВ,
Aikin... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>