【问题标题】:Clarifications and Concrete examples of Software Architecture Patterns软件架构模式的说明和具体示例
【发布时间】:2020-12-16 14:57:06
【问题描述】:

我正在研究软件架构模式,我正在努力将这些模式与现代开发堆栈和框架以具体的方式联系起来。感觉学习设计模式/架构模式和编写实际代码之间存在脱节。

例如,如果您以 React 应用程序为例,使用 redux 进行状态管理,使用 Node / Express API,它使用 mongoose 作为 ORM 来访问 MongoDB(所以基本上是 MERN 堆栈),它的架构是这?我可以看到为分层/ n 层模式、面向服务的模式(或微服务,如果有多个较小的 API)、可能在反应客户端(甚至 MVC)中基于组件的结构模式提出论据。这是混合体、科学怪人还是刚刚出现的模式?

所以我的问题是:有人能具体解释一下这些模式如何应用于现代开发堆栈和框架吗?

我将非常感谢您在此处进行澄清。

【问题讨论】:

  • 这个问题听起来更适合softwareengineering.stackexchange.com
  • 这个问题似乎太宽泛了。尝试确定它的范围,以便您询问特定的框架。
  • 其实我就是这么做的。我给出了一个技术堆栈的具体示例,并针对单个示例请求了反馈。

标签: design-patterns architecture


【解决方案1】:

假设您已经决定了能够满足您的业务需求的架构策略(这本身就是一个非常复杂的主题)。您的下一步是选择满足您的技能和架构(模式)要求的堆栈:micro-servicesServerless 等。

您的困惑来自于大多数堆栈都适合几种不同的架构模式这一事实。从usual (pattern) suspects 的列表中,您的 MERN 示例可以很好地实现分层和模型-视图-控制器模式,但很难(如果可能)实现事件总线模式。

对于软件架构和开发中的一切,关键是经验。如何收集有关架构模式的经验?

我的建议是从自以为是的堆栈开始,这些堆栈被视为您选择的模式的参考实现。通过这样做,您将很快熟悉工作中的模式。

示例 1:Elm 支持Model View Update。可以被视为缺乏灵活性的东西实际上是一种优势,因为它只做一件事,但它做得很好! Elm 架构已成为许多其他 Web 堆栈以及著名的 React + Redux 的主要灵感来源。

示例 2:像 NestJS 这样的框架更加通用,但它们以一致的方式粘合了许多内部或第三方组件。您还可以学到很多东西,因为这些框架支持的架构模式比您第一次自己做的更好。

一旦您开始觉得您已经达到了框架的限制以实现您的目标:恭喜!这意味着您已经非常熟悉这些模式,并且您可能会考虑以自己的方式实现它们(例如:我不喜欢 CQRS à la NestJS)。或者您需要丰富您的模式目录以处理您所负责的新用例。

编码、冲洗、重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-11-11
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多