[2017-08-07]ABP系列——QuickStartA:概述、思想、入门和HelloWorld

[2017-08-07]ABP系列——QuickStartA:概述、思想、入门和HelloWorld唔 说好的文章 欠了好久 先水一篇 本系列目录 Abp 介绍和经验分享 目录概述先表个态 对绝大多数人来说 ABP 是成熟的 足以用到生产环境的 最适合的 业务非常复杂且不追求极致性能的 这里并不是说 ABP 性能不行 或业务非常成熟稳定直接作为产品 卖软件 或服务 SaaS 进行销售的 最不适合的 极致追求性能 言必谈性能 不谈业务的 这里适合和不适合 主要是说投入产出比 不适


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

本系列目录: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入门

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

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

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

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

HelloWorld, Step By Step,先跑起来

Step 1 快速构建解决方案

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

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,一切就绪,赶快去了解业务需求吧!

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

转载于:https://www.cnblogs.com/personball/p/7455940.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208576.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:16
下一篇 2026年3月19日 上午11:16


相关推荐

  • 动态路由协议分类

    动态路由协议分类路由器根据路由表生成方式可以分为 直连路由 静态路由 动态路由动态路由协议很多有点复杂 本文介绍一下动态路由的优缺点和分类

    2026年3月17日
    2
  • vscode html注释快捷键_宇宙最强vscode教程(基础篇)

    vscode html注释快捷键_宇宙最强vscode教程(基础篇)本文主要介绍vscode在工作中常用的快捷键及插件,目标在于提高工作效率本文的快捷键是基于mac的,windows下的快捷键放在括号里Cmd+Shift+P(winCtrl+Shift+P)零、快速入门有经验的可以跳过快速入门或者大致浏览一遍1.命令面板命令面板是vscode快捷键的主要交互界面,可以使用f1或者Cmd+Shift+P(winCtrl+Shift+P)打开。在命令…

    2022年6月9日
    52
  • vscode插件大全_vscode插件介绍

    vscode插件大全_vscode插件介绍vscode常用插件推荐及介绍

    2026年4月18日
    6
  • top命令输出解释以及load average 详解及排查思路

    top命令输出解释以及load average 详解及排查思路昨天nagios报警warning,没来得及留下报警截图,nagios值设定的值是当1分钟多于15个进程等待,5分钟多于10个,15分钟多于5个则为warning状态当1分钟多于30个进程等待,5分钟多于25个,15分钟多于20个则为critical状态————————————————————-

    2022年7月17日
    24
  • python构造icmp数据包_如何在python中构造ICMP数据包

    python构造icmp数据包_如何在python中构造ICMP数据包为了学习 我目前正在尝试创建一个简单的 pythonporgra 来向某个设备发送 ICMPping 数据包 为了开始 我查看了 python 模块 Pyping https github com Akhavi pyping blob master pyping core py 的源代码我试图了解发送和构建数据包时发生的所有情况 但是我已经设法卡在代码的一部分上 似乎无法弄清楚它的功能和用途究竟是什么

    2026年3月18日
    2
  • SMO算法最通俗易懂的解释[通俗易懂]

    SMO算法最通俗易懂的解释[通俗易懂]我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~SVM通常用对偶问题来求解,这…

    2022年6月30日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号