因此,我的工作有一个内置在代码点火器中的仪表板,其中仪表板上的每个应用程序在控制器/模型/视图中都有自己的子文件夹,没有任何共享。我的任务是把它升级到Laravel 5,我想借此机会以“正确的方式”去做。
我很好奇如何在Laravel 5中做到这一点。我会认为自己是一个中间的Laravel用户,我想找到一种方法让每个应用程序以某种方式“分离”,但也共享共同的模型/视图/信任等等。
我可以从我的头顶上想出一些麻木不仁的方法,但我很想看看你们的想法。有什么想法吗?
发布于 2015-03-19 23:27:33
从概念上讲,为每个“系统”设置一个集中式API (但对于所有系统并不相同)是理想的。
我使用了“系统”这个术语,并引用了这个词,因为你可能在一个系统中有很多应用程序,还有一个应用程序可以工作在一个以上的系统中。一个很好的例子是一个WebApp和一个移动应用程序,这两个不同的“应用程序”可以工作在相同的数据上。另一方面,您可能有一个仪表板控制您公司的CRM以及显示您的网站的统计数据,这基本上是一个应用程序与两个不同的“系统”。
例如,在同一个数据库中拥有网站和销售数据,如果您想要更改您的网站,可能会导致大问题,因为这可能会导致销售数据的问题,并且会受到任何sysadmin以及大多数(如果不是所有经验丰富)开发人员的反对。在同一个应用程序上拥有两个数据库会带来一组全新的问题。这没有考虑到可能存在的权限问题和/或攻击或黑客攻击的风险,这些问题影响到“比它更敏感的数据”。
因此,我建议您为每个系统构建一个单独的API,以使模型、关系和行为能够很好地分离和记录,并且对您有利。这意味着,当业务逻辑出现问题或变化时,您必须在一个地方查看它。
在这一点上,对于每一个“应用程序”,我都会有一个单独的代码库,但这更多的是个人观点。
现在的想法是,您必须从API中提取数据,并且在使用API之后,您只应该出于表示的原因进行格式化。也就是说:如果您有一个eCommerce,并且有一个cart total,它是所有产品的值之和,这个值来自API作为FLOAT或DECIMAL,已经确保您只有两个小数位数和消费部分格式(即添加货币等)。价值。
这是为了简化可能出现的不同版本的应用程序,并确保一致性( cart total在一个应用程序中可能永远不会出错,但另一个应用程序可能不会出错,因为它来自同一个应用程序)。
API的主要原因是一致性。较大的代码库不利于维护和性能的原因。另一方面,较小的代码基础可能会导致代码重复,这可能会导致一致性问题,以及当其中一个系统改变其行为时会出现奇怪的错误。
此外,这个决定是在决定框架之前做出的。在决定要构建什么之前,选择特定的框架或语言会给您做出错误决定带来很大风险。在任何JavaScript前端框架中使用API和使用演示文稿都比使用Laravel更容易。提供API可能比Laravel更容易从Rails (更好的模型)或Node (简单性和性能,更少你从来不用的东西)。此外,如果您决定以任何理由(无论是NoSQL、Postgres还是其他什么)使用不同的数据库,那么在查看您的选项之前选择一个框架可能是一个失败的因素。
所有这些决定都必须相互考虑。你需要最有利的选择,你可以感到舒适的工作。而对于周末项目来说,它通常意味着“你想要什么”,而对于可能持续数月或数年的项目来说,选择不同的语言或框架可能会对你构建的项目的速度和质量产生重大影响,这就是为什么这是一个如此困难和重要的决定的原因。
https://softwareengineering.stackexchange.com/questions/275897
复制相似问题