[译]ABP vNext介绍

译者注

ASP.NET Boilerplate是.Net平台非常优秀的一个开源Web应用程序框架,在国内也有大量的粉丝.

近日, 本人在github上闲逛, 发现ASP.NET Boilerplate团队又悄悄的建立了一个新项目: ABP vNext

从名称可以看出来, 这是ASP.NET Boilerplate的下一代框架. 那么, 为什么要开发这个新框架? 之前的框架还会继续维护吗?

ASP.NET Boilerplate团队的领导者hikalkan前几天发布了一篇博客(使用的就是ABP vNext搭建的博客系统), 详细的说明了这些问题.

本人将这篇文章翻译过来, 共享给各位读者粉丝. 全文使用Google翻译+手工润色, 不足之处, 请多包涵.

原文地址:https://abp.io/blog/abp/Abp-vNext-Announcement

转载请注明原译者(WAKU)和出处(https://www.cnblogs.com/waku/p/9708769.html)


ABP vNext介绍

介绍

过去的一段时间,我们正在设计一个新的主要版本的ASP.NET Boilerplate框架。现在,是时候与社区分享了。我们非常兴奋,相信你也是。

命名

框架的名称保持不变,除了我们将其仅称为“ABP”而不是“ASP.NET Boilerplate”。因为,“Boilerplate(样板)”会导致误解,并没反映出它是一个框架(而不是样板代码)。我们继续使用“ABP”名称,因为它是当前ASP.NET Boilerplate框架的继承者,除了它是完全重写的。

如何开始

我们已经创建了一个启动模板。您可以从abp.io/Templates创建一个新项目并开始开发。欲了解更多信息,请访问abp.io。

为什么要完全重写?

为什么我们花了宝贵的时间从头开始重写它而不是增量更改和改进。为什么?

ASP.NET Core

当我们第一次介绍ABP框架时,那是2013年(5年前)!那时候没有.Net Core和ASP.NET Core,也没有Angular2 +。ABP发布后,它们都是从头开发的。

ASP.NET Core引入了许多内置解决方案(扩展库),用于依赖注入,日志记录,缓存,本地化,配置等。它们实际上独立于ASP.NET Core,可用于任何类型的应用程序。

我们之前使用第三方库和我们自己的解决方案来满足这些要求。在它们发布后我们立即集成到ASP.NET Core功能中。但这是集成,而不是在这些扩展库之上构建ABP框架。例如,当前的ASP.NET Boilerplate依赖于Castle Windsor进行依赖注入,即使它已集成到ASP.NET Core的DI系统中。

我们希望依赖这些新的扩展库而不是第三方和自定义解决方案,这会改变框架的基本结构。

自身模块化

虽然目前的ABP本身已经是模块化的,并且包含许多包,但我们仍然希望将功能分解为更细粒度的nuget包。

例如,核心Abp包包含许多功能,如DDD类,审计,授权,后台作业,事件总线,json序列化,本地化,多租户,线程,时间等......我们希望将所有这些功能拆分到各自的包中并使它们可选。

放弃对传统技术的支持

是的,新的ABP框架将不支持ASP.NET MVC 5.x,Entity Framework 6.x和其他传统技术。

这些传统技术会由Microsoft维护,但不会再添加任何新功能。因此,如果您仍在使用这些技术,则可以继续使用当前的ASP.NET Boilerplate框架。我们将继续维护它,修复错误并添加新功能。

删除对这些传统库的支持将提高我们的开发速度(因为我们目前正在复制我们的某些功能的工作)并专注于.Net Core和ASP.NET Core。

新的ABP框架将基于.net standard。因此,仍然可以在新的ABP框架中使用完整的.net framework或.net core。

目标

我们从社区学到了很多东西,并且有开发当前ASP.NET Boilerplate框架的经验。新的ABP框架有着重要而令人兴奋的目标。

应用程序模块化

第一个目标是提供良好的基础设施来开发应用程序模块。我们将模块视为一组应用程序功能,具有自己的数据库,自己的实体,服务,API,UI页面,组件等。

我们将创建一个包含免费和付费应用程序模块的模块市场。您还可以在市场上发布自己的模块。更多信息即将推出。

微服务

我们正在设计新的ABP框架可方便的开发微服务并使它们相互通信。

我们正在设计应用程序模块,以便它们可以作为微服务单独部署,或者可以嵌入到单个应用程序中。

我们正在为此创建规范/最佳实践文档

主题和UI组合

新的ABP框架将基于最新的Twitter Bootstrap 4.x提供主题基础设施。我们开发了一个仅使用普通Bootstrap 4.x样式的基本主题。它是免费和开源的。我们还在开发高级和付费主题。

UI组合是主要目标之一。为此,主题系统将提供菜单,工具栏和其他可扩展区域,以允许其他模块交互(contribute)。

ORM / 数据库无关性和MongoDB集成

虽然当前的ASP.NET Boilerplate框架已经实现了ORM /数据库无关的存储库(Repository)模式,但身份集成模块(以Abp.Zero*命名的包)与EF以外的ORM一直运行的不太好。

使用新的ABP框架,最终目标是完全抽象的底层数据存储系统和开发与EF Core无关的模块。

我们将MongoDB作为第一级别的数据库,并在没有任何关系数据库或ORM假设的情况下设计实体和存储库。

更多可扩展性

新的ABP框架为内置服务提供了更多的扩展点和覆盖的能力。

一些功能

在本节中,我将介绍新ABP框架的一些令人兴奋的新功能。

Bootstrap Tag Helpers

我们正在创建一个库将twitter bootstrap 4.x元素/组件包装到tag helper中。例:

<abp-card><img abp-card-image="Top" src="~/images/my-dog.png" /><abp-card-body><abp-card-title>Card title</abp-card-title><abp-card-text><p>This is a sample card component built by ABP bootstrapcard tag helper. ABP has tag helper wrappers for most ofthe bootstrap components.            </p></abp-card-text><a abp-button="Primary" href="#">Go somewhere &rarr;</a></abp-card-body></abp-card>

“abp-*”标签是ABP tag helper,用于简化为Bootstrap 4.x编写HTML。

动态表单

动态表单tag helper允许您为给定的模型类动态地创建表单。例:

<abp-dynamic-form abp-model="@Model.PersonInput" submit-button="true" />

输出:

640?wx_fmt=png

目前支持最常用的输入类型. 更多类型正在开发中。

虚拟文件系统

虚拟文件系统允许您将视图,页面,组件,javascript,css,json和其他类型的文件嵌入到模块程序集/包(dll)中,并在任何应用程序中使用。在应用程序中您的虚拟文件就像物理文件一样, 完全的集成在ASP.NET Core中。

更多信息请参阅关于虚拟文件系统和相关文档。

动态捆绑和压缩系统

动态捆绑和压缩系统运行在虚拟文件系统上,并且允许模块以模块化,动态和强大的方式创建,修改和交互捆绑包。一个例子:

<abp-style-bundle><abp-style type="@typeof(BootstrapStyleContributor)" /><abp-style src="/libs/font-awesome/css/font-awesome.css" /><abp-style src="/libs/toastr/toastr.css" /></abp-style-bundle>

这段代码通过包含bootstrap(及其依赖项,如果有)和另外两个css文件来动态创建一个新的样式包。这些文件在生产环境中捆绑和压缩,但将在开发环境中单独添加。

有关更多信息,请参阅文档

分布式事件总线(Distributed Event Bus)

在当前的ABP中,有一个IEventBus服务来触发和处理应用程序内的事件。除了这个本地事件总线,我们还创建了一个分布式事件总线抽象(和RabbitMQ集成)来实现分布式消息传递模式。

动态C# HTTP客户端代理

ABP已经为所有HTTP API创建动态JavaScript代理。该功能也存在于新的ABP框架中。此外,它现在可以为所有HTTP API创建动态C#代理。

未来的工作

上面提到的所有东西都已经开发出来了。但是,我们还有一些想法尚未着手。

单页应用程序(Single Page Applications)

我们在设计新框架时考虑到了SPA这一点。但是,我们还没有尝试过任何SPA框架,我们还没有为它准备一个启动模板。

ASP.NET Boilerplate(当前版本)和ASP.NET Zero会如何?

我们有专门的开发和支持团队积极致力于ASP.NET Boilerplate和ASP.NET Zero项目。这些项目有一个很大的社区,我们也从社区中获得了贡献。

我们将在很长一段时间内继续为这些项目进行改进,添加新功能和修复错误。因此,您可以安全地继续使用它们。

新的ABP可用在生产环境吗?

还没有。我们的第一个目标是使基本功能稳定,然后逐步完成其他功能。

我们会经常发布新版本,每个新版本都可能会有重大变化。我们将在发行说明中写下重大更改。

我们目前将其定义为实验性质。但我们希望这不会持续很长时间。我们无法确定一个准确的日期,请关注我们的发布。

包和版本控制

新的ABP框架将从v1.0开始,而不是遵循当前的ASP.NET Boilerplate版本, 以反映它是一个重写的事实。

我们会经常发布它。你可以期待许多重大变化,直到v1.0。从v1.0开始,我们将注意不要在1.x版本中引入重大更改。

当前ABP的包名称以Abp前缀开头(如Abp.EntityFrameworkCore)。新的包名称以Volo.Abp前缀开头(如Volo.Abp.EntityFrameworkCore)。

我应该用哪一个?

如果您正在创建一个新项目,我们建议您继续使用当前的ASP.NET Boilerplate框架,因为它非常成熟,功能丰富且可用于生产环境。

如果您愿意接受重大变化并希望体验新框架,那么您可以从新的ABP开始。我们不建议在临近截止日期和在短期内上线的项目上使用它。

贡献

就像当前的ABP框架一样,您可为新框架做出贡献。

  • 您可以发送代码或文档的拉取请求。

  • 您可以撰写关于它的博客文章或教程。

  • 您可以尝试并分享您的经验。

  • 您可以提出改进和功能请求。

  • 您可以报告错误和其他问题。

联系/链接

官方网站:abp.io
Github:github.com/abpframework
Twitter:@abpframework

原文地址: https://www.cnblogs.com/waku/p/9708769.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

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

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

相关文章

[HAOI2008]玩具取名

[HAOI2008]玩具取名 文章目录题目描述输出描述:题解代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 某人有一套玩具&#xff0c;并想法给玩具命名。首先他选…

【KMP】重复子串(ybtoj KMP-2)

正题 ybtoj KMP-2 题目大意 问你一个字符串最多由多少个相同的字符串组合而成 解题思路 如下图&#xff0c;先用KMP求出nx数组&#xff0c;那么有1∼nxn1\sim nx_n1∼nxn​和(n−nxn)∼n(n-nx_n)\sim n(n−nxn​)∼n相匹配 不难推出1∼(n−nxn)1\sim (n-nx_n)1∼(n−nxn​)…

P6624-[省选联考2020A卷]作业题【矩阵树定理,欧拉反演】

正题 题目链接:https://www.luogu.com.cn/problem/P6624 题目大意 nnn个点的一张图&#xff0c;每条边有权值&#xff0c;一棵生成树的权值是所有边权和乘上边权的gcdgcdgcd&#xff0c;即 val(T)(∑i1n−1wei)gcd⁡(we1,we2,…,wen−1)val(T)\left(\sum\limits_{i1}^{n-1} w_…

C# 8小特性

对于C# 8&#xff0c;有吸引了大多数注意力的重大特性&#xff0c;如默认接口方法和可空引用&#xff0c;也有许多小特性被考虑在内。本文将介绍几例可能加入C#未来版本的小特性。新的赋值运算符&#xff1a;&&和||从第一个版本开始&#xff0c;C#就支持把等号和另外一…

[HAOI2016]字符合并(ing)

[HAOI2016]字符合并 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 有一个长度为 n 的 01 串&#xff0c;你可以每次将相邻的 k 个字符合并&#xff0c;得到一个新的字符并…

AtCoder Beginner Contest 174 总结

这次做了ABDF。我也不知道我怎么做的&#xff08;乱做-.- A - Air Conditioner 签到题1 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #define debug(x) cout<<#x<<": "<<x<<" " #include<iostream> #…

【KMP】周期长度和(luogu 3435/ybtoj KMP-3)

正题 luogu 3435 ybtoj KMP-3 题目大意 定义S的proper前缀为S中非空且len<|S|的前缀&#xff0c;若Q是A的proper前缀&#xff0c;且A是QQ的前缀 现在问你字符串S所有前缀的最大周期之和 解题思路 如上图&#xff0c;对于一个字符串S&#xff0c;如果有周期Q&#xff0c;那…

P6097-[模板]子集卷积

正题 题目链接:https://www.luogu.com.cn/problem/P6097 题目大意 长度为2n2^n2n的序列a,ba,ba,b求一个ccc满足 ck∑i∣jk,i&j∅aibjc_k\sum_{i|jk,i\&j\varnothing}a_i\times b_jck​i∣jk,i&j∅∑​ai​bj​ 解题思路 从炫酷反演魔术过来的&#xff0c;顺便写…

dotnet core 开发无缝兼容Http和Websocket协议的接口服务

在应用接口开发中往往要针对不同协义开发相应的代理服务&#xff0c;但对于Websocket和http这两种协议来说就有些不同&#xff0c;从实现上来看Websocket可以说是Http的升级子协议&#xff0c; 两者在协议处理上基本一致&#xff0c;具体可以在解释Body上有所不同。FastHttpApi…

【KMP】子串拆分(ybtoj KMP-4)

正题 ybtoj KMP-4 题目大意 给出字符串S&#xff0c;问你有多少个子串满足ABA的形式&#xff0c;且∣A∣⩾k,∣B∣⩾1|A|\geqslant k,|B|\geqslant 1∣A∣⩾k,∣B∣⩾1 解题思路 可以先枚举左端点&#xff0c;然后跑KMP&#xff0c;使其满足左右两个A&#xff0c;然后判断A,…

[SDOI2008]SUE的小球

[SDOI2008]SUE的小球 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 Sue和Sandy最近迷上了一个电脑游戏&#xff0c;这个…

Codeforces Round #661 (Div. 3)

A - Remove Smallest 排个序&#xff0c;如果相邻的数大于一就不满足题意 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #define debug(x) cout<<#x<<": "<<x<<" " #include<iostream> #include<alg…

centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用。当然&#xff0c;在真实的产线环境中需要分析的数据和难度远远高于demo所示&#xff0c;所以demo的作用也仅仅只能起到介绍工具的作用。通常正常情况下&#xff0c;分析个几天才能得出一个结论的的结果都还是比较…

P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】

除了最后一题都比较简单就写一起了 P4450-双亲数 题目链接:https://www.luogu.com.cn/problem/P4450 题目大意 给出A,B,dA,B,dA,B,d求有多少对(a,b)(a,b)(a,b)满足gcd(a,b)dgcd(a,b)dgcd(a,b)d且a∈[1,A],b∈[1,B]a\in[1,A],b\in[1,B]a∈[1,A],b∈[1,B] 解题思路 很显然的…

【Trie】最大异或对(ybtoj Trie-2)

正题 ybtoj Trie-2 题目大意 给你n个数&#xff0c;选择2个&#xff0c;使其异或值最大 解题思路 对于每个数的二进制建立Trie&#xff0c;然后每个数在Trie中搜索&#xff0c;每次尽量走不同方向 代码 #include<cstdio> #include<cstring> #include<iostrea…

[SCOI2003]字符串折叠

[SCOI2003]字符串折叠 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 折叠的定义如下&#xff1a; 一个字符串可以看成它自身的折叠。记作S S X(S)是X(X>1)个S连接在一…

Codeforces Round #662 (Div. 2)

就写了两个题&#xff0c;以为要掉分&#xff0c;结果早上起来发现还上分了&#xff08;说明wtcl A - Rainbow Dash, Fluttershy and Chess Coloring 无论边长是奇数还是偶数&#xff0c;考虑每次操作最外层的一圈&#xff0c;一个人操作一圈的一般&#xff0c;然后另一个人就…

.NET微服务方案调查

.NET Core就是专门针对模块化的微服务架构而设计&#xff0c;调查下大家选择.NET微服务情况&#xff0c;如果你有微服务方面的需求可以找我哦&#xff0c;可加我微信geffzhang&#xff1a;相关文章&#xff1a;Service Fabric 与Ocelot 的集成Ocelot简易教程&#xff08;二&…

Loj#116-[模板]有源汇有上下界最大流

正题 题目链接:https://loj.ac/p/116 题目大意 nnn个点mmm条边的一张图&#xff0c;每条边有流量上下限制&#xff0c;求源点到汇点的最大流。 解题思路 先别急着求上面那个&#xff0c;考虑一下怎么求无源点汇点的上下界可行流。 可以考虑先把下限流满&#xff0c;这样就会…

【Trie】最长异或路径(ybtoj Trie-3/luogu 4551)

正题 ybtoj Trie-3 luogu 4551 题目大意 给你一棵树&#xff0c;让你找一条路径&#xff0c;使这条路径的亦或值最大 解题思路 对于每个数存下到根节点的亦或值&#xff0c;然后拿这些数去Trie中跑最大亦或 因为相同部分亦或后为0&#xff0c;所以得出结果就是最大路径亦或…