ABP Framework 5.3.0 稳定版已在2022年6月14日正式发布。

以下是本版本的新增功能:

  • “开始”页面提供创建单层项目选项
  • 启动模板提供 PWA 支持
  • Volo.Abp.Gdpr.Abstractions 包介绍
  • 将发件箱中的事件批量发布到事件总线
  • eShopOnAbp 项目改进和电子书公告
  • LeptonX Lite 文档、项目状态和路线图
  • OpenIddict 模块和 Keyclock 集成
  • 部署文档

欢迎加入 ABP Framework 研习社,千人QQ学习群(QQ群:726299208),问题解答、经验分享、示例源码、电子书共享,欢迎入住!

“开始”页面提供创建单层项目选项

单层项目,顾名思义生成的解决方案只有一个项目,逻辑上遵循DDD,适用于业务逻辑并不复杂的项目,优点是小而快,单层项目中良好的目录划分,如果后期项目开始变大,拆分成多层项目也很方便。

从“开始”页面创建项目,在项目类型选项选择 Application(single layer),即可使用 app-nolayers 模板生成新项目。

新的启动模板可以在 templates/app-nolayers 目录中查看,该模板在之前的版本中已经发布,只是在此版本中,可以在“开始”页面中增加了该模板选项。

同样的,我们还可以通过 ABP CLI 来创建单层项目

示例:

abp new -t Acme.BookStore app-nolayers

启动模板提供 PWA 支持

ABP v5.3 应用程序启动模板现在支持 Blazor WASMAngular UI PWA。 要创建支持 PWA 的启动模板,可以使用 --pwa 参数。

示例:

abp new MyProgressiveWebApp -t app -u blazor --pwa

什么是PWA?

PWA(Progressive Web Apps,渐进式 Web 应用),该技术的出现是通过各种 Web 技术实现与原生 App 相近的用户体验。

扩展阅读:

Volo.Abp.Gdpr.Abstractions 包介绍

新的 Volo.Abp.Gdpr.Abstractions 包已添加到框架中。这是一个抽象包,因此不包含任何 GDPR 的实际实现。它定义了一些类和接口,为想要在模块化或微服务系统中运行的 GDPR 模块的制定标准。

什么是 GDPR?

《通用数据保护条例》(General Data Protection Regulation,简称GDPR),欧洲联盟于2018年5月25日出台的条例,前身是欧盟在1995年制定的《计算机数据保护法》。

届时,官方将为 ABP Commercial 商业用户引入 GDPR 模块,该模块提供执行 GDPR 相关操作,例如:下载、删除个人数据。

ABP Framework 版本需要自己实现。

将发件箱中的事件批量发布到事件总线

在 ABP v5.0 中引入了 事务发件箱和收件箱模式 ,在 6.3.0 这个版本中对批量事件发布进行了一些优化,您可以从这里查看相关的开发。优化后的效果令人印象深刻。如果已配置事件发件箱则默认启用,因此您不需要任何手动配置。

eShopOnAbp 项目改进和电子书公告

eShopOnAbp 项目持续开发中,以下是改进简要说明:

  • 本地证书可以在 Kubernetes 中使用,并且 Helm Charts 已更新,参见#107
  • 订单管理页面已创建完成,参见#92
  • 数据库迁移事件处理程序已被删除,分布式锁定现在用于数据库迁移。参见#85#102
  • Ocelot 切换到 YARP 作为网关。见#97

令人振奋的消息是,官方正在编写《ABP 微服务开发》电子书。在本书中,我们使用 eShopOnAbp 作为参考的微服务解决方案,并试图通过该项目解释我们在微服务应用程序开发过程中的经验。

本书计划分为九章,并在第三章完成后提供。之后,您将能够从 abp.io 网站下载这本免费的电子书。

ABP的学习资料无疑是非常丰富的,这是官方发布的第三本电子书。《实现 DDD》-已翻译、《Mastering ABP Framework》在 ABP Framework 研习社(QQ群:726299208)群共享中有分享,ABP Framework 的目标之一是帮助开发人员更好地实现微服务架构,非常Nice,期待电子书发布!

LeptonX Lite 文档、项目状态和路线图

LeptonX Lite 终于发布了 1.0.0-beta.11.0.0-beta.2 版本。

Lepton X Lite 文档已针对三种 UI 类型(MVC/Razor Pages、Blazor、Angular)分别编写。

可以参考帮助文档尝试新的 LeptonX Lite 主题:

目前启动模板中的默认UI模板确实很Low,配不上框架本身的高大上,这就让人很不爽,希望 LeptonX Lite 的发布能够改变这一现状。因为目前是 beta 版,所以不建议在生产中使用,但强烈建议提前测试。

对于下一个版本(beta.3 和 RC 版本),将重点关注:

  • 修复社区报告的错误(在测试时也可以积极反馈bug)
  • 提供尽可能多的帮助文档
  • 在演示示例中添加新的自定义页面

OpenIddict 模块和 Keyclock 集成

此前官方已经宣布更换 IdentityServer 的计划。 ABP 目前使用 IdentityServer4 将 OAuth 功能添加为服务器端的内置功能。但是,由于 IdentityServer4 的支持在 2022 年底结束。新的替代版本是 Duende IdentityServer,不再是免费软件。 (看更多

因此,官方决定从 ABP 平台完全删除 IdentityServer4,并集成 OpenIddict 到启动模板中。

目前已经实现了 OpenIddict 模块,官方计划在 ABP v6.0 启动模板项目中删除 Identity Server 并将其替换为 OpenIddict 。

目前官方正在为 OpenIddict 模块创建文档,如果您想了解有关此模块的基础知识,可以从此处查看文档。目前,这是一个草稿文档,但提供了有关 OpenIddict 模块的整体知识,官方将在 ABP v6.0 中完成此文档,到时将能够完整地阅读它。

目前,官方还在研究 OpenIddict 和 Keycloak 并行集成的可能性,并且准备了一些示例,可以查看#154#158

Keycloak 是为现代应用和服务提供了开源IAM(Identity and Access Management)解决方案。Java开发,貌似国内用的不多,集成意义不大。

IdentityServer 4 一直是 .NET Core 平台上的首选,在 2020 年成立公司, IdentityServer 5 就开始收费了。ABP Framework 迫不得已选择新的替代方案。

ASP.NET Core Team 明确表示他们不会投入任何资源去研发类似 IdentityServer 的东西, 从 ASP.NET Core 5.0 开始, SPA项目模板是默认依赖 IdentityServer 4 ,6.0 也会依赖, 7.0 会有替代。

部署文档

部署基于 ABP 的应用程序与部署任何 .NET 或 ASP.NET Core 应用程序没有太大区别。 您可以将其部署到云提供商(例如 Azure、AWS、Google Can)或本地服务器、IIS 或任何其他 Web 服务器。 官方准备了一份“部署指南”来提示要点和注意事项。

Deploying to a Clustered Environment 文档中,记录了在将应用程序开发到集群环境时应考虑的要点,并解释了如何在基于 ABP 的应用程序中处理。

其他

  • 全局特性以前只能通过 C# 代码访问。 从这个版本开始,全局特性可以从应用程序配置中提供。 参见#12043
  • 从第三方登录可以获取用户的详细信息,如:姓名、姓氏和电话号码等。 请参阅#12085
  • Angular 日期管道,datePipe函数,直接给日期格式化。请参阅#11909

下一个版本

下一个大版本将是 6.0 ,计划在7月12日发布 6.0 RC(候选版),并在2022年8月16日发布最终版本。

dotNET兄弟会-公众号

专注.Net开源技术及跨平台开发!致力于构建完善的.Net开放技术文库!为.Net爱好者提供学习交流家园!

历史更新版本说明

ABP Framework 5.3.0 版本新增功能和变更说明的更多相关文章

  1. [翻译] ASP.NET Core 3.0 的新增功能

    ASP.NET Core 3.0 的新增功能 全文翻译自微软官方文档英文版 What's new in ASP.NET Core 3.0 本文重点介绍了 ASP.NET Core 3.0 中最重要的更 ...

  2. C#各版本新增功能

    本系列文章主要整理并介绍 C# 各版本的新增功能. C# 8.0 C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前 ...

  3. Entity Framework Core 2.1 Preview1 新增功能简介

    两个星期前,微软发布了EF Core 2.1 Preview 1,同时还发布了.NET Core 2.1 Preview 1和ASP.NET Core 2.1 Preview 1:EF Core 2. ...

  4. Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  5. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本新增序列管理

    欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinF ...

  6. Apache Flink 1.9.0版本新功能介绍

    摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...

  7. geotrellis使用(二十)geotrellis1.0版本新功能及变化介绍

    目录 前言 变化情况介绍 总结 一.前言        之前版本是0.9或者0.10.1.0.10.2,最近发现更新成为1.0.0-2077839.1.0应该也能称之为正式版了吧.发现其中有很多变化, ...

  8. 图文解说PhpStorm 7.0版本新增内置工具

    很多PHP开发者,都比较关心PhpStorm 7.0版本的内置工具.今天我们将测试内置的Vagrant工具和SSH远端控制台工具. Vagrant工具集成在PhpStorm 7.0版本中,提高了IDE ...

  9. 淘宝自动登录2.0,新增Cookies序列化

    前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的地跌意味着功能的升级,那今天的2.0 ...

随机推荐

  1. oracle之lsnrctl命令

    采样: [oracle@sh02 ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.4 (Santiago) ...

  2. linux原生命令行看上面的内容

    上一页:Shift+pageUp 下一页:Shift+pageDown

  3. Go xmas2020 学习笔记 10、Slices in Detail

    10-Slices in Detail. Slice. Empty vs nil slice

  4. clickhouse智能提示编辑器

    对于经常写sql的人来说智能提示是非常重要的,这个非常影响写sql的效率和心情. 这里说的智能提示不仅仅是关键字(select等)的智能提示,还得要做到表字段的智能提示. 例如: 下面是mysql的智 ...

  5. Blazor 组件库 BootstrapBlazor中 Ajax 组件的使用

    组件解决的问题 由于Blazor在与服务器连接时使用了Websocket,仅在第一次连接时会走原MVC的连接逻辑.所以,我们无法在这个过程中完成例如身份认证.cookie处理等操作. 此组件即为解决此 ...

  6. android软件简约记账app开发day08-时间对话框的书写+改bug,改bug

    android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...

  7. Java语言学习day02--6月29日

    Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...

  8. WebSocket 协议详解

    一.WebSocket 协议背景 早期,在网站上推送消息给用户,只能通过轮询的方式或 Comet 技术.轮询就是浏览器每隔几秒钟向服务端发送 HTTP 请求,然后服务端返回消息给客户端. 轮询技术一般 ...

  9. Java之IO流技术详解

    何为IO? 首先,我们看看百度给出的解释. I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分. i是写入,Input的首字母.o是输出,Output的首字母. IO 也称为 ...

  10. Java包装类,基本的装箱与拆箱

    我的博客 何为包装类 将原始类型和包装类分开以保持简单.当需要一个适合像面向对象编程的类型时就需要包装类.当希望数据类型变得简单时就使用原始类型. 原始类型不能为null,但包装类可以为null.包装 ...