Существует множество разных подходов, и я не могу сказать, что любой из них не прав.Мне интересно, каков ваш нынешний подход;и каковы ограничения, которые заставляют вас хотеть изменить это.
Подход, который вы, похоже, предлагаете, заключается в создании фасада , который стоит между моделью (AKA PHP Code, который выполняет «тяжелый бэкэнд-лифт») и видом (AKA Flex Front).конец).У меня нет наследственной проблемы с этим;особенно если у вас уже реализован бэкэнд, содержащий всю тяжелую бизнес-логику.Я бы считал этот фасадный слой служебным слоем и считал бы его частью модели;не является частью контроллера.
При попытке создать архитектуру Model-View-Controller-Services (MVCS) между Flex и некоторым бэкэндом;Обычно я делаю это так:
Представления реализованы в виде компонентов Flex.
Контроллер реализован в виде класса ActionScript.С моей точки зрения, главная цель контроллера - перетасовать запросы к серверу и данные обратно в представления.
Уровень обслуживания реализован на сервере;PHP в вашем случае.Может случиться так, что у вас есть параллельный класс обслуживания во Flex для каждого из ваших сервисов на стороне сервера.
На уровне модели есть классы для выполнения соответствующей бизнес-логики;проверять данные, сохранять их в базе данных, извлекать их из базы данных и использовать любую другую бизнес-логику, которая вам нужна.Часто в рамках модели у меня есть классы Value Object.Классы Value Object часто параллельны в ActionScript и используются для передачи данных между службой на стороне сервера и контроллером на стороне клиента.
Итак, это работает примерно так:
- Пользователь взаимодействует с представлением
- Представление отправляет событие на контроллер
- Контроллер выполняет удаленный вызов службы на сервере
- Служба вызывает модель дляполучить данные
- Модель получает запрос, выполняет соответствующие действия, создает объект значения - или массив объектов значения - и возвращает его службе
- Служба возвращает результаты вконтроллер на стороне клиента
- Контроллер делает что-то для обновления представлений
Существует множество платформ, помогающих этому процессу, особенно для «инкапсулированной» связи между уровнями приложения.,
Во многих случаях;грань между «что должно идти в модели / что должно идти в представлении» размыта.Когда мы разрабатываем приложения Flex (или AJAX, Silverlight или любой интеллектуальный клиент), часто нам нужны интеллектуальные представления;поэтому некоторая бизнес-логика может быть реализована как часть представления.Все в порядке;мы должны сбалансировать функциональность приложения с «идеальным» случаем абстракции.
Ваш вопрос был довольно широким, но я надеюсь, что это поможет.Лично я предпочитаю практиковать свою архитектуру приложений.Иногда мои классы обслуживания выполняют бизнес-логику, такую как анализ данных.Это зависит от приложения, его целей, клиента и сроков.