为什么选择ABP.IO 平台

abp.io mascot

本文档旨在回答这个重大问题:

"为什么要使用 ABP.IO 平台,而不是从头开始创建新的解决方案?

该文件介绍了构建现代软件解决方案所面临的挑战,并解释了 ABP 如何应对这些挑战。

abp.io mascot

创建新的解决方案

当你需要开始一个新的解决方案时,你需要问自己很多问题,在开始编写你的第一个业务代码之前,你应该花很多时间。


问题

即使是创建一个几乎为空的解决方案也具有挑战性;

  • 您是如何组织跨项目的代码库的?
  • 有哪些层次,它们如何相互作用?
  • 如何与第三方资料库和系统集成?
  • 如何设置自动测试?

ABP 解决方案

ABP 基于领域驱动设计原则,提供了一个架构完善、分层且可投入生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。


问题

您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,要跟上最新的工具、库、趋势和方法具有挑战性。

ABP 解决方案

ABP 将流行、成熟和最新的库预先集成到解决方案中。你不需要花时间集成它们或让它们相互通信。它们开箱即可正常工作。


问题

在解决UI问题时,会遇到一系列挑战。这些挑战包括为建立一个具有一致外观和导航菜单、页眉、工具栏、页脚、小工具等一系列功能的响应性、现代性和适应性强的UI套件奠定基础。

即使您选择了预先设计的主题,将其无缝集成到您的项目中也可能需要数天的开发时间。升级此类主题还会遇到额外的障碍。通常情况下,主题的 HTML/CSS 结构会与您的UI代码交织在一起,从而使未来的主题更改或升级任务变得错综复杂。这种代码和设计的交织使后续调整的灵活性变得更加复杂。

ABP 解决方案

ABP Framework 提供了一个独特的主题系统,可将UI代码从主题限制中解放出来。主题独立存在,打包为 NuGet 或 NPM 包,使主题的安装或升级成为分分钟的事。您可以选择开发自定义主题或集成现有主题,ABP 商业版提供了一系列精良的现代主题。

此外,还有一些UI组件提供商,如 Telerik 和 DevExpress。不过,这些提供商主要提供单个组件,因此您有责任建立自己的布局系统。在基于 ABP 的项目中工作时,您可以无缝整合这些库,就像在任何其他项目中一样。


问题

建立强大的测试环境是一项耗时的工作。它涉及在解决方案中设置专用测试项目、仔细选择必要的工具、创建服务和数据库模拟、制作基本基类和实用服务以尽量减少测试中的冗余代码,以及处理各种相关任务。

ABP 解决方案

ABP 启动模板预装了已配置的测试项目,为您简化了流程。这意味着从第一天起,您就可以立即开始编写初始单元或集成测试代码。


问题

在为开发设置好解决方案后,您通常还需要向开发人员传授系统的工作原理,以及如何使用商定的方法构建系统。即使你对他们进行了培训,保持文档的及时更新也是很困难的。随着时间的推移,每个开发人员都可能以自己的方式编写代码,导致编写代码的规则彼此不同。

ABP 解决方案

ABP 解决方案已经整理得井井有条,并有清晰的解释。循序渐进的教程和指南向你展示了 ABP 项目的具体操作方法。


问题

开始开发后,您必须跟踪所使用库的新版本,以便进行升级和打补丁。

ABP 解决方案

我们会定期将所有包更新至最新版本,并在稳定版本发布前对其进行测试。当你更新 ABP 框架时,它的所有依赖项都会升级到边缘技术。

Abp update CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 包。有了 ABP,使用最新版本变得更加容易。


不要重复自己

abp.io 不要重复自己

创建基础解决方案需要大量时间,并需要良好的建筑经验。然而,这仅仅是个开始!在开始开发时,您可能需要编写大量重复的代码;如果所有这些代码都能自动处理,那就再好不过了。

ABP 遵循 "约定重于配置 "的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。

abp.io 不要重复自己

问题

单点登录、Active Directory / LDAP 集成、OpenIddict 集成、社交登录、双因素验证、忘记/重置密码、电子邮件激活、新用户注册、密码复杂性控制、尝试失败时锁定账户、显示失败的登录尝试......等等。我们知道,您对所有这些通用要求都不陌生。您并不孤单!

ABP 解决方案

ABP Framework 和商业版本提供了所有这些标准内容,并作为可重用的账户模块预先为您实现。你只需启用和配置你所需要的即可。


问题

交叉关注点是每个用例都应实施的基本重复逻辑。举例如下

  • 启动事务,成功时提交,出错时回滚。
  • 处理和报告异常,向客户端返回正确的错误响应,并在客户端处理错误案例。
  • 实施授权和验证,返回适当的响应,并在客户端进行处理。

ABP 解决方案

ABP 框架可自动或简化所有常见的交叉问题。您只需编写与业务相关的代码,ABP 会按照约定处理其余代码。


问题

您通常需要构建基础架构来正确实施您的架构。例如,您一般会实施仓储模式。您需要定义一些基类,以简化和标准化创建实体、服务、控制器和其他对象。

ABP 解决方案

ABP 框架开箱即可提供所有这些功能,甚至更多。它非常成熟,而且文档齐全。


问题

在每个业务应用程序中,您都要反复执行许多要求;

  • 详细的权限系统,并根据角色和用户管理UI上的权限。
  • 编写审计日志和实体历史记录,以跟踪用户何时修改了数据库记录。
  • 使实体软删除,这样它们就会被标记为已删除,而不是从数据库中物理删除,并在查询时自动过滤已删除的实体。
  • 创建抽象和包装器,以便从前端代码中使用后端API。
  • 排队和执行后台作业
  • 在全球系统中处理多个时区。
  • 在服务器和客户端之间共享验证、本地化和授权逻辑。

ABP 解决方案

ABP 提供了轻松实现这些要求的基础架构。同样,您无需花费宝贵的时间反复重新实现所有这些要求。


问题

在一个典型的Web应用程序中,您会创建许多类似的页面。它们中的大多数都会执行类似的 CRUD 操作。重复创建此类页面非常乏味,而且容易出错。

ABP 解决方案

ABP Suite 可在数秒内为您的实体生成一个全栈 CRUD 页面。生成的代码分层且简洁。所有标准验证和授权要求均已实现。此外,还生成了单元测试类。一旦您获得了一个完全运行的页面,您就可以根据您的业务需求对其进行修改。


问题

大多数库的设计都比较低级,您通常需要做一些工作来正确集成它们,而不会在解决方案中到处重复相同的集成和配置代码。例如,假设您必须使用 RabbitMQ 来实现分布式事件总线。您要做的就是向队列发送消息并处理传入消息。但您需要了解消息传递模式、队列和交换细节。要编写高效的代码,必须创建一个池来管理连接、客户端和通道。您还必须处理异常、ACK 消息、失败时重新连接 RabbitMQ 等问题。

ABP 解决方案

例如,ABP 的 RabbitMQ 分布式事件总线集成抽象了所有这些细节。您可以发送和接收消息,而无需进行繁琐的操作。您需要编写底层代码吗?没问题,您可以随时这样做。当您需要使用您正在使用的库的底层功能时,ABP 不会限制您。


问题

所有基础设施,即使是最简单的,也需要大量时间来构建、维护和记录。随着时间的推移,这些基础架构会变得越来越庞大,很难在解决方案中对其进行维护。将这些分离成一个可重用的项目,是建立自己内部框架的起点。

构建、记录、培训和维护一个内部框架非常困难。如果你没有一个经验丰富的专门框架团队,你的内部框架很快就会变成没有文档的遗留代码,再也没有人能理解和维护。另一方面,这些框架通常由团队中的一两个开发人员开发。这些人正在成为知识孤岛。这对他们有利,但对公司不利,因为他们是项目的单点故障-SPOF-。一旦他们离开公司,项目就会急剧下滑。

ABP 解决方案

ABP 框架是一个社区驱动、文档齐全、成熟且通用的应用程序框架。由经验丰富的开发人员组成的团队正在努力使其保持最新、易懂和易于使用。使用这样一个稳定的框架,您可以专注于自己的业务代码,并随时从专家那里获得框架方面的帮助。


建筑基础设施

abp.io mascot

SaaS 应用程序、模块化或微服务系统是最常用的企业软件模型。构建此类系统不仅需要良好的理解和经验,还需要强大的软件基础设施。否则,你会发现自己要花费很大精力才能在代码库中支持这些架构细节。

abp.io mascot

问题

建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、API、UI页面/组件)都可以分割成模块,而且每个模块都可以重用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。

ABP 解决方案

ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重用的模块。


问题

多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。

ABP 解决方案

ABP 框架提供完整的多租户基础架构,并从您的业务代码中抽象出复杂性。您的应用程序代码大部分将具有多租户意识,而 ABP 框架会自动隔离租户之间的数据库、缓存和其他细节。它支持单个数据库、每个租户数据库和混合方法。它能正确配置 Microsoft Identity 和 OpenIddict 等库,这些库通常与多租户不兼容。


问题

构建微服务系统需要许多基础设施细节:对应用程序和微服务进行身份验证和授权,以及在微服务之间实施异步消息传递和同步(Rest/GRPC)通信模式是最基本的问题。

ABP 解决方案

ABP 框架提供服务、指南和示例,帮助您使用行业标准工具实施微服务解决方案。

ABP Commercial 甚至更进一步,提供了完整的 启动模板,以启动您的微服务解决方案。


abp.io module

预制模块

问题

我们每个人都有相似但略有不同的业务需求。但是,我们都应该重新发明轮子,因为没有人的代码可以直接用于我们的解决方案。它们都是更大解决方案的嵌入部分。

abp.io module

ABP 解决方案

ABP Commercial 模块提供了大量可重用的应用模块,如支付、聊天、文件管理、审计日志报告......等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们将不断添加更多模块。

所有模块均可根据您的业务需求进行定制。如果您需要完全控制,可以下载任何模块的完整源代码,并根据您的具体业务要求进行完全定制。


ABP 社区

ABP 社区

最后,在一个大社区中,每个人都遵循相似的编码风格和原则,并共享一个共同的基础架构,当你遇到困难或在设计决策上需要帮助时,这将为你带来力量。因为我们的代码编写方式相似,所以我们可以更好地互相帮助。ABP 是一个由社区支持的项目,在 GitHub 上拥有 10K star。

ABP 开发人员之间可以轻松共享代码,甚至是可重用的库。对你有用的代码片段也会对其他人有用。有很多示例和教程可以直接用于您的应用程序。

如果您聘请的开发人员曾使用过 ABP 架构,那么他将立即了解您的解决方案,并在很短的时间内开始开发。