
ABP入门系列
ABP入门系列
sinolover
完成项目,就要软硬兼施
展开
-
ABP入门系列(21)——切换MySQL数据库
1. 引言Abp支持MySql已经不是什么新鲜事了,但按照官方文档:Entity Framework - MySql Integration来,你未必能成功切换,本文就记录下切换MySql数据库遇到的一些坑,供后人乘凉!2. 环境准备MySql数据库好啊,开源免费,不再像SqlServer那样累赘。而且结合.Net Core,他俩贼般配的说!但MySql自从卖给Oracle后,好像就不...原创 2020-01-04 06:51:23 · 459 阅读 · 0 评论 -
ABP入门系列(20)——使用后台作业和工作者
1.引言说到后台作业,你可能条件反射的想到BackgroundWorker,但后台作业并非是后台任务,后台作业用一种队列且持久稳固的方式安排一些待执行后台任务。为执行长时间运行的任务而用户无需等待,以提高用户体验。 为创建可重试且持久稳固的任务来保证一个代码将会被成功运行,以提高系统的稳定性。那什么又是后台工作者呢?后台工作者则是简单运行在应用程序后台的独立线程,它用于定期执行一些任...原创 2020-01-04 06:51:18 · 1019 阅读 · 0 评论 -
ABP入门系列(19)——使用领域事件
1.引言最近刚学习了下DDD中领域事件的理论知识,总的来说领域事件主要有两个作用,一是解耦,二是使用领域事件进行事务的拆分,通过引入事件存储,来实现数据的最终一致性。若想了解DDD中领域事件的概念,可参考DDD理论学习系列(9)-- 领域事件。领域事件实现最终一致性Abp中使用事件总线来实现领域事件,而关于事件总线的实现,大家可参考我这篇博文——事件总线知多少,本文将不再赘述。...原创 2020-01-04 06:51:05 · 888 阅读 · 0 评论 -
ABP入门系列(18)—— 使用领域服务
1.引言自上次更新有一个多月了,发现越往下写,越不知如何去写。特别是当遇到DDD中一些概念术语的时候,尤其迷惑。如果只是简单的去介绍如何去使用ABP,我只需参照官方文档,实现到任务清单Demo中去就可以了,不劳神不费力。但是,这样就等于一知半解。知之为知之,不知为不知,是知也。知其然知其所以然,方能举一反三嘛。为了揭开迷惑,最近开始研读《实现领域驱动设计》去学习DDD中的思想,并开了一...原创 2020-01-04 06:50:39 · 563 阅读 · 0 评论 -
ABP入门系列(17)——使用ABP集成的邮件系统发送邮件
1.Abp集成的邮件模块是如何实现的ABP中对邮件的封装主要集成在Abp.Net.Mail和Abp.Net.Mail.Smtp命名空间下,相应源码在此。分析可以看出主要由以下几个核心类组成:EmailSettingNames:静态常量类,主要定义了发送邮件需要的相关参数:Port、Host、UserName、Password、Domain、EnableSsl、UseDefaultC...原创 2020-01-03 10:00:49 · 1879 阅读 · 0 评论 -
ABP入门系列(16)——通过webapi与系统进行交互
1. 引言上一节我们讲解了如何创建微信公众号模块,这一节我们就继续跟进,来讲一讲公众号模块如何与系统进行交互。微信公众号模块作为一个独立的web模块部署,要想与现有的【任务清单】进行交互,我们要想明白以下几个问题:如何进行交互? ABP模板项目中默认创建了webapi项目,其动态webapi技术允许我们直接访问appservice作为webapi而不用在webapi层编写额外的代码。所...原创 2020-01-03 10:00:02 · 1184 阅读 · 0 评论 -
ABP入门系列(15)——创建微信公众号模块
1. 引言现在的互联网已不在仅仅局限于网页应用,IOS、Android、平板、智能家居等平台正如火如荼的迅速发展,移动应用的需求也空前旺盛。所有的互联网公司都不想错过这一次移动浪潮,布局移动市场分一份移动红利。的确,智能手机作为我们日常生活已必不可少的一部分,通过手机app能够获得更好的体验,比如社交、购物、娱乐、生活。但这也引入了一个问题,如果布局移动市场,就意味着要维护好几条产品线,...原创 2020-01-03 09:59:34 · 424 阅读 · 0 评论 -
ABP入门系列(14)——应用BootstrapTable表格插件
1. 引言之前的文章ABP入门系列(7)——分页实现讲解了如何进行分页展示,但其分页展示仅适用于前台web分页,在后台管理系统中并不适用。后台管理系统中的数据展示一般都是使用一些表格插件来完成的。这一节我们就使用BootstrapTable进行举例说明。最终效果图2. BootstrapTable基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有...原创 2020-01-03 09:58:55 · 556 阅读 · 0 评论 -
ABP入门系列(13)——Redis缓存用起来
1. 引言创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用户,以供用户选择。我们每创建一个任务时都要去数据库取一次用户列表,然后绑定到用户下拉列表显示。如果就单单对一个demo来说,这样实现也无可厚非,但是在正式项目中,显然是不合理的,浪费程序性能,有待优化。说到优化,你肯定立马就想到了使用缓存。是的,缓存是提高程序性能的高效方式之一。这一节我们就针对...原创 2020-01-03 09:58:14 · 402 阅读 · 0 评论 -
ABP入门系列(12)——如何升级Abp并调试源码
1. 升级Abp本系列教程是基于Abp V1.0版本,现在Abp版本已经升级至V1.4.2,其中新增了New Feature,并对Abp做了相应的Enhancements,以及Bug fixs。现在我们就把它升级至最新版本,那如何升级呢?下面就请按我的步骤来将Abp由V1.0升级至V1.4.2。1.1. 过滤Abp Nuget包VS打开解决方案文件,右键解决方案(不是某个项目),选中...原创 2020-01-03 09:57:32 · 1201 阅读 · 1 评论 -
ABP入门系列(11)——编写单元测试
1. 前言In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data,...原创 2020-01-03 09:56:54 · 1252 阅读 · 0 评论 -
ABP入门系列(10)——扩展AbpSession
一、AbpSession是Session吗?1、首先来看看它们分别对应的类型是什么?查看源码发现Session是定义在Controller中的类型为HttpSessionStateBase的属性。 public HttpSessionStateBase Session { get; set; }再来看看AbpSession是何须类也,咱们定位到AbpController中看一看。 pu...原创 2020-01-03 09:56:27 · 794 阅读 · 0 评论 -
ABP入门系列(9)——权限管理
1.引言完成了简单的增删改查和分页功能,是不是觉得少了点什么?是的,少了权限管理。既然涉及到了权限,那我们就细化下任务清单的功能点:登录的用户才能查看任务清单 用户可以无限创建任务并分配给自己,但只能对自己创建的任务进行查找、修改 管理员可以创建任务并分配给他人 管理员具有删除任务的权限从以上的信息中,我们可以提取出以下权限:任务分配权限 任务删除权限那我们下面就来实现针...原创 2020-01-03 09:55:00 · 1682 阅读 · 0 评论 -
ABP入门系列(8)——Json格式化
ABP入门系列目录——学习Abp框架之实操演练源码路径:Github-LearningMpaAbp讲完了分页功能,这一节我们先不急着实现新的功能。来简要介绍下Abp中Json的用法。为什么要在这一节讲呢?当然是做铺垫啊,后面的系列文章会经常和Json这个东西打交道。一、Json是干什么的JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。...原创 2020-01-03 09:54:16 · 625 阅读 · 0 评论 -
ABP入门系列(7)——分页实现
ABP入门系列目录——学习Abp框架之实操演练源码路径:Github-LearningMpaAbp完成了任务清单的增删改查,咱们来讲一讲必不可少的的分页功能。首先很庆幸ABP已经帮我们封装了分页实现,实在是贴心啊。来来来,这一节咱们就来捋一捋如何使用ABP的进行分页吧。1. 分页请求DTO定义数据传输对象(Data Transfer Objects)用于应用层和展现层的数据传...原创 2020-01-02 11:01:15 · 1125 阅读 · 0 评论 -
ABP入门系列(6)——定义导航菜单
ABP入门系列目录——学习Abp框架之实操演练源码路径:Github-LearningMpaAbp完成了增删改查以及页面展示,这一节我们来为任务清单添加【导航菜单】。在以往的项目中,大家可能会手动在layout页面中添加一个a标签来新增导航菜单,这也是一种方式,但是如果要针对不同用户不同权限决定是否显示某个菜单,那么直接在layout页面中去控制就不方便了。不过,ABP已经为大家考虑了...原创 2020-01-02 11:00:49 · 721 阅读 · 1 评论 -
ABP入门系列(5)——展现层实现增删改查
ABP入门系列目录——学习Abp框架之实操演练源码路径:Github-LearningMpaAbp这一章节将通过完善Controller、View、ViewModel,来实现展现层的增删改查。最终实现效果如下图:展现层最终效果一、定义ControllerABP对ASP.NET MVC Controllers进行了集成,通过引入Abp.Web.Mvc命名空间,创建Contro...原创 2020-01-02 11:00:08 · 578 阅读 · 0 评论 -
ABP入门系列(4)——创建应用服务
ABP入门系列目录——学习Abp框架之实操演练1. 解释下应用服务层应用服务用于将领域(业务)逻辑暴露给展现层。展现层通过传入DTO(数据传输对象)参数来调用应用服务,而应用服务通过领域对象来执行相应的业务逻辑并且将DTO返回给展现层。因此,展现层和领域层将被完全隔离开来。以下几点,在创建应用服务时需要注意:在ABP中,一个应用服务需要实现IApplicationService接...原创 2020-01-02 10:59:19 · 786 阅读 · 0 评论 -
ABP入门系列(3)——领域层定义仓储并实现
一、先来介绍下仓储仓储(Repository): 仓储用来操作数据库进行数据存取。仓储接口在领域层定义,而仓储的实现类应该写在基础设施层。在ABP中,仓储类要实现IRepository接口,接口定义了常用的增删改查以及聚合方法,其中包括同步及异步方法。主要包括以下方法:IRepository接口定义的方法ABP针对不同的ORM框架对该接口给予了默认的实现;针对EntityFr...原创 2020-01-02 10:58:35 · 857 阅读 · 0 评论 -
ABP入门系列(2)——领域层创建实体
这一节我们主要和领域层打交道。首先我们要对ABP的体系结构以及从模板创建的解决方案进行一一对应。网上有代码生成器去简化我们这一步的任务,但是不建议初学者去使用。一、首先来看看ABP体系结构ABP体系结构领域层就是业务层,是一个项目的核心,所有业务规则都应该在领域层实现。实体(Entity): 实体代表业务领域的数据和操作,在实践中,通过用来映射成数据库表。仓储(Repository...原创 2019-12-30 09:35:43 · 502 阅读 · 4 评论 -
ABP入门系列(1)——通过模板创建MAP版本项目
一、从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二、启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打开Web.config,修改连接字符串。(因为我本地装的sqlserver...原创 2019-12-30 09:35:09 · 380 阅读 · 0 评论