当前您所在的位置:首页>新闻中心>行业动态
新品发布
行业动态
营销活动

为什么选择 ABP?

发布时间:2025/02/26 浏览量:115

为什么选择 ABP?

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

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

创建新的解决方案

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

 创建空的解决方案

问题

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

· 如何组织跨项目的代码库?

· 有哪些层,它们如何交互?

· 如何与第三方库集成?

· 如何设置自动测试?

 

ABP 解决方案

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

 常用库

问题

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

ABP 解决方案

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

 用户界面主题和布局

问题

在解决用户界面问题时,会遇到一系列挑战。其中包括为一个具有一致外观和大量功能(如导航菜单、页眉、工具栏、页脚、小工具等)的响应性、现代性和适应性强的用户界面套件奠定基础。

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

ABP 解决方案

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

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

 测试基础设施

问题

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

ABP 解决方案

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

 编码标准与培训

问题

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

ABP 解决方案

ABP 解决方案已经整理得井井有条,并有清晰的解释。循序渐进的教程和指南准确地向你展示了如何开展 ABP 项目。

 保持解决方案最新

问题

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

ABP 解决方案

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

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

不要重复自己

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

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

 身份验证

问题

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

ABP 解决方案

ABP 将所有这些标准内容作为可重复使用的账户模块预先提供给您。你只需启用和配置你所需要的即可。

 交叉关注点

问题

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

· 启动事务,在成功时提交,在出错时回滚。

· 处理和报告异常,向客户端返回正确的错误响应,并在客户端处理错误案例。

· 实施授权和验证,返回正确的响应,并在客户端处理这些问题。

ABP 解决方案

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

 建筑基础架构

问题

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

ABP 解决方案

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

 企业应用需求

问题

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

· 详细的权限系统,并根据角色和用户管理用户界面上的权限。

· 编写审计日志和实体历史记录,跟踪用户修改数据库记录的情况。

· 使实体软删除,这样它们就会被标记为已删除,而不是从数据库中物理删除,并在查询时自动过滤已删除的实体。

· 创建抽象和包装器,以便从前端代码中使用后端应用程序接口。

· 排队和执行后台作业。

· 在全球系统中处理多个时区。

· 在服务器和客户端之间共享验证、本地化和授权逻辑。

ABP 解决方案

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

生成初始代码和工具

问题

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

ABP 解决方案

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

与第三方库和系统集成

问题

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

ABP 解决方案

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

 为什么不建立自己的框架?

问题

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

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

ABP 解决方案

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

建筑基础架构

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

 模块化

问题

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

ABP 解决方案

ABP 天生就是一个模块化的应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南说明了如何以标准方式开发可重复使用的模块。

 SaaS / 多租户

问题

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

ABP 解决方案

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

 微服务

问题

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

ABP 解决方案

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

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

 预制模块

问题

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

 

ABP 解决方案

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

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

 

ABP 社区

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

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

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

 

北京哲想软件有限公司