MVC: одна модель, несколько приложений

Я начинаю проект, основанный на нескольких веб-приложениях (Website, ControlPanel, RestAPI), каждое из которых основано на одних и тех же Data[базах] и инфраструктуре MVC.

Чтобы избежать параллельного обслуживания кода, я думал о том, чтобы иметь одинаковые файлы моделей для каждого приложения. Но если задуматься, у всех возможных подходов есть свои плюсы и минусы. Я думал, что спросить некоторых экспертов.

Возможные пути (я знаю):


1. Плагин ~one4all

Само ядро ​​логики заключено в плагин, который развертывается в каждом приложении.

++ Только одна модель на таблицу для всех приложений

- Одна ошибка может привести к сбою 4 приложений

- много неиспользуемого кода в приложении


2. Дублированный код ~all4one

Двойное обслуживание дублированных файлов моделей.

++ Ошибки затрагивают только одно приложение

++ Модели не содержат неиспользуемый код

- неэффективное развитие


3. API между приложениями ~lonewolves

Приложения получают свои данные из API.

++ один код обслуживает все приложения

- необычный подход

- массивные накладные расходы


4. Модели с символическими ссылками ~lazy1

Одно приложение содержит файлы модели, другое приложение будет содержать символическую ссылку / включать ее.

++ почти никакой дополнительной работы

+- кажется смешным

- одна ошибка влияет на все приложения

- может ограничить отладку


Есть ли еще возможные подходы? Какой из них является общим / рекомендуемым? Я не хочу объединять функциональность всех приложений в одно, чтобы избежать сбоев всего одним движением.

Другие подходы и идеи очень приветствуются. Заранее спасибо.

2 ответа

Внедрить SOLID в проект. Действительны все рамки.

Один из вариантов, который вы пропустили, - это сохранить проекты как один. Вместо того, чтобы разделять модель и, таким образом, поддерживать ее на три или более отдельных проекта, вы можете сделать только один проект и просто разделить части с контроллерами. Хотя этот метод может создать монстра проекта, его также можно хранить в одном месте, и многие контроллеры могут разделить проект на части, которыми легко управлять.

Если бы это был я, и я хотел бы сохранить проекты как отдельные проекты CakePHP, я бы, вероятно, в конечном итоге дублировал код. Это не так уж плохо копировать и вставлять. Это то, что я делаю на веб-сайте, над которым я работаю, чтобы разделить тестирование и производство.

Хотя, возможно, я бы также попытался включить отдельные файлы, содержащие один и тот же код. Даже если вы используете cakephp, вы также можете использовать PHP-код. Что делать, если вам требуются файлы (), содержащие логику cakephp. Не уверен, что это работает, но я бы хотя бы попробовал.

Другие вопросы по тегам