MVC: одна модель, несколько приложений
Я начинаю проект, основанный на нескольких веб-приложениях (Website, ControlPanel, RestAPI), каждое из которых основано на одних и тех же Data[базах] и инфраструктуре MVC.
Чтобы избежать параллельного обслуживания кода, я думал о том, чтобы иметь одинаковые файлы моделей для каждого приложения. Но если задуматься, у всех возможных подходов есть свои плюсы и минусы. Я думал, что спросить некоторых экспертов.
Возможные пути (я знаю):
1. Плагин ~one4all
Само ядро логики заключено в плагин, который развертывается в каждом приложении.
++ Только одна модель на таблицу для всех приложений
- Одна ошибка может привести к сбою 4 приложений
- много неиспользуемого кода в приложении
2. Дублированный код ~all4one
Двойное обслуживание дублированных файлов моделей.
++ Ошибки затрагивают только одно приложение
++ Модели не содержат неиспользуемый код
- неэффективное развитие
3. API между приложениями ~lonewolves
Приложения получают свои данные из API.
++ один код обслуживает все приложения
- необычный подход
- массивные накладные расходы
4. Модели с символическими ссылками ~lazy1
Одно приложение содержит файлы модели, другое приложение будет содержать символическую ссылку / включать ее.
++ почти никакой дополнительной работы
+- кажется смешным
- одна ошибка влияет на все приложения
- может ограничить отладку
Есть ли еще возможные подходы? Какой из них является общим / рекомендуемым? Я не хочу объединять функциональность всех приложений в одно, чтобы избежать сбоев всего одним движением.
Другие подходы и идеи очень приветствуются. Заранее спасибо.
2 ответа
Один из вариантов, который вы пропустили, - это сохранить проекты как один. Вместо того, чтобы разделять модель и, таким образом, поддерживать ее на три или более отдельных проекта, вы можете сделать только один проект и просто разделить части с контроллерами. Хотя этот метод может создать монстра проекта, его также можно хранить в одном месте, и многие контроллеры могут разделить проект на части, которыми легко управлять.
Если бы это был я, и я хотел бы сохранить проекты как отдельные проекты CakePHP, я бы, вероятно, в конечном итоге дублировал код. Это не так уж плохо копировать и вставлять. Это то, что я делаю на веб-сайте, над которым я работаю, чтобы разделить тестирование и производство.
Хотя, возможно, я бы также попытался включить отдельные файлы, содержащие один и тот же код. Даже если вы используете cakephp, вы также можете использовать PHP-код. Что делать, если вам требуются файлы (), содержащие логику cakephp. Не уверен, что это работает, но я бы хотя бы попробовал.