[译]ABP vNext介绍

译者注

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

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

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

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

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

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

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


ABP vNext介绍

介绍

过去的一段时间,咱们正在设计一个新的主要版本的ASP.NET Boilerplate框架。如今,是时候与社区分享了。咱们很是兴奋,相信你也是。数据库

命名

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

如何开始

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

为何要彻底重写?

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

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 bootstrap
                card tag helper. ABP has tag helper wrappers for most of
                the 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" />

输出:

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

虚拟文件系统

虚拟文件系统容许您将视图,页面,组件,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

相关文章
相关标签/搜索