Я работаю над большим приложением ASP.NET MVC 3 уже несколько месяцев. Только в конце проекта я понял, что мои контроллеры ОГРОМНЫ! Часть проблемы с этими огромными контроллерами заключалась в том, что я не мог их тестировать.
С тех пор я разделил обязанности контролеров на четыре задачи (на мой взгляд):
- навигация
- преобразование идентификаторов в объекты данных
- модели здания для отображения
- универсальная бизнес-логика
Поскольку некоторая бизнес-логика является общей для клиентского и серверного кода, нет смысла смешивать ее с логикой построителя модели представления. Итак, я сразу вижу необходимость как минимум в двух проектах: построителя моделей представлений и бизнес-логики общего назначения.
Я понял, что навигация должна быть ответственностью контроллера, так что логика остается в проекте MVC.
Я немного обеспокоен тем, какой проект должен отвечать за преобразование идентификаторов в объекты данных. Первоначально я возложил на это ответственность класса строителей бизнес-классов / моделей представлений. Однако я думаю, что я хотел бы, чтобы эти классы работали в основном с полностью построенными объектами. Итак, я не уверен, где в коде это преобразование должно иметь место. Кажется, не имеет значения, где я делаю преобразование, код дублируется. Я думал о создании адаптеров в соответствующих проектах, которые выполняют эти преобразования, а затем вызывают фактический класс построителя моделей бизнес-класса / представления.
- Кто-нибудь работал в проекте ASP.NET MVC, который вышел за рамки одного проекта?
- Как изменится логика, чтобы уменьшить размер контроллеров и обеспечить возможность проверки кода?