[译]ABP框架v2.0 和 ABP商业版

ABP框架v2.0 和 ABP商业版

ABP框架2.0版已经在本周公布.这篇文章解释了为什么我们发布了一个抢先主版本,和2.0版本中的变化.

除了v2.0版本,我们很高兴地宣布ABP商业版,这是建立在开源ABP框架的之上的一套专业的模块,工具,主题和服务.

ABP框架V2.0

为什么2.0,而不是1.2?

本来在V1.1.2发布后计划发布1.2版.然而,有报告称1.x版在Linux上有一些性能稳定性问题,尤其是当应用程序部署在低配CPU和内存Linux容器上.

我们深入研究了这一问题,并已查明问题的根本原因与拦截async方法的实现有关.此外,也有一些 asyncsync 的用法影响了线程池的优化.

最后,在社区在大力协助下我们解决了所有的问题.但是,我们也有一些重要的设计决策导致了一些破坏性变更,因为语义版本,我们不得不改变框架的主版号.

大多数的应用程序不会受到破坏性变更的影响,或者只需要做一些微小的修改.

破坏性变更

删除了一些同步的API

一些拦截器需要使用async的API.当他们拦截sync方法时,他们需要调用asyncsync.这最终导致了asyncsync的问题.这就是为什么我们删除了一些同步的API.

当你需要async方法中调用sync方法时, asyncsync 这种模式是C#一个经典问题.虽然有一些解决方法,但是都有相应的缺点,并建议不要写这样的代码.你可以在网上找到关于这一话题的许多文档.

为了避免这个问题,我们已经移除:

如果你遇到了编译错误,只需使用这些API的async版本.

始终async!

从v2.0开始,ABP框架假设你以async方式编写你的应用程序代码.否则,一些框架的功能可能无法正常工作.

建议你的所有应用服务, 仓储方法, 控制器动作(ontroller actions), 页面处理器(page handlers)都是async.

即使你的应用服务方法并不需要是async,也将其设置为async,因为拦截器需要执行async操作(授权,工作单元等).你可以在不调用async的方法中返回Task.Completed.

示例:

public Task<int> GetValueAsync()
{
    //这个方法没有任何async调用
    return Task.CompletedTask(42);
}

上述例子通常并不需要是async因为它不执行async调用.然而,将它设置为async,这样可以帮助ABP框架运行拦截器时避免出现async套sync的调用.

此规则不强制你写的每一个方法都是async.这样并不好而且很乏味.只在拦截的服务上需要(特别是应用服务仓库方法)

其他破坏性变更

查看发行说明中的破坏性变更.他们中的大多数都不会影响你的应用程序代码.

新功能

本次发布还包含一些新的功能和一堆改进:

  • #2597 新的Volo.Abp.AspNetCore.Serilog包.
  • #2526 C#客户端代理的客户端验证.
  • #2374 async后台作业.
  • #265 管理应用程序关闭.
  • #2472 IdentityServer模块实现DeviceFlowCodesTokenCleanupService.

功能,改进和BUG修复的完整列表, 请查看发布说明.

文档

随着v2.0的发布,我们也完成了一些缺少的文档.在接下来的几周内,我们将主要关注文档和教程.

ABP商业版

ABP商业版是建立在开源ABP框架之上的一套专业的模块,工具,主题和服务.

  • 除了ABP框架免费和开源模块之外, 提供专业模块.
  • 包含一个漂亮的UI主题, 具有5种不同的样式.
  • 提供ABP套件; 一个让开发更具有生产力的工具. 通过配置实体属性, 它可以在几秒内创建全栈的CRUD页面. 更多的功能陆续开发中.
  • 为企业提供高级支持.

除了这些标准的功能,我们会将提供定制服务.更多细节请参见commercial.abp.io网站.

ABP框架 vs ABP商业版

ABP商业版不是付费版本的ABP框架.可以把它当作为专业公司提供的附加套餐.你可以用它来节省时间和更快地开发产品.

ABP框架将永远是开源免费的!

一个原则是,我们创建的主要基础设施作为开源产品, 然后销售额外的预制应用程序功能,主题和工具.类似于ASP.NET BoilerplateASP.NET Zero产品.

购买商业版许可极大地节省你的时间和精力,你可以专注于自己的业务,此外也可获得专门的和优先的支持.同时,你也在支持ABP核心团队,因为我们花了大部分时间来开发,维护和支持开源的ABP框架.

有了ABP商业版,ABP现在变为一个平台.我们称之为ABP.IO平台, 其中包括开源ABP框架和ABP商业版.

演示

如果你想知道ABP商业版应用程序的启动模板是什么样,你可以很容易地创建一个演示,并看到它的实际效果.该演示包括所有的预制模块和主题.

下面是一张IdentityServer管理模块UI的截图:

[译]ABP框架v2.0 和 ABP商业版

这是一张来自使用material设计风格主题的演示应用程序的截图:

[译]ABP框架v2.0 和 ABP商业版

价格

你可以创建无限个工程/产品, 销售给无限个客户, 部署在无限台服务器上, 不受任何限制. 定价主要是基于开发人员个数,支持等级源代码需求上.有三个标准包;

  • 团队许可: 包括所有的模块,主题和工具.允许最多3个开发者开发产品.可购买额外的开发者许可.
  • 商业许可: 允许下载所有的模块和主题的源代码.此外,默认包含了5个开发者许可.可购买额外的开发者许可.
  • 企业许可: 在商业许可上, 提供无限的专属支持.

请查看价格页面了解详细信息.除了标准包以外,我们也提供定制服务和定制许可.如有任何问题,请联系我们.

许可比较

许可价格是根据开发者数量,支持等级和源代码访问而变化的.

源代码

团队许可证不包括预制模块和主题的源代码.以NuGet和NPM包的方式使用所有这些模块.通过这种方式,你可以很容易地通过更新包的依赖得到新功能和bug修复仅.但是不能访问其源代码.所以不能嵌入模块的源代码到你的应用程序里,和随意修改源代码.

预制模块提供一定等级的定制扩展,并允许你覆盖服务,UI部分等.我们正在努力使他们更加可定制和可扩展.如果你无需在预制模块中做很大修改的话,团队许可是你理想的选择,因为它更便宜,并且可轻松获得新的功能和bug修复.

商业和企业许可允许你在需要时下载任何模块和主题的源代码.它们使用与团队许可相同的启动模板,所以所有的模块都默认使用NuGetNPM包.但是,在需要的情况下,你可以从一个模块中删除包的依赖,并嵌入它的源代码到你自己的解决方案中,然后完全定制它.在这种情况下,当一个新版本可用时, 升级模块将不会那么容易.当然, 你不必升级!但是,如果你愿意,你也可以使用一些合并工具或Git的分支系统来做到这一点.

许可周期

ABP商业版许可是永久的,这意味着你可以永远使用它继续开发应用程序.

但是,下面的服务周期为一年:

  • 高级支持一年后结束.你可以继续得到社区支持.
  • 一年后将不会得到模块和主题的更新.你可以继续使用最后获得的版本.甚至可以在主版本内得到BUG修复和改进.
  • 你可使用ABP套件一年.

如果想继续获得这些好处,可延长许可期限.续订价格比正常价格低20%.

NDC London 2020

去年一样, 我们是著名的软件开发会议NDC London的合作伙伴! 去年, 我们开展了ASP.NET BoilerplateASP.NET Zero主题:

[译]ABP框架v2.0 和 ABP商业版

今年,我们将着重于ABP.IO平台(开源ABP框架和ABP商业版).我们的展位会是这样的:

[译]ABP框架v2.0 和 ABP商业版

如果你参加会议,记得要参观我们的展位.我们将很高兴来谈一谈ABP平台的功能,目标和软件开发.

你想见ABP团队吗?

如果你在伦敦, 而且想和我们喝杯咖啡的话, 在2月1日的下午@hibrahimkalkan@ismcagdas会在那.

想见面就给info@abp.io写个邮件 :)

上一篇:ABP .NET CORE 连接mysql


下一篇:3. abp依赖注入的分析.md