Architecture 整块石和n层有什么区别?

Architecture 整块石和n层有什么区别?,architecture,microservices,n-tier-architecture,n-layer,Architecture,Microservices,N Tier Architecture,N Layer,我有一些关于独石和n层架构的问题 首先,Monolith和n层架构有什么区别 其次,假设我有一个由多个项目组成的Visual Studio解决方案,例如: 表示层 服务层 业务层 跨层 数据层 单元测试 这被认为是整体结构还是n层结构 如果我有包含(比方说)3个Web API的微服务,并且我在单个单独的Visual Studio解决方案中构建每个服务,可以实现我以前的项目结构(服务层、业务层、数据层等) 非常感谢,很抱歉我的英语不好。好的,所以Monolith解决方案基本上是在一个解决方案中包含

我有一些关于独石n层架构的问题

首先,Monolith和n层架构有什么区别

其次,假设我有一个由多个项目组成的Visual Studio解决方案,例如:

  • 表示层
  • 服务层
  • 业务层
  • 跨层
  • 数据层
  • 单元测试
  • 这被认为是整体结构还是n层结构

    如果我有包含(比方说)3个Web API的微服务,并且我在单个单独的Visual Studio解决方案中构建每个服务,可以实现我以前的项目结构(服务层、业务层、数据层等)


    非常感谢,很抱歉我的英语不好。

    好的,所以
    Monolith
    解决方案基本上是在一个解决方案中包含一个项目,其中包含所有代码

    假设你在做一个网站

    这意味着您将创建一个具有单个项目和所有数据库调用(持久性)、逻辑(业务逻辑/服务)的单个解决方案,并最终确定如何在单个项目中以混乱的方式显示所有计算数据(表示)。有时,人们试图将关注点分成文件夹,但通常情况下,这是一个大混乱。这使得应用程序的支持/维护成为一场噩梦。如果您希望对网站/应用程序进行一次更改,则整个应用程序将脱机/重新启动

    vs

    n层/n层
    解决方案/应用程序。这就是我们在一个解决方案中有多个项目(通常)的地方,该解决方案将应用程序的关注点分离到更小型的组件中。这使我们能够将问题空间保留在单个区域,从而使其更易于维护和支持。这还可以更方便地将各种组件/项目/dll重用到应用程序的各种其他子系统中。它比旧的整体式建筑模式要好得多。但是,如果您希望对网站/应用程序进行一次更改,则整个应用程序仍将脱机/重新启动

    最后,我们有
    微服务
    。这是一个更现代的概念,并随着
    monolith->n-tier->microservices
    的发展而继续发展。这就是我们将应用程序问题分解为单个应用程序的时候,这样当一个微服务需要更新时,整个应用程序的开发就不会停止。当然,应用程序中依赖微服务的部分可能会停止/受到影响,但整个应用程序可能不会受到影响

    让我们举一个例子:

    我有一个卖宠物(猫/狗等)的网站。 我可能会将此网站拆分为单独的微服务迷你网站:

    • 认证
    • 管理/后端管理(思考:只有管理员才能看到的东西)
    • 公共网站
    • 动物名录
    • 购物车
    因此,它们中的每一个都是一个单独的网站,就像n层体系结构的应用程序一样。因此,它将有一个表示层(MVC网站)。一些数据库项目和一些基本服务

    现在,4个微服务(迷你网站)都能做到这一点

    现在,您需要更新网站管理部分的一些内容。你把它离线,主网站就会保持不动。人们仍然可以浏览和购买动物

    所以,是的,如果您的应用程序足够大,并且有您可能想要分割的区域,那么实现微服务是一件好事。它确实增加了一些复杂性,但也带来了自身的优势


    是的,如果你的应用程序不是某个愚蠢的hello world应用程序或某个研究项目,你的微服务应该遵循n层模式。

    你的问题的简短答案是- 技术堆栈的水平分区(n层体系结构) vs。
    技术堆栈的垂直分区(微服务)

    非常感谢您的详细回答,这确实有助于我理解其中的差异。很好的解释(尽管不喜欢购买/出售宠物:)。我想补充一点,
    微服务
    方法主要用于类似平台的应用程序,如果我没有弄错的话——这意味着你可以轻松创建另一个与所有现有微服务交互的前端应用程序,而使用
    monolith
    ,你必须编辑你的单一解决方案并将新应用程序合并到其中。此外,微服务及其所有服务、前端应用程序等可以托管在不同的服务器上,这是monolith无法做到的。关于
    n分层的
    体系结构-这没问题,所有的monolith或微服务现在都应该实现它。这并不能回答问题。再次阅读问题,并整洁地回答两个主要问题-“第一个”和“第二个”,最后回答关于“实施”的第三个问题。