ABP框架 v2.9发布!

ABP框架和ABP商业版2.9已经发布,这是3.0之前的最后一个版本! 这篇文章将涵盖本次发布中的新增内容.

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

你可以中GitHub的发行说明中看到所有的变更.这篇文章将只包括重要特征/变更.

预编译Razor Pages

在之前的版本, 预构建的页面(应用模块)和视图组件是在运行时编译. 现在,它们使用了预编译. 我们测试了的应用程序启动时间(尤其是MVC UI)已经减少了50%以上.换句话说,它比之前的版本快两倍.速度变化也影响你第一次访问某一个页面时.

这是一个v2.8和v2.9启动应用程序模板的对比结果:

### v2.800:00:04.891 [INF] Starting web host.
00:00:07.662 [INF] Now listening on: https://localhost:44391
00:00:17.315 [INF] Request finished in 7756.6218ms 200 text/html;Total: 12.42s### v2.900:00:13.720 [INF] Starting web host.
00:00:16.639 [INF] Now listening on: https://localhost:44369
00:00:18.957 [INF] Request finished in 1780.5461ms 200 text/html;Total: 5.24s

你不用做任何改动就能获得新方法带来的益处. 重写UI页/组件和之前一样也能正常工作. 我们将在v3.0中继续致力于性能上的提升.

组织机构系统

Identity模块现在有了呼声最高的功能: 组织机构!

组织机构系统用来在应用程序中创建分层组织树.这样你可以使用该组织树来授权应用程序中的数据和功能.

文档将很快到来......

新的Blob存储包

我们创建了一个新的Blob存储包用来存储任意二进制对象.它一般用于在应用程序中存储文件.这个包提供了一个抽象,因此任何应用程序或模块都能以存储提供器无关的方式来保存和获取文件.

目前实现了两个存储提供器:

  • Volo.Abp.BlobStoring.FileSystem包, 在本地文件系统中存储对象/文件.

  • Volo.Abp.BlobStoring.Database模块, 在数据库中存储对象/文件.目前支持Entity Framework Core(因此,你可以使用任何关系数据库和MongoDB).

Azure BLOB提供器将会在3.0中可用. 你可请求其他的云提供器或在GitHub库上提交你自己的贡献.

Blob存储系统的一个好处是,它允许你创建多个容器(每个容器是一个Blob存储),并为每个容器使用不同的存储提供器.

示例:使用默认的容器保存和取得一个字节数组

public class MyService : ITransientDependency
{private readonly IBlobContainer _container;public MyService(IBlobContainer container){_container = container;}public async Task FooAsync(){//保存一个BLOBbyte[] bytes = GetBytesFromSomeWhere();await _container.SaveAsync("my-unique-blob-name", bytes);//获取一个BLOBbytes = await _container.GetAllBytesAsync("my-unique-blob-name");}
}

它可以使用byte[]Stream对象.

示例:使用类型化(命名)容器来保存和获取stream

public class MyService : ITransientDependency
{private readonly IBlobContainer<TestContainer> _container;public MyService(IBlobContainer<TestContainer> container){_container = container;}public async Task FooAsync(){//保存一个BLOBStream stream = GetStreamFromSomeWhere();await _container.SaveAsync("my-unique-blob-name", stream);//获取一个BLOBstream = await _container.GetAsync("my-unique-blob-name");}
}

TestContainer只是一个用来标识容器的空类:

[BlobContainerName("test")] //指定容器的名字
public class TestContainer
{}

类型化(命名)容器可被配置为使用不同的存储提供器而不是默认的.在开发可复用的模块时, 始终使用类型化的容器是一个很好的做法,这样最终应用程序可以为这个容器配置提供器,而不影响其他容器.

示例:为TestContainer配置文件系统提供器

Configure<AbpBlobStoringOptions>(options =>
{options.Containers.Configure<TestContainer>(configuration =>{configuration.UseFileSystem(fileSystem =>{fileSystem.BasePath = "C:\\MyStorageFolder";});});
});

查看blob存储文档以获取更多的信息.

Entity Framework Core的Oracle集成包

我们创建了一个Oralce集成包,这样你就可以为EF Core轻松地切换到Oracle.它已经为框架和预构建的模块进行了测试.

查看文档开始使用Oracle集成包.

自动判断数据库提供器

当你用EF Core开发一个可复用的应用程序模块时,你通常要将你的模块开发为DBMS无关的.但是,不同的DBMS有一些微小的(有时是很大的)区别.现在如何你执行基于DBMS的自定义映射,可以使用ModelBuilder.IsUsingXXX()扩展方法:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);modelBuilder.Entity<Phone>(b =>{//...if (modelBuilder.IsUsingPostgreSql()) //检查是否在使用PostgreSQL!{b.Property(x => x.Number).HasMaxLength(20);}else{b.Property(x => x.Number).HasMaxLength(32);}});
}

除了上面这种的傻傻的例子,你可以任意配置你的映射!

ABP CLI 翻译命令

abp translate是一个新的命令,当你的源代码库中包含多个JSON本地化文件时, 它可用来简化翻译本地化文件,

该命令的主要目的是翻译ABP框架的本地化文件(因为abp库在不同的文件中含有成千上万个本地化文件需要翻译).

非常感谢如果你使用这个命令将框架资源翻译为你的母语.

查看文档来学习如何使用它.也可查看贡献指南.

新的虚拟文件系统浏览器模块

感谢@liangshiw创建并贡献了一个新的模块用来浏览虚拟文件系统中的文件.它适用于MVC UI并显示所有应用程序中的虚拟文件.示例截图:

示例应用程序:SignalR与分层架构

在分布式/分层架构中实施SignalR是具有挑战性的.我们创建了一个示例应用程序演示如何轻松地使用SignalR集成和分布式事件总线系统

查看示例解决方案的源代码.

一篇正在路上的文章将深入地解释该解决方案.关注@abpframework的Twitter帐号.

一张文章中的图片,显示了该解决方案的通信图

关于gRPC

我们创建了一个示例应用程序来说明如何在基于ABP的应用程序中创建和使用gRPC端点.

我们本来计划为所有预构建的应用程序模块创建gRPC端点,但我们发现ASP.NET Core gRPC集成还不够成熟,不支持一些常见的部署场景.所以推迟到了下一个版本.但是,在你的应用程序中使用gRPC是非常标准的. ABP框架与gRPC没有问题.

其它

  • 时区系统为应用程序支持不同的时区.

  • 在IIS上支持虚拟路径部署.

  • 为Angular UI支持RTL.

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

ABP商业版2.9有哪些新增内容

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

组织机构管理UI

我们为组织机构创建了UI,管理ABP商业版Identity模块的成员和角色:

OU管理适用于MVC(Razor Pages)和Angular用户界面.

聊天模块Angular UI

我们在前一个版本介绍了新的聊天模块, 当时它只有ASP.NET Core MVC / Razor Pages UI. 现在它也包含了一个Angular UI选项.

聊天模块的截图 - 两个用户互相发消息

Easy CRM Angular UI

Easy CRM是建立在ABP商业版上的一个示例应用程序, 用来为ABP商业版客户提供一个相对复杂的应用程序.在2.7版本中,我们已经发布了MVC / Razor Pages UI. 这次2.9版中, 我们为Easy CRM应用程序发布了Angular UI.

Easy CRM应用程序中"订单详细"的截图.

查看Easy CRM文档学习如何下载并运行它.

ABP Suite模块代码生成

ABP Suite是一个工具,主要功能是用来为一个实体生成代码, 从数据库到UI层具有完整的CRUD功能.

ABP Suite的截图: 定义新实体的属性并且为你生成应用程序代码!

在本次发布之前它只工作于应用程序模板.现在,它支持为模块项目生成代码.利用代码生成的威力来创建可复用应用程序模块是很棒的一个做法.

除了这个主要功能,我们在这个版本中向ABP Suite添加了许多细微的改进.

注意:模块模板代码生成目前处于测试阶段.如果你发现任何bug,请告知我们.

Lepton主题

Lepton主题是我们为ABP商业版开发的一个商业主题.

  • 与Bootstrap 100%兼容 - 让你不写主题特定的HTML!

  • 提供不同类型的风格 - 看一下下图中的Material风格.

  • 提供不同类型的布局(侧/顶部菜单,流式/盒式布局...).

  • 轻量化,响应式和现代化.

  • 还有...它是可升级的,没有成本!你只需更新NuGet / NPM包来获得新的功能.

我们创建了它的专属网站:http://leptontheme.com/

在这里你可以查看所有的组件, 无需单独的应用程序.

这个网站目前正处于一个非常早期的阶段.我们将创建文档和和改进网站, 来为你的开发提供参考和探索主题的功能.

即将推出:文件管理模块

基于新的blob存储系统(上面介绍的),我们已经开始构建一个文件管理模块用来管理(浏览/上传/下载)你应用程序中分层文件系统并在用户与客户之间分享文件.

我们计划在ABP商业版v3.0中发行最初版本,并继续进行后续版本的改进.

关于下一个版本:3.0

我们在v2.8和v2.9中增加了许多新的功能.在下一个版本中,我们将完全专注于文档,性能优化和其它改进,如bug修复.

长期以来,我们每2周发布一个新功能版本.我们在v3.0以后继续这种方式.但是,v3.0是一个例外,开发周期大概为4周.v3.0的计划发布日期是2020年7月1日.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最终选型 Blazor.Server:又快又稳!

书接上文&#xff0c;昨天我们快速的走了一遍wasm的开发流程&#xff08;我的『MVP.Blazor』快速创建与部署&#xff09;&#xff0c;总体来说还是很不错的&#xff0c;无论是从技术上&#xff0c;还是从开发上&#xff0c;重点是用C#来开启前端时代&#xff0c;可以开发SPA单页…

博客系统知多少:揭秘那些不为人知的学问(三)

点击上方关注“汪宇杰博客”上篇《博客系统知多少&#xff1a;揭秘那些不为人知的学问&#xff08;二&#xff09;》介绍了博客的基本功能设计要点&#xff0c;本篇介绍博客的协议或标准。1.“博客”的前世今生2.我的博客故事3.谁是博客的受众&#xff1f;4. 博客基本功能设计要…

Sql Server之旅——第十三站 深入的探讨锁机制

上一篇我只是做了一个堆表让大家初步的认识到锁的痉挛状态&#xff0c;但是在现实世界上并没有这么简单的事情&#xff0c;起码我的表不会没有索引对吧&#xff0c;还有就是我的表一定会有很多的连接过来&#xff0c;10:1的读写&#xff0c;很多码农可能都会遇到类似神乎其神的…

后端程序员转行前端,强烈推荐这6个前端UI框架,第二款小程序UI框架颜值最高!...

昨天有个同事问我有没有可以直接上手的前端UI框架。那今天就给大家推荐6个简单、视觉体验好的前端框架没吃过猪肉&#xff0c;肯定见过猪跑&#xff01;Jquery Mobiledemo地址&#xff1a;https://demos.jquerymobile.com/1.1.0/教程地址:https://www.codesocang.com/jquerymob…

Kubernetes引发“军备赛”,K8s真是企业生存的关键吗

导语与许多其他国家一样&#xff0c;英国对云基础架构的需求空前增长。随着学校&#xff0c;办公室&#xff0c;商店和饭店的关闭以应对疫情&#xff0c;云驱动的应用程序应运而生&#xff0c;解决挑战并提供安慰。随着各个年龄段人群的屏幕时间激增&#xff0c;数据中心正努力…

【新插件发布】AzureAD运维Excel版插件,增删改查快10倍c以上!

在笔者的BI项目开发中&#xff0c;用到了Azure的AzureSQL和AzureAS分析服务&#xff0c;此两大服务&#xff0c;可和AzureAD帐号体系打通。而AzureAD帐号&#xff0c;在其免费功能基础功能上&#xff0c;是免费使用的&#xff0c;随着项目开发上线进入运维阶段&#xff0c;Azur…

数论相关

目录符号整除/同余理论常见符号数论函数常见符号其他常见符号位运算与、或、异或取反左移和右移复合赋值位运算符关于优先级位运算的应用有关 2 的幂的应用取绝对值取两个数的最大/最小值操作一个数的二进制位模拟集合操作快速幂模意义下大整数乘法快速乘高精度快速幂欧拉降幂求…

博客系统知多少:揭秘那些不为人知的学问(二)

点击上方关注“汪宇杰博客”上篇《博客系统知多少&#xff1a;揭秘那些不为人知的学问&#xff08;一&#xff09;》介绍了博客的历史、我的博客故事及博客的受众来源。本篇精彩继续&#xff0c;介绍博客基本功能设计要点。1.“博客”的前世今生2.我的博客故事3.谁是博客的受众…

二分+01分数规划+最大化平均值 Dropping tests POJ - 2976

题意&#xff1a; 给你若n个分数&#xff0c;分子a[i]a[i]a[i],分母b[i]b[i]b[i],使满足公式100⋅∑i1nai∑i1nbi100\cdot\tfrac{\sum_{i1}^{n} a_{i}}{\sum_{i1}^{n} b_{i}}100⋅∑i1n​bi​∑i1n​ai​​&#xff0c;求任意去掉k个分数后&#xff0c;公式结果最大值。 题目…

基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(四)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

莫比乌斯反演/容斥 +2020ICPC 江西省大学生程序设计竞赛 A Simple Math Problem

题目描述 输入描述: 输出描述: 示例1 输入 3 输出 5 分析&#xff1a; 1.这个题其实考的是一个莫比乌斯反演题&#xff0c;但是由于我知识储备不够&#xff0c;没有看出来&#xff0c;题目给的范围可以瞎搞一下&#xff0c;所以下面容斥可以过。 2.转换一下就是一道经典的…

猎鹰与龙飞船基于Linux,采用C++、Chromium与JS开发

最近两天科技界最重大的事件莫过于马斯克的 SpaceX 成功实现了猎鹰 9 号&#xff08;Falcon 9&#xff09;带着龙飞船&#xff08;Crew Dragon&#xff09;成功发射&#xff0c;并使飞船与国际空间站对接&#xff0c;将 NASA 两名宇航员送上了轨道前哨。背后关于 Falcon 9 与 C…

博客系统知多少:揭秘那些不为人知的学问(四)

点击上方关注“汪宇杰博客” ^_^上篇《博客系统知多少&#xff1a;揭秘那些不为人知的学问&#xff08;三&#xff09;》介绍了博客协议或标准。本篇终章介绍设计博客系统有哪些知识点。1.“博客”的前世今生2.我的博客故事3.谁是博客的受众&#xff1f;4. 博客基本功能设计要点…

Azure 国际版与中国版服务列表对(2020年6月版)

点击上方关注“汪宇杰博客” ^_^对于选择Azure平台的用户来说&#xff0c;会面临选择国内还是国际版的问题。由于一些原因&#xff0c;由世纪互联运营的中国大陆版Azure无法落地所有的国际版服务。相比几年前&#xff0c;情况已经有了一定的改善。本文列出了国际版和国内版Azur…

解读三组容易混淆的Dockerfile指令

长话短说&#xff0c;今天分享三组容易混淆的Dockerfile指令&#xff0c; 帮助大家编写更优雅的Dockfile文件、构建更纯净的Docker镜像。COPY vs ADDCOPY、ADD主体功能类似&#xff1a;从指定位置src拷贝文件到Docker镜像dest。COPY <src>... <dest> ADD <src&…

ASP.NET Core使用Nacos SDK访问阿里云ACM

背景 前段时间&#xff0c;cranelee 在Github上给老黄提了个issues&#xff0c; 问到了如何用Nacos的SDK访问阿里云ACM。https://github.com/catcherwong/nacos-sdk-csharp/issues/13刚看到这个issues的时候&#xff0c;老黄也是觉得一脸懵逼&#xff0c;好像这两者没有什么必然…

为.netcore助力--WebApiClient正式发布core版本

1、前言NCC WebApiClient 已成熟稳定&#xff0c;发布了WebApiClient.JIT 和 WebApiClient.AOT 两个 NuGet 包&#xff0c;累计近 10w 次下载。我对它的高可扩展性设计相当满意和自豪&#xff0c;但 WebApiClient 并不因此而停下脚步&#xff0c;在一年前&#xff0c;我产生了编…

一个static和面试官扯了一个小时,舌战加强版

一&#xff1a;背景1. 讲故事最近也是奇怪&#xff0c;在社区里看到好几篇文章聊static 的玩法以及怎么拿这个和面试官扯半个小时&#xff0c;有点意思&#xff0c;点进去看都是java版的&#xff0c;这就没意思了&#xff0c;怎么也得有一篇和面试官扯C# 中的 static用法撒&…

数据结构整理中。。。

目录栈队列链表单向链表双向链表向链表中插入&#xff08;写入&#xff09;数据单向链表单向循环链表双向循环链表从链表中删除数据单向&#xff08;循环&#xff09;链表双向循环链表哈希表哈希函数冲突拉链法闭散列法并查集启发式合并&#xff08;按秩合并&#xff09;带权并…

.NET开发者省份分布排名

什么叫.NET开发者省份分布排名呢&#xff1f; 顾名思义&#xff0c;这几个词大家都认识&#xff0c;.NET开发者都集中在城市&#xff0c;涵盖一线城市到五线城市。排名的方法非常简单粗暴&#xff0c;就是根据本公众号&#xff08;dotnet跨平台&#xff09;的省份订阅读者数量排…