Интересны ваши мысли касаемо следующего дебата.
По сути, большая часть MVCшных (и не только) приложений являются процедурными. У нас есть структуры, в частности, дто и бизнес-сущности. Сперва мы получаем их из контроллера, вытягиваем их через геттеры и передаем слой бизнес-логики. Там уже, как правило, происходит извлечение соответствующей сущности из базы, над которой впоследствии также выполняются операции с использованием её аксессоров. Потом сущность, возможно, передается в dao-слой, где из неё вытягиваются свойства и куда-то персистятся. Ну и всё тоже обычно справедливо и в обратную сторону - клиенту нужно что-то вернуть.
Только вот инкапсуляции тут ни грамма. IoC вынуждает нас создавать статический граф стейтлесс объектов, которым передаются дата-модели для дальнейшей обработки. Инкапсулировать операции в объектах, создаваемых явно через new, становится намного сложнее из-за того, что им нужно передавать IoC зависимости, которые нужно либо вытягивать из контекста, либо дублировать в классе, порождающем объект, либо выкручиваться как-то иначе.
Инверсия контроля по сути инвертирует ключевую идею ООП, и в таких приложениях класс нельзя назвать сочетанием данных и операций над ними. По сути, приложения ничем не отличаются от классических сишных наборов процедур и структур. А как вы находите компромисс в этой ситуации?