ABP系列——QuickStartA:概述、思想、入门和HelloWorld

唔,说好的文章,欠了好久,先水一篇。

本系列目录:Abp介绍和经验分享-目录

概述

先表个态:对绝大多数人来说,ABP是成熟的,足以用到生产环境的。

  • 最适合的:业务非常复杂且不追求极致性能的(这里并不是说ABP性能不行),或业务非常成熟稳定直接作为产品(卖软件)或服务(SaaS)进行销售的。
  • 最不适合的:极致追求性能,言必谈性能,不谈业务的。

这里适合和不适合,主要是说投入产出比(不适合的那群人本身就在抗拒着,忙着挑刺)。

当我们遇到需要极致的性能需求的时候,其实重点在于方案如何设计,开发框架和开发语言理应为了性能让步,做出一定取舍,这种时候,ABP的众多特性,其实是被浪费了,所以并不是一个适合的场景。

但是更多时候,我们求的是快速开发,而快速开发(不仅仅是,还要)离不开几个特点:

  1. 先进的建模思想;
  2. 丰富的基础设施;
  3. 开箱即用的基础功能;

上面第二点和第三点ABP有非常强大的优势。而第一点其实是指如何Hold住多变的业务逻辑,以及如何写出可维护性、可扩展性强的代码,主要是看写代码的人本身的功底。而ABP的源码又恰好在这方面有非常优秀的示范作用。

就我们团队的经验来说,从2015年,Abp版本0.7左右开始使用,期间还有一些不成熟的摸索,到今年上半年使用1.4.2以及1.5.0已经基本游刃有余,在三个月时间内开发完公司的两大系统(供应链管理系统和电商平台)。效率之高,也是我从业以来非常罕见的,当然其中团队的磨合也很重要,但Abp在其中起到的作用是非常巨大的。

PS:为啥是1.4.2和1.5.0?今年上半年Abp作者升级太快了,跟不上啊!又怕引入.net core会造成未知风险(后来证明确实如此),就没继续升级跟进了。但是本系列会以当前最新的Abp版本v2.3(本来想说v2.2.2的,结果去看了下,果然又升到v2.3了,所以这是一个非常活跃的项目,别怕没人维护!)作为演示基准。

ABP思想

  1. 基于DDD(领域驱动设计)思想的分层架构;
  2. 模块化设计;
  3. 多租户,SaaS架构支持;
  4. 坚持SOLID,DRY等原则的最佳实践;
  5. UOW(UnitOfWork,工作单元),EventBus,业务逻辑解耦利器;
  6. IoC,依赖注入,本地化语言,泛型仓储,AOP,应用服务直接映射WebApi,聚合根,值对象,等等等等…

借用官网的图:

abp-concerns

Don’t repeat yourself! 框架替你做重复的事,你只需集中精力处理业务逻辑!和IRepository.Update(entity)说再见,SaveChange以后也只会偶尔露面了。

追加最新架构图:

abp-nlayer-architecture

ABP入门

感谢将ABP介绍到中文社区的朋友们,这段主要是传送门:

  1. 阳铭的博客
  2. ABP框架理论研究总结(较新)

建议想粗略看个大概的朋友可以先看看阳铭的博客,想认真入坑的,可以看tkb的《ABP框架理论研究总结》。

这里把阳铭的博客列在前面是有些私心的,本人到上海工作的原因就是入了abp的坑,并且有幸进入阳铭的团队直到现在,所以领导的博客要靠前点。

HelloWorld, Step By Step,先跑起来

Step 1 快速构建解决方案

点击链接»Abp官网解决方案自动生成工具
如图,我们选择Asp.Net Mvc 5.x项目,多页Web应用包含module-zero,并且输入解决方案名称(同时是根命名空间)Personball.Demo

sln generator

点击生成项目

等待下载完成。解压后,得到解决方案:

sln_demo

Step 2 初始化数据库

sln_demo2

  1. 右键点击Personball.Demo.Web作为启动项目;
  2. 修改Web.config数据库连接字符串,连接到可用的数据库实例(需要建立一个空数据库Personball_Demo);
  3. 打开程序包管理器控制台,选择Personball.Demo.Entityframework作为当前项目;
  4. 执行Update-Database;

Step 3 启动

最后,F5启动,ok,一切正常!

sln_demo3

还可以立即体验到多语言机制哦!
PS 默认账户是admin,密码123qwe

Step 4 Git Init,一切就绪

在程序包管理器控制台,运行如下命令获取vs版gitignore文件

(New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/github/gitignore/master/VisualStudio.gitignore","$pwd\.gitignore")

然后执行git初始化命令,添加所有文件,提交。

git init
git add .
git commit -am 'Init'

Ok,一切就绪,赶快去了解业务需求吧!

这篇水完了,后面会有干货的。

Published: August 07 2017

prize