San*_*uys 3 architecture design-patterns
不久之后,我在某处了解了如何改进MVC模式以适应我们今天看到的高度灵活和分层(Web)应用程序.(令我沮丧的是,我似乎无法再找到那篇文章)
例如,一些谷歌应用程序,如GMail,甚至像Firefox这样的浏览器.
它由可以扩展和完全替换的组件组成.用户可以选择他们喜欢的用户界面或主题,有某种插件系统等等......
Owkay我知道,这是多么伟大/伟大的应用程序的构建.这就是我问这个问题的原因.
您能否向我提供有关使用何种模式或如何在架构上构建这些应用程序的资源或见解...
我猜你在谈论软件架构(与硬件或系统架构相反).
可能最重要的规则(我不称之为模式)是关注的分离.这意味着一个组件应该只处理一个任务,只处理该任务和完成任务.如果你坚持(这比它看起来更难).您将拥有所提到的可插入性的基础,例如交换UI.如果您的UI图层确实只有UI,则可以用完全不同的东西替换它.
如果你真的说话很大,就像上面提到的GMail一样,"最终一致"的概念变得很重要.经典应用程序以用户执行动作的方式构造,例如按下按钮.应用程序处理该操作(例如,从数据库中的表单保存数据).并在完成后刷新GUI(例如,用编辑按钮替换'保存'按钮.这种线性处理有益处,用户总能看到一致的状态.如果他转身搜索数据库,他会找到他的但是当你在系统上负载极高时,这并不能很好地扩展,因为保存的最佳数据库在大多数情况下并不是完美的搜索数据库.所以有些应用程序会这样做:当用户点击保存按钮时,以可能的方式存储数据(例如,为更新优化的数据库),设置需要进一步处理的标记并刷新gui.现在有一个单独的过程来处理保存的数据例如,通过更新特殊索引或将其存储在为搜索而优化的单独数据库中.第二个过程可能会收集许多操作的更改以提高性能.
使用此设计,您可以进一步扩展,因为您正在分离关注点:存储和搜索数据是两个不同的任务,因此它们被拆分为两个不同的组件,这可以在这个极端情况下并行工作.对于用户而言,这意味着他可能不会立即找到他刚刚保存的东西,但他最终会这样做.因此'最终的一致性'
编辑:我忘记了资源.关于应用程序架构的好书是:Martin Fowlers的企业应用程序架构模式.对于一般的模式当然:关于消息传递体系结构模式的'设计模式'' http://www.amazon.de/s/ref=nb_ss_eb?__mk_de_DE=%C5M%C5Z%D5%D1&url=search-alias%3Denglish- books&field-keywords = Enterprise + Integration&x = 0&y = 0 '.我不推荐任何有关可扩展性的书籍,但我建议使用"构建可扩展的网站".各种大型应用程序(例如Twitter)的架构是会谈,演示文稿和论文的主题,因此当您使用google> architecture twitter <时,您将获得大量资源.