项目

微服务架构

"微服务是一种软件开发技术——它是面向服务架构(SOA)风格的一种变体,将应用程序构建为一组松散耦合的服务。在微服务架构中,服务是细粒度的,协议是轻量级的。将应用程序分解为不同的小型服务的优势在于它提高了模块化。这使得应用程序更易于理解、开发、测试,并且对架构侵蚀更具弹性。它通过让小型自治团队独立开发、部署和扩展各自的服务来实现并行开发。它还允许通过持续重构来演化单个服务的架构。基于微服务的架构支持持续交付和部署。"

维基百科

简介

ABP 的主要目标之一是提供一个便捷的基础设施,用于创建微服务解决方案。为实现这一点,

  • 提供了一个 模块系统 ,允许您将应用程序拆分为多个模块,每个模块可以拥有自己的数据库、实体、服务、API、UI组件/页面等。
  • 提供了一个 架构模型 ,用于开发与微服务开发和部署兼容的模块。
  • 提供了 最佳实践指南 ,用于开发符合标准的模块。
  • 提供了基础基础设施,用于在微服务中实现 领域驱动设计
  • 提供服务以 自动创建 REST 风格的 API ,从您的应用程序服务中生成。
  • 提供服务以 自动创建 C# API 客户端 ,使从另一个服务/应用程序消费您的服务变得容易。
  • 提供了一个 分布式事件总线 ,用于服务之间的通信。
  • 提供了许多其他服务,使您的日常开发更加便捷。

新应用程序的微服务

启动新解决方案的一个常见建议是始终从单体架构开始,保持其模块化,并在单体架构成为问题时拆分为微服务。这在开始时使您的进度更快,特别是如果您的团队规模较小,并且您不想处理微服务架构的挑战。

然而,开发这样一个良好模块化的应用程序可能是一个问题,因为很难保持模块之间的隔离,就像您为微服务所做的那样(参见 Stefan Tilkov的文章 关于这一点)。微服务架构自然迫使您开发良好隔离的服务,但在模块化单体应用程序中,很容易使模块彼此紧密耦合,并设计脆弱的模块边界和 API 契约。

ABP 可以通过提供一个与微服务兼容的严格模块架构来帮助您解决这一点,您的模块被拆分为多个层/项目,并在其自己的 VS 解决方案中完全隔离和独立于其他模块开发。这样开发的模块是一个自然的微服务,但它可以轻松地插入到单体应用程序中。参见 模块开发最佳实践指南 ,该指南提供了一个微服务优先的模块设计。所有 标准 ABP 模块 都是基于此指南开发的。因此,您可以通过嵌入到您的单体解决方案中来使用这些模块,或者将它们单独部署并通过远程 API 使用。它们可以共享单个数据库,或者根据您的简单配置拥有自己的数据库。

微服务解决方案模板

ABP 提供了一个预先架构且生产就绪的微服务解决方案模板,其中包括多个服务、API 网关和应用程序,彼此之间良好集成。此模板帮助您快速开始构建具有常见微服务模式的分布式系统。

有关详细信息,请参见 微服务解决方案模板 文档。

在本文档中