ABP框架学习实践
文章平均质量分 81
ASP.NET Boilerplate框架学习实践
ludewig
这个作者很懒,什么都没留下…
展开
-
ABP学习实践(十六)--领域驱动设计(DDD)回顾
ABP框架并没有实现领域驱动设计(DDD)的所有思想,但是并不妨碍用领域驱动的思想去理解ABP库框架。1.领域驱动设计(DDD)与微服务(MicroService)的关系?2.领域驱动设计(DDD)原创 2021-08-28 08:43:12 · 1140 阅读 · 0 评论 -
ABP学习实践(十五)--缓存使用总结
近期在工作过程中对ABP框架的缓存功能又有了深一步的理解,做一个小小的总结。1.关于缓存现在相当一部分小伙伴听到缓存立刻想到Redis,反应很快,但容易进入一个误区“处理缓存就要用Redis”。Redis作为缓存数据库使用方便,性能也好,但并不是只有Redis才能处理缓存,服务器自身也有缓存的。ABP框架提供了通用的缓存管理器ICacheManager,在应用层、领域层通过构造函数直接注入后就可以使用。 /// <summary> /// 缓存管理器 /// </s原创 2021-08-18 21:04:07 · 1519 阅读 · 0 评论 -
ABP学习实践(十四)--执行自定义SQL语句,创建动态表
在日常的开发工作中,有时我们需要在应用程序中直接执行SQL语句,比如动态创建数据库表、自定义查询等,利用ABP框架的仓储特性和EntityFramework Core的特性就能实现这个功能。1.执行自定义SQL语句网上可以查到不少通过EFCore执行SQL语句的文章,但有些是比较早的,相关方法可能已经废弃了,也有结合ABP仓储实现的,但有些地方感觉也没写明白。1.1 创建自定义仓储在领域层(一般是Core项目)中添加自定义仓储接口。 public interface ISqlReposito原创 2021-04-23 00:51:35 · 2185 阅读 · 3 评论 -
ABP学习实践(十三)--数据传输对象、实体、数据库表的映射
ABP框架中使用了数据传输对象和实体的概念,而实体一般又是与数据库的表结构相对应的。在ABP框架中可以分别为数据传输对象DTO与实体Entity、实体Entity与数据库表Table建立映射关系,既可以减少一定的编码工作量,也能降低数据传输对象、实体与数据库表之间的耦合性。一.对象映射–数据传输对象与实体之间的映射在ABP框架中,数据传输对象(Data Transfer Objects)也就是...原创 2020-04-01 22:02:16 · 2419 阅读 · 0 评论 -
ABP学习实践(十二)--模块系统
模块Module是ABP框架体系很重要的概念,不同的功能组件包括项目之间都是以模块的形式进行关联的。在ABP框架的启动过程中,模块的遍历、初始化、启动也是很重要的一环。...原创 2020-03-01 22:43:04 · 1255 阅读 · 0 评论 -
ABP学习实践(十一)--框架启动流程
在经过前面的实践后,利用ABP框架解决简单的业务需求(增删改查)基本是没问题了。然而ABP框架的能力可不止这些,想要更好的使用那些高级特性,就需要了解下ABP框架的结构和工作原理了。1.框架结构1.1项目依赖关系再次回顾下系列文章第一篇中所描述的项目依赖关系。应用层Application和基础设施层EntityFrameworkCore都依赖于领域层Core,而呈现和分布式应用层Web又...原创 2020-03-01 20:51:21 · 1251 阅读 · 0 评论 -
ABP学习实践(十)--集成至WPF项目
这是一篇“不务正业”的文章,没错,将ABP框架集成到WPF项目。作为一个主打web开发的框架,ABP框架使用多次后就愈发爱不释手,一直想着能不能将其集成到WPF项目中,过程就在下面了。1.创建WPF项目并安装ABP程序包在解决方案中创建一个WPF项目,名为AbpDemo.Client。为了符合整个解决方案的.NET Core环境,创建的也是.NET Core环境下的WPF项目。打开NuGe...原创 2020-02-22 22:04:45 · 3310 阅读 · 0 评论 -
ABP学习实践(九)--使用CAP集成消息队列
领域事件可以触发应用内领域对象变化的通知,结合实时消息(例如SignalR)可以将通知推送给外部应用。但是消息推送的可靠性如何保证?ABP框架能集成消息队列吗?当然可以,下面就是示例。1.实时数据传输与消息队列实时数据传输和消息队列是两类不同的技术方案,有着不同的应用场景,但又有一定的相似性。实时数据传输更偏重于“实时”两个字,要求保证数据的及时有效交换,多用于多媒体相关的业务场景,常见的技...原创 2020-02-02 17:19:03 · 3436 阅读 · 0 评论 -
ABP学习实践(八)--集成SignalR推送实时消息
应用内部的领域对象发生变化时可以通过领域事件通知,那么应用之间该如何处理?选择SignalR实时数据传输方案能够解决这一问题,在ABP框架中,可以使用简化的已封装的SignalR相关依赖库。ABP框架提供的SignalR依赖库有两个,一个是.NET Framework环境下的Abp.Web.SignalR,另一个是.NET Core环境下的Abp.AspNetCore.SignalR。文中示例...原创 2020-02-02 11:45:30 · 3282 阅读 · 0 评论 -
ABP学习实践(七)--领域事件
事件是在软件开发过程中经常用到的一种思路和形式,事件常常是和观察者模式、订阅发布这样的词汇联系在一起。在ABP框架中同样也少不了事件,也就是领域事件。1.领域事件的使用范围在具体业务中常常会有这样的需求,以前面的货品管理功能为例,对于某种特定类型的货品,我们希望在货品库存数量低于某个特定值的时候得到提醒,以便于进行采购补货或其他操作,就是常说的库存预警功能。解决这个问题最简单的思路就是写一个...原创 2020-02-01 22:16:26 · 1179 阅读 · 1 评论 -
ABP学习实践(六)--领域服务与工作单元
当业务逐渐变得复杂,涉及到的实体对象不再是一个时,通用的增删改查分页功能已经无法满足要求,就需要更高级的功能。ABP框架提供了领域服务、工作单元和其他相关功能来实现对复杂业务的处理。1.领域服务的使用范围ABP框架设计的主要思想之一就是领域驱动设计模式,虽然ABP使用有一段时间了,但我觉得自己学习到的也只是皮毛而已,真正核心的东西还没有触及到。以我个人粗陋的理解,当你的业务处理过程涉及到多个...原创 2020-02-01 18:47:15 · 863 阅读 · 0 评论 -
ABP学习实践(五)--引入Swagger对API接口进行管理
以目前流行的前后端分离模式来看,ABP框架更适用于后端开发,而对API接口的管理就成了一项必不可少的功能。1.安装Swashbuckle.AspNetCore使用Nuget管理器在分布式服务层和展现层AbpDemo.Web安装Swashbuckle.AspNetCore程序包,包含Swashbuckle.AspNetCore.Swagger、Swashbuckle.AspNetCore.Sw...原创 2020-01-30 19:45:40 · 3188 阅读 · 1 评论 -
ABP学习实践(四)--分页查询
前面两篇文章只写了增删改功能,并不是把查询功能遗漏了,本篇就单独来讨论分页查询。分页查询很常用,实现并不难,但是想要用起来方便舒服还是要花些心思。虽然分页查询的实现跟ABP框架并没有什么关系,但是为了延续性暂且还是放在这里了。对于分页查询来讲,需要注意的有两点:一是查询条件的处理,用户的输入是多样化的、无法预知的,查询规则要足够灵活和简单;二是查询结果的分页处理,一般是根据当前页码和每页记录数...原创 2020-01-30 15:34:36 · 3179 阅读 · 0 评论 -
ABP学习实践(三)--使用自定义基类的增删改示例
上篇文章中已经使用ABP框架使用了简单的增删改功能,但若在实际项目中这样使用,效率实在是低,所以有必要对代码进行优化,提高开发效率。1.定义应用服务基类接口本次优化代码的基本思路就是利用泛型类和接口对常用的功能进行定义和实现,最常用的几个方法就是新增、修改、详情和删除了,先从这几个方法下手了。在应用层AbpDemo.Application创建泛型接口IAbpDemoAppServiceBa...原创 2020-01-29 22:29:31 · 964 阅读 · 0 评论 -
ABP学习实践(二)--简单的增删改示例
学习一项知识,最好的方式还是实践。写一个简单示例,对ABP框架如何工作也能有一个更好的认知。原创 2020-01-29 21:54:37 · 1863 阅读 · 0 评论 -
ABP学习实践(一)--概览
学习使用ABP框架已有近一年了,有了一点积累,最近刚好把使用过程中的心得记录下。ABP框架是近些年比较流行的开源框架之一,主要特点我就不再一一赘述,一是网上已经有不少资料了,很多大牛也都比我写的详细和深刻,二是能看到这篇文章的应该对ABP框架是有些许了解的。废话不说,直奔主题。注意:示例中使用ABP框架版本为4.6,发文时最新版本已到5.1,且运行环境为.NET Framework,尚未切换至...原创 2020-01-28 17:38:51 · 2248 阅读 · 1 评论