Design patterns 对于高度灵活的应用程序,还有哪些类似MVC的设计模式/体系结构?

Design patterns 对于高度灵活的应用程序,还有哪些类似MVC的设计模式/体系结构?,design-patterns,architecture,Design Patterns,Architecture,不久前,我在某个地方读到关于如何改进MVC模式以适应我们今天看到的高度灵活和分层(web)应用程序的文章。(令我沮丧的是,我似乎再也找不到那篇文章了) 例如,一些谷歌应用程序,比如GMail,甚至像Firefox这样的浏览器 它由可扩展和完全更换的部件组成。用户可以选择他们喜欢的用户界面或主题,有一些插件系统等 Owkay我知道,这就是构建大型/伟大应用程序的方式。这就是我问这个问题的原因 您能为我提供关于使用什么模式或如何构建这些应用程序的资源或见解吗…我想您谈论的是软件体系结构(与硬件或系统

不久前,我在某个地方读到关于如何改进MVC模式以适应我们今天看到的高度灵活和分层(web)应用程序的文章。(令我沮丧的是,我似乎再也找不到那篇文章了)

例如,一些谷歌应用程序,比如GMail,甚至像Firefox这样的浏览器

它由可扩展和完全更换的部件组成。用户可以选择他们喜欢的用户界面或主题,有一些插件系统等

Owkay我知道,这就是构建大型/伟大应用程序的方式。这就是我问这个问题的原因


您能为我提供关于使用什么模式或如何构建这些应用程序的资源或见解吗…

我想您谈论的是软件体系结构(与硬件或系统体系结构相比)

可能最重要的规则(我不会称之为模式)是分离关注点。这意味着一个组件应该只处理一个任务,只处理该任务和整个任务。如果你坚持这一点(这比看起来更难)。您将拥有您提到的可插拔性的基础,例如交换UI。如果你的UI层真的只做UI,它可以被完全不同的东西所取代

如果你真的在说大话,就像上面提到的GMail一样,“最终一致性”的概念变得很重要。经典的应用程序是以用户执行动作的方式构造的,比如按下按钮。应用程序处理该操作(例如,将表单中的数据保存到数据库中)。并在完成后刷新GUI(例如,将“保存”按钮替换为编辑按钮。这种线性处理的好处是,用户总能看到一致的状态。如果他转身搜索数据库,他会在那里找到自己的数据。但是,当系统负载极高时,这不能很好地扩展,因为保存的最佳数据库是最重要的有时,数据库并不是搜索的理想数据库。因此,一些应用程序会这样做:当用户点击“保存”按钮时,应用程序会以尽可能快的方式存储数据(例如,为更新而优化的数据库),设置需要进一步处理的标记并刷新gui。现在,会出现一个单独的过程来处理保存的数据,例如,通过更新特殊索引或将其存储在单独的数据库中,该数据库经过优化以进行搜索。第二个过程可能会收集许多操作的更改,以提高性能

通过这种设计,您可以进一步扩展,因为您正在分离关注点:存储和搜索数据是两个不同的任务,因此它们被分为两个不同的组件,在这种极端情况下可以并行工作。对于用户来说,这意味着他可能不会立即找到他刚刚保存的内容,但他最终会找到。因此“最终的缺点”存在性


编辑:我忘了资源。关于应用程序体系结构的好书有:Martin Fowlers的《企业应用程序体系结构模式》。对于一般模式,当然是关于消息传递体系结构的模式:“设计模式”。我不能推荐任何关于可伸缩性的书,但推荐“构建可伸缩的网站”d对我来说。各种大型应用程序(如Twitter)的体系结构是一个演讲、演示和论文的主题,因此当你在google>architecture Twitter(MVP)时,你会得到很多资源,它经常与MVC混淆,但我发现它更灵活,尽管它可能会从附加的控制器组件中受益。我不能告诉您它是否在大规模应用中更有益,但它肯定是一种类似MVC的模式。存在其他MVC变体,例如(MVVM),但这一点更具体到微软的WPF。

看看是否有帮助

这里有一些好的观点和概念,我喜欢“实用”的例子……txni现在正在阅读Fowlers的《企业应用程序架构模式》,这真是太棒了!