返回总目录《一步一步使用ABP框架搭建正式项目系列教程》


经过前面十二篇的基础教程,现在终于该做个总结了。

回顾

第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样既快速又准确,不会因为项目的搭建,而让新手畏而却步。

第二篇,我们说了实体类的创建,这是放在核心层(Core Layer)的,每个实体类最终和数据库中的表是一一对应的。

第三篇,我们讲了创建数据库上下文DbContext,这是连接应用程序和数据库的桥梁,是数据在应用和数据库之间流通的管道。

第四篇,有了前面的桥梁、管道,那么接下来就应该彻底第一次打通该通道了,这就是数据库迁移,完成了这一步,核心层的实体类就和数据库中的表一一对应上了。

第五篇,通道有了,数据库也有了,假如数据库中有了很多数据,那么我们如何将这些数据取出来供应用程序使用呢?这就需要仓储出马了,它就像是应用程序中一个临时存储数据的仓库一样。而在第五篇中,我们主要说的是仓储接口的定义,而这个仓储接口,一般是一些自定义的方法,因为绝大多数的方法如Insert(),Delete(),Get(),Update()等都已经定义在了泛型接口IRepository<T>中,一般我们是不需要定义的。注意仓储接口的定义是放在核心层的。

第六篇,上面定义了仓储接口,这里自然就要实现这些接口了。注意,仓储的实现是放在ABP的基础设施层的,比如,你项目中使用的EF,那么仓储接口的实现就要放在EntityFramework那个类库项目。

第七篇,构建应用层服务。创建这一层的目的是为了解耦表现层和核心层,这样表现层就像皮肤一样可以灵活更换,而核心层也可以随着业务的变化而改变,也不会影响到表现层。

第八篇,上面构建了应用层服务,而一般来说,应用程序的输入都要经过两次验证,一次是在客户端,一次是在服务端,因此第八篇说的数据校验就是应用服务层的服务端校验。应用服务层方法的参数一般是一个Dto类,而该Dto类继承了ABP中定义的验证接口(如IInputDto)的话,ABP会通过拦截器进行拦截验证,详细信息请查看对应的文档。

第九篇,介绍了ABP中的一大特色,就是可以将上面创建的应用服务层的方法动态地生成Web API,这样,我们的Web层就可变得很薄,而且,在客户端直接调用Web API有时也是很方便的事情。

第十篇,应用程序的最顶端,也就是UI层了。这里主要给展示了一下我在项目中使用了哪些脚本或插件来实现一些界面上的功能,没有具体讲什么客户端技术,因为涉及知识面太广,因此,以后可能会讲。

第十一篇,也是ABP中的一大特色,本地化系统灵活,强大,健壮,本地化资源可以存储为xml,json,资源文件,还可以存储在数据库中,而且使用非常方便。请查看详细文档进行阅读。

第十二篇,通过一个小例子展示了一下ABP中单元测试的构建。特点是在同一个解决方案中另建一个类库项目即可完成,此外,更加真实的测试(只有初始数据是伪造的)使得测试格外具有价值。

忠告

我相信,如果你认真地阅读了本教程,并且跟着我的节奏动手实践的话,那么使用ABP搭建属于你的项目已经不是难事了。

最近很多园友都通过下面的连接加入了QQ群,但是依然还有很多园友在群里问着很简单的问题,其实很多问题我已经在博客中说明解决方法了,所以希望看到这里的园友或者今后加到QQ群的园友,如果你真的希望灵活使用ABP这个框架,掌握一些基本原理,那么我希望你能好好地阅读我的所有关于ABP的文章,如果你急功近利,只是图快,尽快使用ABP搭建好项目,这样是学不好ABP的,总之,态度一定要端正。记住,所有的框架都是由很多相同的基本知识点构成的,这些基本知识点掌握了,学习任何一个框架都会是得心应手的感觉。就像学习编程语言一样,基本语法和编程思想掌握了,所有的编程语言都是一通百通的事情。

计划

该系列教程的知识点也回顾完了,楼主的忠告也说完了,接下来楼主说说后面博客的打算。

ABP理论基础和实践基础系列教程都完成了,下面最先要完成的是《ABP理论高级》,这里面主要介绍一些理论基础中没有谈到的知识点。然后是《ABP实践高级》,从头到尾做一个完整的项目【只有两三项功能哦】,太多功能的实现本质都是差不多的,所以也就不在重复造轮子!

最后,希望大家关注这篇博客ABP框架理论研究总结(典藏版),随时关注ABP高级的链接是否已激活。

ABP框架搭建项目系列教程基础版完结篇的更多相关文章

  1. NET使用ABP框架搭建项目

    NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等.中等的工程师(甚至是高级工程师)很烦躁. 推荐一 ...

  2. 一步一步使用ABP框架搭建正式项目系列教程

    研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...

  3. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  4. 关于使用ABP框架搭建的项目升级时需要注意的问题汇总

    ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...

  5. Laravel大型项目系列教程(一)

    Laravel大型项目系列教程(一) 一.课程概述 1.课程介绍 本教程将使用Laravel完成一个多用户的博客系统,大概会包含如下内容: 路由管理. 用户管理,如用户注册.修改信息.锁定用户等. 文 ...

  6. SSM 框架-06-详细整合教程(IDEA版)(Spring+SpringMVC+MyBatis)

    SSM 框架-06-详细整合教程(IDEA版)(Spring+SpringMVC+MyBatis) SSM(Spring.Spring MVC和Mybatis)如果你使用的是 Eclipse,请查看: ...

  7. SSM 框架-05-详细整合教程(Eclipse版)(Spring+SpringMVC+MyBatis)

    SSM 框架-05-详细整合教程(Eclipse版)(Spring+SpringMVC+MyBatis) 如果你使用的是 Intellij IDEA,请查看: SSM的配置流程详细的写了出来,方便很少 ...

  8. Laravel大型项目系列教程(三)之发表文章

    Laravel大型项目系列教程(三)之发表文章 一.前言 上一节教程中完成了用户管理,这节教程将大概完成发表Markdown格式文章并展示的功能. 二.Let's go 1.数据库迁移 文章模块中我们 ...

  9. Laravel大型项目系列教程(二)之用户管理

    Laravel大型项目系列教程(二) 一.前言 本节教程将大概实现用户的注册.修改个人信息.管理用户功能. 二.Let's go 1.创建用户注册视图 $ php artisan generate:v ...

随机推荐

  1. 23种设计模式--中介者模式-Mediator Pattern

    一.中介者模式的介绍     中介者模式第一下想到的就是中介,房子中介,婚姻中介啊等等,当然笔者也希望来个婚姻中介给我介绍一个哈哈哈,,回归正题中介者模式分成中介者类和用户类,根据接口编程的方式我们再 ...

  2. angular2系列教程(九)Jsonp、URLSearchParams、中断选择数据流

    大家好,今天我们要讲的是http模块的第二部分,主要学习ng2中Jsonp.URLSearchParams.observable中断选择数据流的用法. 例子

  3. MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

    一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...

  4. Div Vertical Menu ver5

    这个小功能,如果是算此次,已经是第5次修改了.可以从这里看到前4次:V1, http://www.cnblogs.com/insus/archive/2011/10/17/2215637.html V ...

  5. JQuery实现表格的增加行和删除行

    利用JQuery实现datatables插件的增加和删除行操作 在学习过程中遇到了这个利用JQuery对表格行的增加和删除,特记录下来以供初学者参考. 下面是主要的代码: <meta http- ...

  6. 【JQ基础】DOM操作

    内部插入:append() //向每个匹配的元素内部追加内容,可包含 HTML 标签 $(selector).append(function(index,html)) /*•index - 可选.接收 ...

  7. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

  8. Angular2 Hello World 之 2.0

    最近angular2正式版发布了,现在就趁热接着记录一下2.0版的Hello World.据说由RC6升级到2.0代码改动不是很大,在写的时候也感觉改动不是很大,这次记录还是以asp.net core ...

  9. 热修复-Tinker

    微信开源,真是喜出望外,必须要去看看啊,比起nuwa来微信好很多,而且github上也有专门的官方文档说明,还有很多资料查询 参考地址:https://github.com/Tencent/tinke ...

  10. AFN解析器里的坑

    AFN框架是用来用来发送网络请求的,它的好处是可以自动给你解析JSON数据,还可以发送带参数的请求AFN框架还可以监测当前的网络状态,还支持HTTPS请求,分别对用的类为AFNetworkReacha ...