Considerations Source codes Contributors Contact ASP.NET Boilerplate is designed to help us to develop applications using best practices without repeating ourselves. DRY - Don't Repeat Yourself! is the key idea behind ASP.NET Boilerplate. ASP.NET样板的设…
在一般系统开发中,我们一般要借助于高度定制化的代码生成工具,用于统一代码风,节省开发时间,提高开发效率.不同的项目,它的项目不同分层的基类定义不同,我们需要在框架基类的基础上扩展我们的业务类代码,尽量根据已有数据库设计的信息,完整.详细的重现我们需要的编码工作,一方面引入必要的关系和代码,一方面保留一定的注释代码供了解使用,站在开发者的角度上思考代码如何编写,这样才能够快速.高效的增量化开发我们的业务表应用模块. 1.数据库的设计 一般情况下,我们往往喜欢基于数据库建模我们的业务表存储内容,数据…
世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息,以变化规律拥抱变化的内容.如对于服务端来说,后端代码中类的继承关系和特殊的接口名称规律,我们可以根据用户选中的表,获取表之间的字段和关系信息,生成各种DTO和接口类等代码文件:而前端界面来说,也是依照数据库的表信息.字段信息等内容,实现查询区域.查询列表.新增界面.编辑界面.查看界面.导入导出界面等…
大家好,我在<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>一文中提到,我将在12月份搞一场ABP框架活动,现向大家征集活动场地.志愿者.合作讲师\副讲师.   活动课程标题是:如何用ABP框架快速完成项目 这是内容大纲: ABP框架简介 快的定义! 用ABP一个人快速完成项目(含实操演练) 用ABP只要加人即可马上加快项目进展(一) - 全栈篇 用ABP只要加人即可马上加快项目进展(二) - 分工篇 用ABP遇到难题项目受阻时如何避免项目延迟 介绍副讲师和…
在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize(); PostInitialize(): ShutDown(); AddAbp<TStartipModule>() 在初始化 ABP 框架的时候,通过 services.AddAbp<AbpTestMulitPageWebHostModule>方法将启动模块作为泛型参数传入到 AddA…
在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize(); PostInitialize(): ShutDown(); AddAbp<TStartipModule>() 在初始化 ABP 框架的时候,通过 services.AddAbp<AbpTestMulitPageWebHostModule>方法将启动模块作为泛型参数传入到 AddA…
2019 年起如何开始学习 ABP 框架系列文章-开篇有益 [[TOC]] 本系列文章推荐阅读地址为:52ABP 开发文档 https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp 本文的目的是为了让刚刚接触 ABP 框架的同学或者准备接触 ABP 框架的同学,能够理解和搞明白 ABP 框架到底是怎么回事,毕竟它发展了好几年的时间.社区中有很多人做 了 ABP 的资料和文章包括我自己也建立了 52ABP,社区中还有 ABPplus 等等的内…
   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…
abp框架Excel导出--基于vue 目录 abp框架Excel导出--基于vue 1.技术栈 1.1 前端采用vue,官方提供 1.2 后台是abp--aspnetboilerplate 2. Excel导出需求 3. 升级日志Excel导出 4. 技术实现方案 4.1 后台 4.1.1 EPPlus导出静态方法 4.1.2 生成升级日志列表 4.1.3 将升级日志列表放到Excel导出静态方法中去 4.1.4 abp框架中前后端分离模式文件流传输 4.2 前端 4.2.1 vuex的act…
昨天发表了<如何用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 后端.…
一个人写代码不需要担心会和别人的代码冲突, 不需要做代码合并, 不需要担心自己的代码被覆盖. 但是多个人一起写代码就需要担心这些问题.   解决这些问题的方法很多, 比如用AzureDevOps(TFS)来进行代码管理和版本控制等等. 其中有两个办法就是, 业务模块组件化和微服务.   首先ABP是支持业务模块组件化的, 然而我并不推荐在ABP使用业务模块组件化, 因为: ABP更新太快了, 每2周更新一个版本. 除了ABP更新快, 其他技术\框架\工具也更新很快. 正如我在<如何用ABP框架快…
用ABP一个人快速完成项目有如下要点: 站在巨人的肩膀上 - 使用代码生成器 站在巨人的肩膀上 - 使用成熟控件框架, 一个框架不够就上两个, 两个不够就上三个 通过微服务模式而不是盖楼式来避免难度升级 运用BDD/TDD等先进方法论 运用DevOps 注意!一个人的项目不要执着于设计模式和DDD理论,一切都是自然而然, 要理论为你服务,而不是你为理论服务   要想快速完成项目, 站在巨人的肩膀上是一个很重要很好使的招数. 这节我们先讲代码生成.   首先我们先去https://www.52ab…
正如我在<程序员英语二三事(2) - 从听开始>里说的, 任何技术/工具/语言都有其适用场景和上下文环境. DDD理论同样是如此.   现在, 终于到了发挥DDD理论优势的时候啦!   一个人做一个项目不用担心代码风格不一致,不用代码看不懂别人写的代码 一个团队做项目就要考虑一致的代码风格,要保证能看得懂团队其他人的代码. 两个人一个用英语,一个用中文是很难交流的. DDD理论保证了大家使用同一种语言去交流.ABP保证了具体实施细节的一致. DDD理论相当于中文/英语,ABP相当于普通话或粤语…
正如我在<office365的开发者训练营,免费,在微软广州举办>课程里面所讲的, 站在巨人的肩膀上的其中一项就是, 尽量使用别人成熟的框架. 其中也包括了控件框架   abp和52abp都使用了成熟的UI框架. 其中52abp的angular版本使用了ng Zorro框架.   然而一个框架不能涵盖所有东西, ng Zorro框架也同样如此. 比如框架里面的table和select控件就缺少很多功能.   那怎么办? 一个框架不够, 那就上两个框架罗, 两个框架不够那就上三个框架罗.   P…
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 经过前面十二篇的基础教程,现在终于该做个总结了. 回顾 第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样既快速又准确,不会因为项目的搭建,而让新手畏而却步. 第二篇,我们说了实体类的创建,这是放在核心层(Core Layer)的,每个实体类最终和数据库中的表是一一对应的. 第三篇,我们讲了创建数据库上下文DbContext,这是连接应用程序和数据库的桥梁,是数据在应用和数据库之间流通的管道. 第四篇,有了前面的…
研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究ABP框架的熊熊烈火.@阳光铭睿的系列ABP教程我已经看完了,并且ABP官网(http://www.aspnetboilerplate.com/)的文档也看得差不多了.同时也发现了园友@阳光铭睿的系列ABP教程很多都是从官网翻译过来的,而且翻译水平有限,很难不让对英语稍微感兴趣的我挑刺儿(可能@阳光…
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一样的,就是一个系统具有选择多种语言的能力.比如,我们用的电脑或手机,可以在设置中选择语言,但是这并不影响系统已经具有的功能,只是显示的文字变成你所选语言的文字了.再比如说微信,功能设置里面也能选择语言,比如你选择的是英语,那么我们在中文看到的朋友圈就变成了"Moments". 想要更详细地…
ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 问题_02:升级V0.7.5.0 Abp等程序集后需要改的几个类 2015/12/18 更新 问题_03:升级V0.8.0.0~V0.8.2.0 Abp等程序集时需要注意的问题 2016/3/19更新 说明 这一篇文章会汇集所有使用ABP框架(包含Module-zero模块)搭建的项目进行升级时遇到…
为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7295533.html ABP是 ASP.NET Boilerplate Project 的简称.ABP是基于DDD(领域驱动设计)的框架.ABP包含众多组件,包括依赖注入.动态API.审计日志.权限控制等等.在大部分的ABP教材中,会推荐使用模板(https://aspnetboilerplate.com/Templates)来创建ABP工程.然而在实际使用中(至少在我的情况里…
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序运行的状态.本文主要介绍了调试工具WinDbg和抓包工具ProcDump的使用,并分享一个真实的案例.N年前不知谁写的代码,导致每一两个月偶尔出现CPU飙高的现象.我们先使用ProcDump在生产环境中抓取异常进程的Dump文件,然后在不了解代码的…
NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等.中等的工程师(甚至是高级工程师)很烦躁. 推荐一款土耳其大牛写的框架ASP.NET Boilerplate 简称 ABP,它适用于中小型项目(中小型代表了95%的项目,除非你的项目有几千万硬性的用户需求,或是几百万的并发). tkb至简 有对abp的简单介绍(也只是英文版翻译过来的),这里我简单介绍下abp.abp是一款DDD模式的框架,它具备分…
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js.简单地说,只要你会Moment.js,那么你就会Day.js! 但是我们知道的,Moment.js 的大小是200多KB,而Day.js的大小却是2 KB,瘦身很多但却几乎拥有同样强大的 API. 现在框架基本上都是多端应用的了,所以在ABP框架中整合Winform管理端.Vue&element的…
在前面随笔介绍了<在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理>的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一般通过签名表的方式(银行很常见)实现电子签名的处理.本篇随笔介绍如何基于Vue &Element前端的技术实现电子签名的处理. 1.实现电子签名的组件 我们知道,很多常见的功能,我们都会引入对应的组件来做页面功能,会非常简洁方便,毕竟不用重复制造轮子. 我们在Github上可以找到很多基于Vue前端技…
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 缓存 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-trips). 如果缓存在客户端或是代理,将减少对服务器的请求,减少带宽. 减少对数据库服务器的往返调用(round-trips). 当内容缓存在web服务器,能够减轻对数据库的请求. 减少网络带宽. 避免了重新生成可重用内容的时耗. 提高性能 因为缓存减少了round-trips, network t…
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看ABP框架理论研究总结(典藏版),完成了理论基础的教程,再次回头来完成这个实践基础的教程.这也算是理论实践相结合了吧!但是,不管理论基础也好,还是实践基础也罢,毕竟都是基础教程,所以,很大程度上是带领新手快速熟悉这个框架或者很多基本的用法.想要彻底地掌握这款框架,请期待我后面的ABP理论高级篇和 ABP框架实战高…
文档目录 本节内容: DTO 必要性 领域层的抽象 数据隐藏 序列化和延迟加载问题 DTO 约定和验证 示例 DTO和实体间自动映射 使用特性和扩展方法进行映射 辅助接口和类 Data Transfer Objects(DTO)用来在应用层和展现层之间传输数据. 展现层使用一个DTO调用一个应用服务方法,然后应用服务使用服务对象执行一些特定业务逻辑,并返回一个DTO给展现层.因此,展现层是完全独立于领域层的.在一个理想的分层应用里,展现层不直接使用领域对象(仓储.实体...). DTO 必要性…
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建基于N层架构的多语言SPA应用程序 下载演示程序 演示程序截图如上所示. 内容摘要 介绍 使用 boilerplate 模板创建程序 创建实体对象 创建DbContext 创建数据库迁移 定义库 实现库 构建应用程序服务 构建 Web API 服务 开发SPA 本地化 单元测试 摘要 文章历史 参考…