Web applications Web应用程序架构-通用解决方案&x2B;独立实例->;成长与发展;维修

Web applications Web应用程序架构-通用解决方案&x2B;独立实例->;成长与发展;维修,web-applications,maintenance,Web Applications,Maintenance,我目前正在开发一个web解决方案(后端和前端),该解决方案将交付给多个客户。 每一个都将独立地托管在自己的数据库中 其理念是使解决方案不断发展,并在某一点上对每个客户通用。 我想要实现的是构建一个结构,使我们能够避免任何维护问题、版本冲突和诸如此类的事情 重要的一点是,在任何情况下,应用程序/站点/解决方案(特别是在前端)对于每个人都是不同的,一些文件(模板//CSS/…)是独立的 因此,我的问题是,我们应该如何设计/构建这样的应用程序,以便能够在几年内和多个客户中维护它? 我不想在一个“实例”

我目前正在开发一个web解决方案(后端和前端),该解决方案将交付给多个客户。 每一个都将独立地托管在自己的数据库中

其理念是使解决方案不断发展,并在某一点上对每个客户通用。 我想要实现的是构建一个结构,使我们能够避免任何维护问题、版本冲突和诸如此类的事情

重要的一点是,在任何情况下,应用程序/站点/解决方案(特别是在前端)对于每个人都是不同的,一些文件(模板//CSS/…)是独立的

因此,我的问题是,我们应该如何设计/构建这样的应用程序,以便能够在几年内和多个客户中维护它? 我不想在一个“实例”中解决一个bug,而必须将它复制到另50个客户主机上,因为我们忘记复制文件X的早期版本,所以可能会发生其他冲突

我想到的解决方案之一是:

  • 创建一个基础项目,其中包含所有类、组件,每个人都通用,并提供某种“框架”
  • 为每个客户创建一个项目(一个独立文件夹)
  • 符号链接将在全局(基本级别)上维护的所有文件/文件夹
优势:

  • 基础项目中的一项更改(新功能/错误修复…)将自动在任何地方可用
  • 我们仍然可以在代码中保持一定的“独立性”,因为每个项目都是独立的,并且可以更新文件(基本项目除外)
我不确定什么是最好的解决方案,也不确定是否有这样的“最佳实践”。 请分享你在这个话题上的经验


谢谢

设计一个可定制且易于扩展的项目需要大量的计划。模块化是您想要记住的,您将把项目划分为更小的部分,每个部分都提供特定的功能,并且应该易于重用

您可能希望遵循特定类型的体系结构。MVC是最流行的一种,其中处理数据库交互的部分(M)、在html中呈现结果的部分(V)和执行复杂操作的部分(C)是分开的

我同意创建一个必须存储在存储库中以便于部署的基础项目。为每个客户创建一个单独的文件夹/项目听起来像是一项乏味的任务。我不知道您将要实现的差异的程度,但是如果您能够在基础项目本身内处理它,那么一切都会更好。试想一下,如果你有一个模块在基础项目中,那么你决定对其中一个客户使用不同的模块,你将不得不编辑该项目的每个实例,因为它不再是全局的(除非你能找到一种方法来覆盖它,但你得到了这个想法)

顺便说一下,我是一名Python/Django开发人员,我使用这种组合来创建遵循DRY(不要重复自己)原则的项目,并且根据您的需要,能够提供特定于站点的设置。由于您主要提到了前端差异,例如,它允许您在访问www.example1.com时告诉应用程序使用template1(html,css),在访问www.example2.com时告诉应用程序使用template2,但这些都存在于项目的一个实例中


希望能有所帮助。

设计一个可定制且易于扩展的项目需要大量的计划。模块化是您想要记住的,您将把项目划分为更小的部分,每个部分都提供特定的功能,并且应该易于重用

您可能希望遵循特定类型的体系结构。MVC是最流行的一种,其中处理数据库交互的部分(M)、在html中呈现结果的部分(V)和执行复杂操作的部分(C)是分开的

我同意创建一个必须存储在存储库中以便于部署的基础项目。为每个客户创建一个单独的文件夹/项目听起来像是一项乏味的任务。我不知道您将要实现的差异的程度,但是如果您能够在基础项目本身内处理它,那么一切都会更好。试想一下,如果你有一个模块在基础项目中,那么你决定对其中一个客户使用不同的模块,你将不得不编辑该项目的每个实例,因为它不再是全局的(除非你能找到一种方法来覆盖它,但你得到了这个想法)

顺便说一下,我是一名Python/Django开发人员,我使用这种组合来创建遵循DRY(不要重复自己)原则的项目,并且根据您的需要,能够提供特定于站点的设置。由于您主要提到了前端差异,例如,它允许您在访问www.example1.com时告诉应用程序使用template1(html,css),在访问www.example2.com时告诉应用程序使用template2,但这些都存在于项目的一个实例中

希望这有帮助