正如我在<程序员英语二三事(2) - 从听开始>里说的, 任何技术/工具/语言都有其适用场景和上下文环境. DDD理论同样是如此.   现在, 终于到了发挥DDD理论优势的时候啦!   一个人做一个项目不用担心代码风格不一致,不用代码看不懂别人写的代码 一个团队做项目就要考虑一致的代码风格,要保证能看得懂团队其他人的代码. 两个人一个用英语,一个用中文是很难交流的. DDD理论保证了大家使用同一种语言去交流.ABP保证了具体实施细节的一致. DDD理论相当于中文/英语,ABP相当于普通话或粤语…
2018年和1998年其中两大区别就是: 前端蓬勃发展, 前后端分离是一个十分大的趋势. 专门的测试人员角色被取消, 多出了一个很重要的角色, 产品经理   ABP只要加入即可马上加快项目进展, 选择前后端+产品经理分工结构会比前面的全栈篇好十分多!!! 因为: 分工协作和流水线作业工作效率会远远比传统的个人全能型先进很多, 这个道理很多同学都懂, 我就不赘述了. 前端快速和迅猛发展, 6个月发布一次大版本, 浏览器6周发布一次小版本, 导致传统程序员光是学习新技术就已经很吃力, 要谈精通更难了…
一个人写代码不需要担心会和别人的代码冲突, 不需要做代码合并, 不需要担心自己的代码被覆盖. 但是多个人一起写代码就需要担心这些问题.   解决这些问题的方法很多, 比如用AzureDevOps(TFS)来进行代码管理和版本控制等等. 其中有两个办法就是, 业务模块组件化和微服务.   首先ABP是支持业务模块组件化的, 然而我并不推荐在ABP使用业务模块组件化, 因为: ABP更新太快了, 每2周更新一个版本. 除了ABP更新快, 其他技术\框架\工具也更新很快. 正如我在<如何用ABP框架快…
昨天发表了<如何用ABP框架快速完成项目 - 自动化测试 - 前端angular e2e protractor>后,大家十分热情,几个小时内就收到了不少问题,包括: 对于ui自动化测试这方面,是不是ui变化了,无论使用何种测试框架,都避免不了重新编写测试用例的代码? 12月的活动是不是只讲angular,不讲MVC了? abp怎么一个人搞定一个项目的? 坐等群主来开DDD培训 按照老师您的文章来做,跑测试时在最后一步捕捉“注销”按钮处失败了. 特别是最后一个问题,证明了这个同学有按照我的文章去…
要想快速完成一个项目, 自动化是很关键很有用的一块. 自动化测试比人工测试快很多. 特别是在回归测试中. 实践证明, 虽然投入了时间在写自动化测试代码上, 但是在回归测试中节省了大量的时间,同时及时发现bug挽救回来时间收益大大超过了早期写自动化测试代码的投入. 特别是要测试浏览器兼容性的时候,只写一遍自动化测试代码,就能自动的快速的在所有浏览器跑完测试. 我们这系列文章是使用abp里的asp.net core + angular结构. angular里的UI自动化测试(简称e2e)使用的是pr…
正如我在<如何用ABP框架快速完成项目(2) - 快的定义!>提到的, 很多同学在使用ABP中遇到很多问题, 花了很多时间和精力, 然而从最根本的角度和方向上来看这些问题应该是不存在. 这些问题如果你正确使用了ABP是根本不会遇到这些问题的.   那么如何正确使用ABP呢? 首先我们要与时俱进,既然选择了ABP,其他同时代的技术和思想也要一并选择. 举个例子, 我们既然选择了飞机, 就要把导弹也选上, 不要开着飞机然后用弓箭去和敌人开战.   那么同时代和ABP这架飞机匹配的武器有啥呢? .N…
做为一个程序员, 深深知道计算机自动化的速度是比人手动的速度快的, 所以”快速”完成项目的一个重要武器就是: 能自动化就不要手动.   BDD/TDD有很多优势, 其中之一就是自动化, 我们这节文章先讲自动化, 在后面的文章里面会讲到BDD/TDD的其他优势.   在ABP .NET Core + SPA版本和52ABP里面, 可以在以下层面做自动化测试: 前端Angular项目的e2e自动化测试 前端Angular项目的unit test 后端.NET Core项目的unit test 后端.…
首先先讲为什么要使用ABP? 当然是因为使用ABP可以快速完成项目啦. 时间就是金钱, 效率就是生命嘛   有了ABP, 你就节省了写如下模块的时间: CRUD数据库基本操作 校验 异常处理 日志 权限 审计 其他   嗯, 节省时间这个理由已经很有力很充分了, 那么接下来介绍一下ABP.   ABP是ASP.NET Boilerplate的简称. 官网是: https://aspnetboilerplate.com/ 官宣是:  ASP.NET Boilerplate是一个用最佳实践和流行技术…
用ABP一个人快速完成项目有如下要点: 站在巨人的肩膀上 - 使用代码生成器 站在巨人的肩膀上 - 使用成熟控件框架, 一个框架不够就上两个, 两个不够就上三个 通过微服务模式而不是盖楼式来避免难度升级 运用BDD/TDD等先进方法论 运用DevOps 注意!一个人的项目不要执着于设计模式和DDD理论,一切都是自然而然, 要理论为你服务,而不是你为理论服务   要想快速完成项目, 站在巨人的肩膀上是一个很重要很好使的招数. 这节我们先讲代码生成.   首先我们先去https://www.52ab…
这节文章十分重要!十分重要!十分重要!   很多同学在使用ABP的过程中遇到很多问题, 花费了很多时间和精力都还无法解决, 就是卡在这节文章这里.   Talk is cheap, just show your code! 让我们上实例.   以很多人都会遇到的导入excel功能为例吧. 因为LinqToExcel是那么的优秀, 我们选择使用它来操作Excel数据. 很多同学直接在ABP项目里面用nuget安装LinqToExcel, 然后使用, 这就是盖楼式. 在ABP这层楼上再盖上LinqT…
为什么要从快的角度来讲这系列课程呢?   因为快是一个很统一很清晰的标准. 所有人对时间都有一个统一清晰的概念.  比如说这系列课程会讲到的一个实例: 集成LinqToExcel, 用我的方法大概耗时1个小时. 如果你有异议, 那请你拿出更好的方案, 就是耗时比1个小时更少. 这么一说评判标准就很清晰, 两个方案之间可以立盼高下.   假如我用好来做标准, 因为好的标准很模糊, 就会导致很多问题. 还是拿上面的那个实例来说吧: 集成LinqToExcel. 如果采用好来做标准, 公说公有理,婆说…
为什么要写这节文章呢?   首先主动看我这系列文章和参加活动课程的同学, 肯定是积极好学的. 所以很大概率是学过设计模式和DDD理论的. 很大概率不是走一点都不懂设计模式和DDD理论这个极端, 而是走了过度使用设计模式和DDD理论,钻了牛角尖这个极端,这个现象有个科学名词叫做“原教旨主义”   因为我会在后面团队做项目的章节里面讲到DDD理论. 所以我在这节就不过多赘述了. 就以设计模式为例吧.   设计模式起于1995年的<Design Patterns: Elements of Reusab…
只有一个人在开发ABP, 遇到难题时可以: 最根本的, 简化问题, 不要盖楼式结构 前端优先用VSCode看文档, 后端看官网文档. 看ABP源码/issues 到QQ群和微信群里寻求外援.   我建立了一个ABP问题速查表, 本来是用来做为讲解开发团队建设知识库的范例的. 但是如果你是一个人在开发ABP, 也是可以用上的.   当一个团队在开发ABP, 除了以上一个人开发ABP能用的方法外, 还可以用如下招数: 应用了Scrum开发流程的团队可以通过分解任务难度来分割难题任务 建设知识库 培育…
   1.abp框架的启动是从Global.asax文件的Application_Start启动的,当然代表Global的application必须从AbpWebApplication继承: public class MvcApplication : AbpWebApplication { protected override void Application_Start(object sender, EventArgs e) { AbpBootstrapper.IocManager.IocCo…
正如我在<office365的开发者训练营,免费,在微软广州举办>课程里面所讲的, 站在巨人的肩膀上的其中一项就是, 尽量使用别人成熟的框架. 其中也包括了控件框架   abp和52abp都使用了成熟的UI框架. 其中52abp的angular版本使用了ng Zorro框架.   然而一个框架不能涵盖所有东西, ng Zorro框架也同样如此. 比如框架里面的table和select控件就缺少很多功能.   那怎么办? 一个框架不够, 那就上两个框架罗, 两个框架不够那就上三个框架罗.   P…
此文当前版本号: 3 最近更新时间: 2018-12-9 04:52   本课程是方向性课程, 目的是避免南辕北辙. 方向盘一旦打正确, 还得需要以下文章去写好具体程序: 前面每篇文章里面的链接, 比如角落白板报里面的视频课程. http://www.cnblogs.com/farb https://www.cnblogs.com/kebinet/p/5341663.html https://www.cnblogs.com/1zhk/category/798531.html https://ww…
在AbpBootstrapper中的两个至关重要的属性:IIocManager 和 IAbpModuleManager  public class AbpBootstrapper : IDisposable { /// <summary> /// Gets IIocManager object used by this class. /// </summary> public IIocManager IocManager { get; private set; } /// <…
大家好,我在<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>一文中提到,我将在12月份搞一场ABP框架活动,现向大家征集活动场地.志愿者.合作讲师\副讲师.   活动课程标题是:如何用ABP框架快速完成项目 这是内容大纲: ABP框架简介 快的定义! 用ABP一个人快速完成项目(含实操演练) 用ABP只要加人即可马上加快项目进展(一) - 全栈篇 用ABP只要加人即可马上加快项目进展(二) - 分工篇 用ABP遇到难题项目受阻时如何避免项目延迟 介绍副讲师和…
为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7295533.html ABP是 ASP.NET Boilerplate Project 的简称.ABP是基于DDD(领域驱动设计)的框架.ABP包含众多组件,包括依赖注入.动态API.审计日志.权限控制等等.在大部分的ABP教材中,会推荐使用模板(https://aspnetboilerplate.com/Templates)来创建ABP工程.然而在实际使用中(至少在我的情况里…
为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoMapper如何在ABP框架中使用的面纱. 因为这里演示的是用ABP框架搭建的项目,本博客的讲解的前提是假设你有了ABP基础,所以,如果您还不了解ABP框架,请查看我的ABP框架的系列博客,请点击这里. 下面正式开始今天的讲解. 首先,让我们稍微回忆一下AutoMapper的知识点. 问:什么是Aut…
本文示例源代码地址https://github.com/lcyhjx/abp-training 上一篇我们已经对ABP是什么,能做什么.有了一个印象.那么接下来我们将动手使用ABP框架快速开发一个API,你将会发现使用ABP框架有多么便利,会实实在在感受到它的魅力. 环境要求 Visual Studio 2017 SQL Server .Net Core SDK 创建应用程序 我们使用ABP模板来创建应用程序,访问http://www.aspnetboilerplate.com/Template…
需要最新源码,或技术提问,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 简介 用abp 框架快两年了,用它完成了多个项目,作为CTO同时也作为架构师,在应对中小型项目时候,我们通常选择ABP(内部大型的物联网架构采用自己的框架),感觉这款框架真心不错.虽然开源社区有也有很多写了几套代码生成器,但是我用完之后,总是感觉不能达到我自己想要的效果,我个人还是比较喜欢一步到位,批量生成,所以就写了这套基于codesmith…
技术要求 在开始使用 ABP 框架之前,您需要在计算机上安装一些工具. IDE/编辑器 本书假设您使用的是Visual Studio 2022(支持 .NET 6.0 的 v10.0)或更高版本.如果你还没安装,社区版是在https://visualstudio.microsoft.com上免费提供.当然,你也可以使用你喜欢的集成开发环境(IDE)或编辑器,只要它支持使用 C# 进行 .NET 程序开发. .NET 6 SDK 如果你已经安装Visual Studio,你也会同时安装.NET 软…
AutoMapper在ABP框架中的使用说明 为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoMapper如何在ABP框架中使用的面纱. 因为这里演示的是用ABP框架搭建的项目,本博客的讲解的前提是假设你有了ABP基础,所以,如果您还不了解ABP框架,请查看我的ABP框架的系列博客,请点击这里. 下面正式开始今天的讲解. 首先,让我们稍微回忆一下A…
2019 年起如何开始学习 ABP 框架系列文章-开篇有益 [[TOC]] 本系列文章推荐阅读地址为:52ABP 开发文档 https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp 本文的目的是为了让刚刚接触 ABP 框架的同学或者准备接触 ABP 框架的同学,能够理解和搞明白 ABP 框架到底是怎么回事,毕竟它发展了好几年的时间.社区中有很多人做 了 ABP 的资料和文章包括我自己也建立了 52ABP,社区中还有 ABPplus 等等的内…
前面介绍了很多关于ABP框架的后台Web API 服务端,以及基于Vue+Element前端应用,本篇针对两者的联合部署,以及对部署中遇到的问题进行处理.ABP框架的后端是基于.net core5.0 的Asp.net core 应用,因此和常规的Asp.net core 应用部署一样:而Vue+Element前端应用则是基于nodejs的应用,部署方式又有所不同,这里介绍基于Nginx的部署. 1.部署基于.netcore5.0的ABP框架后台Api服务端 1)安装.net core 环境 在…
本文首发于个人博客(https://blog.zhangchi.fun/) 在进行框架的选型时,经常会听到"***框架太重了"之类的声音,比如"Abp太重了,不适合我们...".事实上,Abp框架真的很重吗? 框架的"轻"和"重",我没有在网上找到明确的定义,通过阅读一些技术博客,大致可以把框架的"轻"和"重"通过以下几个方面进行区分: 所依赖程序集的数量 所实现的功能的多少 上手难度及…
ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQLite等等的,我在上篇随笔<ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据>已经详细介绍过如何从SQLServer迁移支持Mysql数据库的操作,同时介绍如何从SQLServer基础数据,通过Navicat工具,实现数据库迁移到Mysql上去.本篇随笔…
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技术架构,(2)为什么我们要打造单页应用,(3)本系列项目的技术架构和开发计划.希望通过这三个问题,我们能够对本项目产生一个全局视角. 实现一个常见的MEAN全栈项目的核心就是RESTful API.这个接口通常是用MongoDB, Express, Node.js实现的,而单页应用(SPA)由AngularJ…
在一般系统开发中,我们一般要借助于高度定制化的代码生成工具,用于统一代码风,节省开发时间,提高开发效率.不同的项目,它的项目不同分层的基类定义不同,我们需要在框架基类的基础上扩展我们的业务类代码,尽量根据已有数据库设计的信息,完整.详细的重现我们需要的编码工作,一方面引入必要的关系和代码,一方面保留一定的注释代码供了解使用,站在开发者的角度上思考代码如何编写,这样才能够快速.高效的增量化开发我们的业务表应用模块. 1.数据库的设计 一般情况下,我们往往喜欢基于数据库建模我们的业务表存储内容,数据…