MVC: одна модель, несколько приложений - PullRequest
0 голосов
/ 08 февраля 2019

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

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

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


1.Плагин ~ one4all

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

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

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

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


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

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

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

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

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


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

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

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

- редкозаход на посадку

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


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

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

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

+ - кажется веселым

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

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


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

Больше подходов и идей приветствуются.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

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

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

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

0 голосов
/ 08 февраля 2019

Реализация ТВЕРДОГО в проекте.Действительны все рамки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...