【发布时间】: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