【问题标题】:MVC: One model, multiple applicationsMVC:一种模型,多种应用
【发布时间】:2019-02-08 02:10:48
【问题描述】:

我正在启动一个基于多个 Web 应用程序(Website、ControlPanel、RestAPI)的项目,每个应用程序都基于相同的 Data[bases] 和一个 MVC 框架。

为了避免并行代码维护,我想为每个应用程序使用相同的模型文件。但是当深入思考时,所有可能的方法都有一些优点和缺点。我想我会问一些专家。

可能的方法(我知道):


1.插件 ~one4all

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

++ 所有应用每张表只有一个模型

-- 一个 bug 会导致 4 个应用崩溃

-- 每个应用程序都有很多未使用的代码


2。重复代码 ~all4one

重复模型文件的双重维护。

++ 错误只影响一个应用

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

-- 低效开发


3.应用之间的 API ~lonewolves

应用从 api 获取数据。

++ 一个代码服务所有应用

-- 不常见的方法

-- 巨大的开销


4.模型符号链接 ~lazy1

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

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

+- 看起来很搞笑

-- 一个错误会影响所有应用

-- 可能会限制调试


还有更多可能的方法吗?哪一个是常见的/推荐的? 我不想将所有应用的功能合二为一,以免一拉就崩溃。

非常欢迎更多方法和想法。提前谢谢你。

【问题讨论】:

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

标签: cakephp model-view-controller program-structure


【解决方案1】:

在项目中实现 SOLID。有效的所有框架。

【讨论】:

    【解决方案2】:

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

    如果是我,并且我想将这些项目保留为单独的 cakephp 项目,我可能最终会重复代码。复制和粘贴还不错。这就是我在我工作的网站上所做的,以便将测试和生产分开。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2015-06-22
      相关资源
      最近更新 更多