【问题标题】:Should I separate my API component from my Dashboard component?我应该将我的 API 组件与我的仪表板组件分开吗?
【发布时间】:2013-06-01 02:59:42
【问题描述】:
我正在开始一个有点大的新项目。它将有两个以下两个组件(除其他外):API 和仪表板。客户将使用仪表板导入和组织他们的数据,并将使用 API 远程访问它。
本质上,这两个组件将使用相同的模型类和服务,但会在它们之上构建不同的访问点。我的问题如下:
我应该 (1) 将这两个组件构建为同一个项目的一部分,共享一个存储库和一个目录,还是 (2) 在不同的项目中构建它们并将模型作为第三个组件共享?
- 应该更容易管理,因为一切都已经在一个地方。但是,我必须始终部署它们,并且实际上并没有很好地分离 API 服务器和仪表板服务器。
- 另一方面,可以让我拥有具有不同职责的服务器,但我必须管理第三个组件。
最好的方法是什么?
如果您有使用 Laravel 框架的经验,您将如何实现不同的模块?
【问题讨论】:
标签:
php
frameworks
coding-style
components
laravel
【解决方案1】:
嗯,我没有使用 laravel 的经验,但有一段时间使用 Zend Framework 2。对于开发,我使用领域驱动设计 + MVC 的方法。
我的建议是使用第一种方法。
1.代码更好维护
如果你想改变一些东西,你只需要在一个地方改变一件事情,它就会完成。不是在您共享的所有副本中
2。服务器
您担心需要第二台服务器,以便将任务分配给服务器。好吧,除非您有非常大的任务(例如每小时向客户发送数百万封邮件),否则您不必担心特定任务的专用服务器。
只需在服务器前面放置一个负载平衡器即可。这样,当有很多 api 调用进来但没有仪表板时,你仍然使用两个服务器,而不是 1 是放松的。
3.维护
如果有第三个东西(仪表板、api、站点?),那么您可以轻松地使用当前代码库进行扩展,而无需进行大量更改。
tl;dr 我推荐第一个