余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

ABP框架 v3.0 已发布

xiyangw 2023-05-13 15:59 16 浏览 0 评论

我们很高兴地宣布,ABP框架和ABP商业版3.0版已经发布.与常规的2周发布一个版本不同的是, 这个版本用了4周的时间.关闭了119个issue,合并了89个pull request 和主框架仓库中的798次提交.

ABP框架 v3.0 已发布

由于这是一个主要版本,它也包括了一些重大更改.不要害怕,这些变化都容易对应,并且下面会详细解释.

详细更改日志请查看GitHub的发布说明.

ABP框架3.0有哪些新增内容?

这篇文章将只包括重要功能/更改.你可在GitHub的发布说明上看到所有的更改.

Angular 10!

Angular 10刚刚发布,我们就立即迁移了启动模板到Angular 10!所以,当你以Angular UI创建一个新的解决方案时, 你将获得新Angular的优点.

我们为想要迁移到Angular 10的老版本项目准备了一份迁移指南.

Oracle集成包

之前我们为使用Devart库, 基于EF Core for Oracle的应用程序创建了一个集成包, 因为官方的Oracle EF Core包还未支持EF Core 3.1. 现在它以beta发布.虽然是beta版,但我们已经创建了它的集成包,这样你就可以在你的应用程序中使用它.

更多细节请查看文档.

Azure BLOB存储提供器

在上一个版本中我们创建了一个Blob存储系统, 包含一个文件系统和数据库存储提供器. 本次发布我们引入了Azure BLOB存储提供器.请查看文档.

分布式缓存批量操作和新的Redis缓存包

ASP.NET Core的标准IDistributeCache接口不包含批量操作,如使用单独方法/服务器调用设置多个项目. ABP框架引入了新的方法可用于在ABP的IDistributedCache<T>接口中进行批量操作:



GetManyAsync / GetManySetManyAsync / SetMany

然后,我们需要为Redis缓存实现这些新方法并且必须创建一个Redis集成包用于扩展微软的实现.


这些方法也被ABP框架所使用, 用来缓存某个用户/角色/租户的设置,功能和权限,并且带来了显著的性能提升.

更多细节请查看缓存文档.

为虚拟文件系统支持嵌入文件清单

虚拟文件系统现在支持在项目中使用GenerateEmbeddedFilesManifest来添加编译程序集中嵌入资源的真实的文件/目录结构.所以,你现在可以访问文件,而没有任何文件名的限制(以前,目录名称中的一些特殊字符,比如.在某些情况会有问题)

查看文档学习如何利用新系统的优点.

新示例

基于社区的需求,我们准备了两个新的示例应用程序:

  • StoredProcedureDemo演示了如何在自定义仓储库中调用存储过程,视图和函数.
  • OrganizationUnitSample演示了如何为你的实体使用Identity模块的组织单元系统.

DynamicStringLength 和 DynamicMaxLength 属性

当类被用作模型或DTO时, 标准的StringLength和MaxLength数据注解属性用来验证类中的属性是很有用的. 但是, 就像任何其它的属性一样, 长度的值应该是一个编译时已知的字面值(常量).

示例: 使用StringLength








public class CreateBookDto{    public const int MaxNameLength = 128; //常量!    [StringLength(MaxNameLength)]    public string Name { get; set; }}

ABP框架现在有DynamicStringLength 和 DynamicMaxLength属性允许在运行时确定长度.

示例: 使用DynamicStringLength








public class CreateBookDto{    public static int MaxNameLength { get; set; } = 128;    [DynamicStringLength(typeof(CreateBookDto), nameof(MaxNameLength))]    public string Name { get; set; }}

DynamicStringLength通过类的类型和这个类的一个静态属性的名字来读取最大长度(也有一个最小长度的选项, 就像StringLength).

这样就允许你从配置中读取最大值并且在应用程序启动时设置(一般在模块的PreConfigureServices方法)


CreateBookDto.MaxNameLength = 200;

预建应用程序模块使用了这个功能,所以你现在可以覆盖这些模块中定义的属性的最大长度了.

自动分布式事件

ABP可以为所有的实体在创建,更新和删除时自动发布分布式事件. 这很有用因为在分布式系统中你通常会对这些基础事件感兴趣.

这个功能在v3.0中已成熟并文档化了. 你可以轻松地配置一部分或全部要发布事件的实体.

IAsyncQueryableExecuter

使用LINQ扩展方法,当你在查询时需要调用ToListAsync(),FirstOrDefaultAsync()... 不幸的是,这些方法并不是标准的LINQ扩展方法.它们定义在Microsoft.EntityFrameworkCore包中(或在MongoDB.Driver,如果你使用MongoDB的话).

所以,如果你想使用异步扩展方法, 你需要依赖这个包.这样做破坏了分层,并且使你的应用程序或领域层依赖于EF Core / MongoDB的包.

IAsyncQueryableExecuter是ABP框架定义的服务, 用来不依赖特定提供器地执行异步查询(EF Core / MongoDB包).

查看文档来获取细节和了解我们的建议.

API 文档

现在我们为每次发布ABP框架和模块都公开API文档.所以,你可以更容易地查看ABP框架的类.点击文档导航菜单中的API文档的链接.

包列表

我们创建了一个页面列出所有ABP相关的官方NuGet和NPM包.

其他

  • 为Identity Server实现了前端通道的服务端客户登出
  • abp.currentUser(Angular UI中的CurrentUser服务)现在有一个包含当前用户的角色名的roles数组.
  • 升级所有的NuGet和NPM软件包的依赖.
  • 引入了ReadOnlyAppService基类(只包含get操作), 做为CrudAppService基类(其中有get,create,update和delete操作)的补充.

其他更新请查看GitHub发行说明.

ABP商业版3.0有哪些新增内容?

除了所有ABP框架的功能以外,ABP商业版同样在本次发布中有一些额外的功能.本节介绍3.0版本中ABP商业版的亮点.

新的文件管理模块

我们创建了一个用于在应用程序中存储和管理文件的新模块.这个新模块基于BLOB存储系统,因此它可以使用不同的存储提供器来存储文件内容.

示例截图


您可以上传,下载和以分层文件夹结构组织文件.它也兼容多租户,你可以为租户限制总文件大小.在未来的版本中,我们将致力于“共享”系统, 用于以一个更可控的方式在用户之间或通过公开链接与你的客户共享文件.

文件管理模块是目前仅适用于MVC / Razor Pages UI.我们正工作于Angular UI,它会在未来的版本中发布.

重大更改

由于这是一个主要版本,我们重新设计了一些API,并引入了一些"容易解决"的重大更改.

ABP框架

  • 更改了一些预建应用程序模块的常量为静态属性, 这样你就可在你的代码中对它们修改. 如果你在属性中使用了这些常量,那么请使用上面介绍的DynamicStringLength.
  • 更改ConcurrencyStamp最大长度为40. 你需要在更新ABP框架后添加一个数据库迁移并且更新数据库.
  • NPM软件包的依赖关系使用~代替^,为了更加稳定.

ABP商业版

  • 更改了应用程序标识的文件名.此前,它为每个主题使用了单独的标识文件,如theme1.png,theme1-reverse.png,theme2.png,theme2-reverse.png(...6).现在,我们只有两个标识文件:logo-light.png和logo-dark.png.所以,重命名MVC UI的wwwroot/images/logo/和Angular UI的/src/assets/images/logo/下的标识.
  • 我们也增加了ABP商业版的API文档.

此外,Angular UI请查看迁移指南.

关于未来的版本

我们将继续在每两个星期发布一个新的小功能版本.所以,下一个预计发布日期是2020年7月16日的3.1版本.

在接下来的几个版本中,我们将专注于Blazor UI,如路线图中承诺的.我们将继续改进文档,创建示例,添加其他新功能和改善.关注ABP框架Twitter账号获取最新消息...


文章来源:Abp Framework公众号

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: