Веб-приложение, над которым я сейчас работаю, развивает руки и ноги! По сути, это система администрирования, которая помогает пользователям отслеживать бронирования, учетные записи пользователей, выставление счетов и т. Д. К ней также можно получить доступ через несколько различных веб-сайтов с использованием довольно грубого API.
Конструкция толстого клиента слабо соответствует шаблону MVC (или, возможно, MVP) с бэкэндом php / MySQL, Front Controller, несколькими разнородными контроллерами страниц, либеральным сцеплением объектно-ориентированных и процедурных моделей, запутанной связкой видов и шаблоны, некоторые скрипты Java, CSS-файлы и объекты Flash.
Программист во мне - большой поклонник принципа «Разделение проблем», и на этой ноте я сейчас пытаюсь найти лучший способ отделить и объединить различные проблемы по мере роста проекта и все больше людей вносят в него свой вклад.
Проблема, с которой мы сталкиваемся, заключается в том, что, хотя JavaScript (или Flash с ActionScript) обычно пишется с шаблоном, следовательно, является частью View и отделен от Controller и Model, мы обнаруживаем, что он фактически охватывает весь шаблон MVC. .. Обмен изображения с событием onmouseover - это поведение. Визуализируйте сетку данных - мы манипулируем представлением. Отправьте результат переупорядочивания списка через AJAX - теперь мы находимся в контроле. Проверьте поле формы, чтобы убедиться, что адрес электронной почты имеет правильный формат - мы обращаемся к модели.
Разумно ли, чтобы люди из базы данных писали Модель проверки с помощью jQuery? Могут ли программисты php написать необходимые управляющие структуры на JavaScript? Могут ли веб-дизайнеры действительно написать функциональную форму AJAX для своего View? Должен ли быть JavaScript-оверлорд для каждого проекта?
Если бы шаблон MVC мог применяться к людям вместо кода, мы бы получили следующее:
- Модель - столбцы базы данных - «ВЫБРАТЬ * ОТ
mind
ГДЕ interested
НЕДЕЙСТВИТЕЛЕН»
- Управление - надоедливые программисты - «класс Что-то расширяет NothingAbstractClass {…}»
- View - традиционно область графического / веб-дизайнера - «»
… и новый слой:
- Поведение - дизайнер взаимодействия и обратной связи - «CSS3 - новый черный…»
Итак, мы проводим рефакторинг, и я хотел бы придерживаться наилучшей практики проектирования, но я не уверен, что делать дальше. Я не хочу изобретать велосипед, поэтому у кого-нибудь будут какие-либо советы или подсказки относительно того, на какой шаблон я должен смотреть или какие-либо примеры кода от кого-то, кто уже сделал грязную работу? Как программист, как я могу переписать приложение для бэкэнда и внешнего интерфейса, сохранив их отдельно?
И прежде чем вы спросите, да, я посмотрел на Zend, CodeIgnitor, Symfony и т. Д., И нет, похоже, они не пересекают границу между серверной логикой и клиентской логикой!