Cakephp MVC:一个模型,多个应用程序

Cakephp MVC:一个模型,多个应用程序,cakephp,model-view-controller,program-structure,Cakephp,Model View Controller,Program Structure,我正在启动一个基于多个Web应用程序(网站、控制面板、RestAPI)的项目,每个应用程序都基于相同的数据库和MVC框架 为了避免并行代码维护,我考虑为每个应用程序提供相同的模型文件。但当深入思考时,所有可能的方法都有一些利弊。我想我应该请教一些专家 可能的方法(我知道): 1。插件~one4all 逻辑的核心封装为插件,部署在 每个应用程序 ++对于所有应用程序,每个表只有一个型号 --一个bug可以使4个应用程序崩溃 --每个应用程序都有大量未使用的代码 2。重复代码~all4one 重

我正在启动一个基于多个Web应用程序(网站、控制面板、RestAPI)的项目,每个应用程序都基于相同的数据库和MVC框架

为了避免并行代码维护,我考虑为每个应用程序提供相同的模型文件。但当深入思考时,所有可能的方法都有一些利弊。我想我应该请教一些专家

可能的方法(我知道):
1。插件~one4all

逻辑的核心封装为插件,部署在 每个应用程序

++对于所有应用程序,每个表只有一个型号

--一个bug可以使4个应用程序崩溃

--每个应用程序都有大量未使用的代码


2。重复代码~all4one

重复模型文件的双重维护

++bug只影响一个应用程序

++模型不包含未使用的代码

--低效开发


3。应用程序之间的Api~孤独者

应用程序从api获取数据

++一个代码服务于所有应用程序

--不寻常的做法

--巨大的开销


4。型号符号链接~lazy1

一个应用程序保存模型文件,其他应用程序将 符号链接/包含它

++几乎没有额外的工作要做

+-看起来很搞笑

--一个bug会影响所有应用程序

--可能会限制调试


还有更多可能的方法吗?哪一个是常见的/推荐的? 我不想将所有应用程序的功能合并到一个应用程序中,以避免一次拉动就破坏整个应用程序


欢迎更多的方法和想法。提前感谢。

在项目中实施SOLID。所有框架均有效。

在项目中实施SOLID。所有框架都有效。

您错过的一个选项是将项目保持为一个。您可以只创建一个项目,只使用控制器分割部分,而不是分割模型,从而在三个或多个单独的项目中维护模型。虽然这种方法可以创建一个庞大的项目,但它也可以保存在一个地方,许多控制器可以将项目划分为易于管理的部分

如果是我,并且我想将这些项目作为单独的cakephp项目保留,我可能会复制代码。复制和粘贴并没有那么糟糕。这就是我在自己的网站上所做的,为了将测试和生产分开


尽管如此,我也可能尝试包含包含相同代码的单独文件。即使您使用的是cakephp,也可以使用php代码。如果需要包含cakephp逻辑的()文件,该怎么办。不确定这是否有效,但我至少会尝试一下。

您错过的一个选项是将项目保持为一个整体。您可以只创建一个项目,只使用控制器分割部分,而不是分割模型,从而在三个或多个单独的项目中维护模型。虽然这种方法可以创建一个庞大的项目,但它也可以保存在一个地方,许多控制器可以将项目划分为易于管理的部分

如果是我,并且我想将这些项目作为单独的cakephp项目保留,我可能会复制代码。复制和粘贴并没有那么糟糕。这就是我在自己的网站上所做的,为了将测试和生产分开


尽管如此,我也可能尝试包含包含相同代码的单独文件。即使您使用的是cakephp,也可以使用php代码。如果需要包含cakephp逻辑的()文件,该怎么办。不确定这是否有效,但我至少要试一试。

您能展示一下您的示例模型代码吗?没有代码。我要求的是我想要编码的应用程序的逻辑结构。我真的不认为“一个bug可以使4个应用程序崩溃”是一个否定的说法。在任何给定的项目中,我们都努力做到“不重复自己”,以尽量减少错误并争取时间。虽然您有几个应用程序,但我会将其视为单个项目,并将重点放在架构和单元测试上。插件听起来不错,但我不是专家。你能解释一下为什么“每个应用程序都会有很多未使用的代码”?数字3“-”是假的。三个基本上描述了一个微服务架构,几乎所有的大公司都使用它,比如Netflix。他们就是这样做的。而且开销几乎是零,它显然不是“巨大的”,因为请求发生在您自己的网络中,并且这些请求非常快。我现在找不到有基准测试的视频:(同意@Ariles的观点,“一个bug”并不是一个真正的问题。如果你使用选项2,那么你要么在它们之间同步代码(在这种情况下bug会被复制),要么不同步(在这种情况下bug修复不会被复制)。以及“每个应用程序都没有使用的代码”这似乎也不是问题;没有运行的代码不会导致开销,而存储额外代码的磁盘空间在总体方案中将毫无意义。因此,我选择#1,尽管我可能有偏见,因为我实际上是以这种方式完成项目的。你能展示你的示例模型代码吗?没有代码。我要求的是逻辑结构我想编写的应用程序有g个。我真的不认为“一个bug可以使4个应用程序崩溃”是负面的。在任何给定的项目中,我们都努力做到“不重复我们自己”为了最大限度地减少错误并争取时间。虽然您有几个应用程序,但我会将其视为一个单一项目,并将重点放在架构和单元测试上。插件听起来不错,但我不是专家。您能解释一下为什么“每个应用程序都会有大量未使用的代码”?第三个“-”是错误的。三个基本上描述了一个微服务架构,几乎所有的大公司都使用这个架构,比如Netflix。他们就是这么做的。而且开销几乎没有,显然不是“巨大的”因为请求发生在您自己的网络中,并且这些请求非常快。我现在找不到具有基准的视频:(同意@Ariles的说法