Web应用架构-通用解决方案+独立实例->增长&维护?
Posted
技术标签:
【中文标题】Web应用架构-通用解决方案+独立实例->增长&维护?【英文标题】:Web application archirecture - Common solution+independant instance -> Grow & maintenance? 【发布时间】:2011-03-02 12:09:04 【问题描述】:我目前正在开发一个将交付给多个客户的网络解决方案(后端和前端)。 每一个都将使用自己的数据库独立托管。
我们的想法是让解决方案在特定点上增长并在每个客户中通用。 我想要实现的是构建一个结构,使我们能够避免任何维护问题、版本冲突和类似的事情。
重要的一点是,在任何情况下,应用程序/站点/解决方案(尤其是在前端)对于每个人都不会相同,并且某些文件(模板//CSS/...)将是独立的。
所以我的问题是我们应该如何设计/构建这样的应用程序,以便我们可以在多年和多个客户中维护它? 我不想解决一个“实例”中的错误,并且必须将其复制到其他 50 个可能发生其他冲突的客户托管,因为我们忘记复制文件 X 的先前版本...
我想到的解决方案之一是:
创建一个 BASE 项目,其中包含所有人通用的所有类、组件并提供一种“框架”。 为每位客户创建一个项目(一个独立文件夹)。 SYMlink 将在全球范围内维护的所有文件/文件夹(在 BASE 级别)。优点:
基础项目中的一项更改(新功能/错误修复..)将自动随处可用。 我们仍然可以在代码中保持一定的“独立性”级别,因为每个项目都是独立的,并且文件可以更新(基础项目除外)我不确定最佳解决方案是什么,以及是否有针对此类的“最佳实践”。 请分享您在该主题上的经验。
谢谢!
【问题讨论】:
【参考方案1】:设计一个可定制且易于扩展的项目需要大量的规划。模块化是您要牢记的,您将在其中将项目划分为更小的部分,每个部分都提供特定的功能并且应该易于重复使用。
您可能希望遵循特定类型的架构。 MVC 是最流行的一种,其中处理数据库交互的部分(M)、在 html 中呈现结果(V)和执行复杂操作的部分(C)是分开的。
我同意创建一个基础项目,您必须将其存储在存储库中以便于部署。不过,为每个客户创建一个单独的文件夹/项目听起来像是一项乏味的任务。我不知道您将要实施的差异程度,但如果您可以在基础项目本身内处理它,那就更好了。想一想,如果您有一个位于基础项目中的模块,那么您决定希望它对其中一个客户有所不同,您将不得不编辑该项目的每个实例,因为它不再是全局的(除非您可以找到一种方法来覆盖它,但你明白了)。
顺便说一下,我是一名 Python/Django 开发人员,我使用这种组合来创建符合 DRY(Dont Repeat Yourself)原则的项目,并且根据您的需要,可以提供特定于站点的设置。由于您主要提到了前端差异,例如,它将允许您告诉应用程序在访问 www.example1.com 时使用 template1 (html, css),在访问 www.example2.com 时使用 template2,然而这些都存在于项目的一个实例中。
希望有所帮助。
【讨论】:
以上是关于Web应用架构-通用解决方案+独立实例->增长&维护?的主要内容,如果未能解决你的问题,请参考以下文章
C# 配合 Easyui DataGrid 实现增删改查 通用模板