ABP框架通过遵循软件开发最佳实践和约定的方式,为构建现代Web应用程序提供了完整的基础设施。ABP框架是一个上层应用框架,拥有丰富的生态,可以帮助开发者实现DRY(Don’t Repeat Yourself)原则,并使其专注于编写业务代码。
本书由ABP框架项目的领导者撰写,能够帮助读者从零开始全面了解ABP框架和现代Web应用程序开发技术。通过逐步讲解基本概念和真实案例,读者将了解现代Web解决方案的需求,以及如何使用ABP框架方便地开发自己的解决方案。本书还将介绍企业级应用程序开发中的一些通用需求和ABP框架提供的基础设施组件。通过本书,读者将掌握构建可维护的模块化Web解决方案的最佳实践。
阅读完本书,读者将能够创建一个完整且易于开发、维护和测试的Web解决方案。
目标读者
本书面向想要学习软件架构和最佳实践、使用微软技术和ABP框架构建可维护的Web解决方案的开发人员。在阅读本书前,读者需要具有C#和ASP.NET Core相关的基础知识。
内容结构
本书分为5部分,共17章,主要内容包括:
第1章讨论开发业务应用程序面临的常见挑战性问题,并阐述ABP框架如何解决这些挑战性问题。
第2章探讨如何使用ABP框架创建和运行一个新的解决方案。
第3章是本书最长的一章,通过逐步创建一个完整的应用程序,介绍如何使用ABP框架开发应用程序。这一章基本上集合了本书的大部分内容。通过阅读这一章,虽然可能无法理解ABP框架的所有特性,但是可以使用ABP框架的基本组件创建自己的应用程序,从而大致地了解ABP框架的功能。然后可以通过阅读后续章节深入地理解ABP框架的所有技术细节。
第4章介绍EventHub解决方案的结构和架构。这是专门为本书创建的一个大型示例应用程序。建议读者阅读这一章时,在自己的开发环境中运行该解决方案。
第5章探讨一些基本的概念,如依赖注入、模块化、配置和日志。这些概念对理解与使用ABP框架和ASP.NET Core进行应用程序开发是必不可少的。
第6章介绍实体、仓储和工作单元的概念,并探讨如何使用Entity Framework Core和MongoDB。这一章还将介绍查询数据、操作数据及控制数据库事务的不同方法。
第7章重点介绍应用程序中需要关注的3个问题: 授权、验证和异常处理。应用程序中的每个部分基本都需要关注这些问题。这一章将探讨如何使用基于权限的授权系统、验证用户输入及处理异常和异常信息。
第8章介绍一些ABP框架中的常用功能,如获取当前用户的信息、数据过滤和审计日志、数据缓存和本地化。
第9章是DDD部分的第1章。首先阐述DDD的概念,并基于DDD构建了一个.NET解决方案; 然后探讨如何把DDD标准的四层解决方案模型演变为ABP框架中的启动模板解决方案的结构; 此外,还将介绍DDD的构件和原理。
第10章将继续介绍DDD中的领域层。首先介绍EventHub的领域对象,然后探讨如何设计聚合,实现领域服务、仓储和规约,以及使用事件总线发布领域事件。
第11章重点介绍DDD中的应用层。这一章将介绍设计和验证数据传输对象及实现应用服务的最佳实践,还将探讨领域层和应用层的职责。
第12章介绍MVC(Razor Pages)应用程序开发技术,它是一种在服务器端生成HTML的技术。这一章将探讨ABP框架实现的主题系统,以及提供的一些其他功能,如打包、压缩、自定义标签、表单、菜单和模态框; 还将介绍如何在客户端调用服务器端的API,以及如何使用ABP框架提供的JavaScript API展示通知和消息框等。
第13章与第12章类似,介绍如何使用微软的Blazor框架和ABP框架进行UI开发。Blazor是一个很好的框架,使开发者可以在.NET平台上开发运行在浏览器上的应用程序。ABP框架扩展了Blazor框架,提供了访问HTTP API的解决方案,实现了主题系统,并提供了一些常用的服务来简化UI的开发工作。
第14章探讨如何使用ASP.NET Core和ABP框架的自动API控制器系统创建API控制器,并讨论何时需要手动定义控制器。这一章将介绍动态和静态C#代理,它能够自动地从.NET客户端调用服务器端定义的基于ABP框架的HTTP服务; 还将探讨在ABP框架中使用SignalR的方法。
第15章通过一个示例介绍可复用应用模块的开发过程。这一章将为EventHub解决方案创建一个支付模块,并阐述该模块的结构。通过这种方式,读者将了解如何开发可重用模块并把它们安装到应用程序中。
第16章重点介绍ABP框架提供的另外一个架构——多租户,这是一种用于构建软件即服务(SoftwareasaService,SaaS)解决方案的架构模式。这一章将探讨是否要在解决方案中使用多租户,以及如何编写与ABP框架的多租户系统兼容的代码; 还将介绍ABP框架的功能系统,在多租户解决方案中,该系统用于把应用程序功能定义为特性,并把它们分配给租户。
第17章介绍ABP框架提供的测试基础设施,以及如何使用xUnit测试框架为应用程序编写单元测试和集成测试。这一章将介绍一些关于自动化测试的基础知识(如断言、模拟数据和替换服务)及处理异常的方法。