abp

<深入理解Abp> 程序启动 - 一切的开始

匿名 (未验证) 提交于 2019-12-02 22:06:11
我们知道 NET Core 应用程序的核心配置在项目中的 Startup.cs 文件. public class Startup { public IServiceProvider ConfigureServices(IServiceCollection services) { //... return services.AddAbp<WebModule>(//...); } public void Configure(IApplicationBuilder app) { app.UseAbp(//...); //... } } public void ConfigureServices(IServiceCollection services) 方法主要用于将服务添加到 DI 容器中并做一些配置. public void Configure(IApplicationBuilder app) 配置请求管道. Abp 框架使用自己的DI容器(主要为了兼容之前的NET Framework版本和使用一些高级特性,如拦截器),所以我们在 ConfigureServices 方法的底部会看到 return services.AddAbp(//...) 这时候 ConfigureServices 的方法返回值也变成了 IServiceProvider (关于这点请参考: 默认服务容器替换 )

使用 DryIoc 替换 Abp 的 DI 框架

匿名 (未验证) 提交于 2019-12-02 22:06:11
你说我 Castle Windsor 库用得好好的,为啥要大费周章的替换成 DryIoc 库呢?那就是性能, DryIoc 是一款优秀而且轻量级的 DI 框架,整个项目代码就两个文件,加起来代码 1 万行左右(PS: 大部分都是注释)。 在各个 Ioc 容器的 性能评测 当中, DryIoc 以其优异的性能成为我选择使用他的原因。Abp 使用的 Castle Windsor 在解析复杂对象的时候,速度非常慢,而替换为 DryIoc 之后速度可以提升 150% 以上。 【注意】 本文仅对 .NET Core 相关的库进行更改并测试,.NET Framework 相关的库并没有进行修改测试。 你需要准备如下原料: Abp 源码 一份。 测试用的项目一份。 Visual Studio 2017 或者 Rider 一份。 .NET 程序猿一枚。 首先,Abp 框架的大部分动作基本上都是通过 IIocManager 这个接口对象进行实现的,它抽象了一层作为一个 DI 框架的操作类。它的默认实现是使用的 Castle Windsor 来进行组件的注入与解析,所以我们只需要将其改为使用 DryIoc 的容器其进行操作即可。 其次,在 Abp 框架的很多地方都有用到 Castle Windsor 的 IWindsorContainer 对象,但一般用到该方法的地方都是注入或者绑定组件注册事件

ABP框架应用-MySQL数据库集成

匿名 (未验证) 提交于 2019-12-02 22:06:11
【说明】ABP原始框架环境准备: ASP.NET Core 2.X .NET Core (Cross Plateform) vue 2.5.16 vuex 3.0.1 ABP 3.8.1 yarn 1.9.4 【说明】MYSQL基础支撑 【说明】生成升级脚本的设计支撑,例如,MYSQL数据库字段类型到实体类型的映射关系。 【说明】修改前: 【说明】修改后: 【说明】注意: 如果引用的是UseMYSql,则说明,引用包为MySQL.Data.EntityFrameworkCore,生成迁移脚本的时候,仍然会报无法进行转换的错误。 【说明】modelBuilder.Entity<ApplicationLanguageText>().Property(p => p.Value).HasMaxLength(500); 没有验证过为什么这样做。 【说明】修改后的格式: "Default": "Server=[mysql的连接地址]; port=[端口]; Database=[数据库名称]; user id=[登录账户]; password=[登录密码];" 【说明】执行:add-migration [迁移脚本名称] 执行成功后,将在 Migrations中生成[迁移脚本名称]命名的脚本文件。 【说明】执行 : update-database 文章来源: ABP框架应用-MySQL数据库集成

[Abp 源码分析]八、缓存管理

匿名 (未验证) 提交于 2019-12-02 22:06:11
缓存在一个业务系统中十分重要,常用的场景就是用来储存调用频率较高的数据。Abp 也提供了一套缓存机制供用户使用,在使用 Abp 框架的时候可以通过注入 ICacheManager 来新建/设置缓存。 同时 Abp 框架也提供了 Redis 版本的 ICacheManager 实现,你也可以很方便的将现有的内存缓存替换为 Redis 缓存。 public class TestAppService : ApplicationService { private readonly ICacheManager _cacheMgr; private readonly IRepository<TestEntity> _rep; // 注入缓存管理器与测试实体的仓储 public TestAppService(ICacheManager cacheMgr, IRepository<TestEntity> rep) { _cacheMgr = cacheMgr; _rep = rep; } public void TestMethod() { // 获取/创建一个新的缓存 var cache = _cacheMgr.GetCache("缓存1"); // 转换为强类型的缓存 var typedCache = cache.AsTyped<int, string>(); // 获取缓存的数据

ABP 切换mysql 数据库报错mysqlexception: incorrect string value: ‘\\xe7\\xae\\x80\\xe4\\xbd\\x93…’ for column display name

匿名 (未验证) 提交于 2019-12-02 22:06:11
刚折腾了ABP框架,为了跨平台,将SQL Server数据库换成了MySQL数据库,ABP框架上支持多语言,中间被字符集折腾的够呛,翻了N个博客,最后终于在StackOverFlow 上找到了最终的解决方法,来记录一下,同时感谢大佬们的无私奉献。 关闭MySQL 命令行窗口输入: net stop mysql 1 更改配置文件 打开安装目录的my.in,添加 [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci 注意 MySQL 5.5 版本以后,一定要使用utf8mb4 ,而不是utf8 开启mysql 命令行输入 net start mysql 1 查看配置 命令行输入 mysql -u root -p 1 登陆成功后,执行 SHOW VARIABLES LIKE 'character%'; 1 如下图就没什么问题了 参考 mysql 5.7版本修改编码为utf-8 “Incorrect string value” when trying to insert UTF-8 into MySQL via JDBC? ―――――――――――――――― 版权声明:本文为CSDN博主「NikoRanger」的原创文章

ng-alain+ABP Angular8版本出现关于abp不存在的问题解决办法

孤街浪徒 提交于 2019-12-02 14:32:32
将abp.js文件添加到asset文件夹下。并在angular.js中添加如下代码 abp.js来自上图的最后一行路径。出现原因不明,总之就是namespace abp没有在正确位置被包含引用,所以只能手动添加文件被加载。 来源: https://blog.csdn.net/HZXI00/article/details/102775535

[译]ABP v1.0终于发布了!

守給你的承諾、 提交于 2019-12-02 01:59:07
ABP v1.0终于发布了! 今天是个大日子!经过约3年的不断开发,第一个稳定的ABP版本,1.0,已经发布了.感谢为该项目做出贡献或试用过的每个人. 立即开始使用新的ABP框架: abp.io/get-started 统计 在这里,有关该项目的一些GitHub和NuGet统计信息: 2,360星. 5,917次提交. 72位贡献者. 关闭了1,136个问题,276个打开问题. 关闭了566个PR,5个打开的PR. 39次发布. 在NuGet上有122,795次下载. 甚至在第一个版本发布之前就有了非常好的需求. 路线图 首要任务是完成文档,因为框架功能和模块仍然缺少很多文档.然后,我们将根据标记的优先级继续在GitHub上解决问题. 请参阅 GitHub里程碑项目 . ABP是一个社区驱动的项目.因此,我们主要根据社区的反馈和需求确定问题的优先级. 来源: https://www.cnblogs.com/waku/p/11724701.html

[Abp vNext 源码分析] - 9. 接口参数的验证

亡梦爱人 提交于 2019-12-02 01:54:26
一、简要说明 ABP vNext 针对接口参数的校验工作,分别由过滤器和拦截器两步完成。过滤器内部使用的 ASP.NET Core MVC 所提供的 IModelStateValidator 进行处理,而拦截器使用的是 ABP vNext 自己提供的一套 IObjectValidator 进行校验工作。 关于参数验证相关的代码,分布在以下三个项目当中: Volo.Abp.AspNetCore.Mvc Volo.Abp.Validation Volo.Abp.FluentValidation 通过 MVC 的过滤器和 ABP vNext 提供的拦截器,我们能够快速地对接口的参数、对象的属性进行统一的验证处理,而不会将这些代码扩散到业务层当中。 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 22 日晚 更新日期:暂无 二、源码分析 2.1 模型验证过滤器 模型验证过滤器是直接使用的 MVC 那一套模型验证机制,基于数据注解的方式进行校验。数据注解也就是存放在 System.ComponentModel.DataAnnotations 命名空间下面的一堆特性定义,例如我们经常在 DTO 上面使用的 [Required] 、 [StringLength] 特性等,如果想知道更多的数据注解用法,可以前往 MSDN 进行学习。 2.1.1

abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)

为君一笑 提交于 2019-12-01 22:18:22
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九) abp(net core)+easyui+efcore实现仓储管理系统——多语言(十) abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一)

abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

北慕城南 提交于 2019-12-01 10:10:38
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九) abp(net core)+easyui+efcore实现仓储管理系统——多语言(十) abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一)