Звучит так, будто здесь происходит очень много абстракций, но я не могу сказать, является ли это реальной абстракцией, если вы просто используете несколько терминов (например, «помощник») неоднозначно. Вообще говоря, ваша модель будет общаться с вашим источником данных. Этим источником данных может быть база данных, служба, простой файл или некоторая комбинация любого / всех из них. Я регулярно пользуюсь внешним сервисом для сбора большей части данных модели, а затем немного уточняю их с помощью данных, ориентированных на приложения, взятых из специализированной базы данных.
Помощники обычно отображаются на уровне просмотра и помогают отображать данные. Мои собственные предпочтения - чтобы модель возвращала необработанные данные в контроллер, который перенаправляет те же необработанные данные в представление, которое отвечает за выяснение того, как их отображать. Время от времени есть исключения из этого потока, но они довольно редки в моих собственных моделях использования.
Короткая версия: не усложняйте (и в рамках соглашения). Позвольте вашему контроллеру обрабатывать поток приложений и деятельность, ориентированную на приложения (например, обмен сообщениями, доступ к сеансу и т. Д.), Пусть ваша модель обрабатывает доступ / поиск / манипулирование данными, и пусть ваше представление беспокоится о том, как отобразить данные, возвращенные из модели (через контроллер).
Добавление дополнительной абстракции поверх всего этого - просто добавление ненужной сложности. Без каких-либо реальных знаний о вашей ситуации это всего лишь руководство, но я обнаружил, что это, как правило, твердое руководство из моего собственного опыта.