标签:mvc cts 关注 github 相关 构建 services 账号 方案
我们很高兴地宣布,ABP框架和ABP商业版3.0版已经发布.与常规的2周发布一个版本不同的是, 这个版本用了4周的时间.关闭了119个issue,合并了89个pull request 和主框架仓库中的798次提交.
由于这是一个主要版本,它也包括了一些重大更改.不要害怕,这些变化都容易对应,并且下面会详细解释.
详细更改日志请查看GitHub的发布说明.
这篇文章将只包括重要功能/更改.你可在GitHub的发布说明上看到所有的更改.
Angular 10刚刚发布,我们就立即迁移了启动模板到Angular 10!所以,当你以Angular UI创建一个新的解决方案时, 你将获得新Angular的优点.
我们为想要迁移到Angular 10的老版本项目准备了一份迁移指南.
之前我们为使用Devart库, 基于EF Core for Oracle的应用程序创建了一个集成包, 因为官方的Oracle EF Core包还未支持EF Core 3.1. 现在它以beta发布.虽然是beta版,但我们已经创建了它的集成包,这样你就可以在你的应用程序中使用它.
更多细节请查看文档.
在上一个版本中我们创建了一个Blob存储系统, 包含一个文件系统和数据库存储提供器. 本次发布我们引入了Azure BLOB存储提供器.请查看文档.
ASP.NET Core的标准IDistributeCache接口不包含批量操作,如使用单独方法/服务器调用设置多个项目. ABP框架引入了新的方法可用于在ABP的IDistributedCache<T>
接口中进行批量操作:
然后,我们需要为Redis缓存实现这些新方法并且必须创建一个Redis集成包用于扩展微软的实现.
这些方法也被ABP框架所使用, 用来缓存某个用户/角色/租户的设置,功能和权限,并且带来了显著的性能提升.
更多细节请查看缓存文档.
虚拟文件系统现在支持在项目中使用GenerateEmbeddedFilesManifest
来添加编译程序集中嵌入资源的真实的文件/目录结构.所以,你现在可以访问文件,而没有任何文件名的限制(以前,目录名称中的一些特殊字符,比如.
在某些情况会有问题)
查看文档学习如何利用新系统的优点.
基于社区的需求,我们准备了两个新的示例应用程序:
当类被用作模型或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中已成熟并文档化了. 你可以轻松地配置一部分或全部要发布事件的实体.
使用LINQ扩展方法,当你在查询时需要调用ToListAsync()
,FirstOrDefaultAsync()
... 不幸的是,这些方法并不是标准的LINQ扩展方法.它们定义在Microsoft.EntityFrameworkCore包中(或在MongoDB.Driver,如果你使用MongoDB的话).
所以,如果你想使用异步扩展方法, 你需要依赖这个包.这样做破坏了分层,并且使你的应用程序或领域层依赖于EF Core / MongoDB的包.
IAsyncQueryableExecuter
是ABP框架定义的服务, 用来不依赖特定提供器地执行异步查询(EF Core / MongoDB包).
查看文档来获取细节和了解我们的建议.
现在我们为每次发布ABP框架和模块都公开API文档.所以,你可以更容易地查看ABP框架的类.点击文档导航菜单中的API文档的链接.
我们创建了一个页面列出所有ABP相关的官方NuGet和NPM包.
abp.currentUser
(Angular UI中的CurrentUser
服务)现在有一个包含当前用户的角色名的roles
数组.ReadOnlyAppService
基类(只包含get操作), 做为CrudAppService
基类(其中有get,create,update和delete操作)的补充.其他更新请查看GitHub发行说明.
除了所有ABP框架的功能以外,ABP商业版同样在本次发布中有一些额外的功能.本节介绍3.0版本中ABP商业版的亮点.
我们创建了一个用于在应用程序中存储和管理文件的新模块.这个新模块基于BLOB存储系统,因此它可以使用不同的存储提供器来存储文件内容.
示例截图
您可以上传,下载和以分层文件夹结构组织文件.它也兼容多租户,你可以为租户限制总文件大小.在未来的版本中,我们将致力于“共享”系统, 用于以一个更可控的方式在用户之间或通过公开链接与你的客户共享文件.
文件管理模块是目前仅适用于MVC / Razor Pages UI.我们正工作于Angular UI,它会在未来的版本中发布.
由于这是一个主要版本,我们重新设计了一些API,并引入了一些"容易解决"的重大更改.
DynamicStringLength
.ConcurrencyStamp
最大长度为40. 你需要在更新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/
下的标识.此外,Angular UI请查看迁移指南.
我们将继续在每两个星期发布一个新的小功能版本.所以,下一个预计发布日期是2020年7月16日的3.1版本.
在接下来的几个版本中,我们将专注于Blazor UI,如路线图中承诺的.我们将继续改进文档,创建示例,添加其他新功能和改善.关注ABP框架Twitter账号获取最新消息...
除了开发我们的产品,我们的团队一直在不断书写各种主题的文章/教程.你可能感兴趣的最新文章:
标签:mvc cts 关注 github 相关 构建 services 账号 方案
原文地址:https://www.cnblogs.com/waku/p/13226149.html