以前关注ABP框架有一阵子了,一直没有潜下心来实际研究一下。最近想本身建站,之后有本身的功能开发项目,能够在本身的站点上开发,并一步步的完善,因此找个比较好用的框架迫在眉睫,选来选去,决定用ABP框架。用群里的大大门的话来讲,掌握了ABP,基本就能够飞天了~mysql
先简单介绍下吧(如下部分资料来自群里资料,若有侵权,请告知):git
ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。github
ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序基础框架和项目模板。ajax
ASP.NET Boilerplate 基于DDD的经典分层架构思想,实现了众多DDD的概念。sql
ABP的官方网站:http://www.aspnetboilerplate.com数据库
ABP在Github上的开源项目:https://github.com/aspnetboilerplatejson
服务器端:服务器
l ASP.NET MVC 五、Web API 二、C# 5.0架构
l DDD领域驱动设计 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)app
l Castle windsor (依赖注入容器)
l Entity Framework 6 \ NHibernate,数据迁移
l Log4Net(日志记录)
l AutoMapper(实现Dto类与实体类的双向自动转换)
客户端:
l Bootstrap
l Less
l AngularJs
l jQuery
l Modernizr
其余JS库: jQuery.validate、jQuery.form、jQuery.blockUI、json2
以上只是其中的主要一部分,其实其余项目框架的不少优秀设计,ABP框架也有涉及,因此我采用这个框架,方便之后的功能集成和扩展。
l 多语言/本地化支持
l 多租户支持(每一个租户的数据自动隔离,业务模块开发者不须要在保存和查询数时写相应代码)
l 软删除支持(继承相应的基类或实现相应接口,会自动实现软删除)
l 统一的异常处理(应用层几乎不须要处理本身写异常处理代码)
l 数据有效性验证(Asp.NET MVC只能作到Action方法的参数验证,ABP实现了Application层方法的参数有效性验证)
l 日志记录(自动记录程序异常)
l 模块化开发(每一个模块有独立的EF DbContext,可单独指定数据库)
l Repository仓储模式(已实现了Entity Framework、NHibernate、MangoDB、内存数据库)
l Unit Of Work工做单元模式(为应用层和仓储层的方法自动实现数据库事务)
l EventBus实现领域事件(Domain Events)
l DLL嵌入资源管理
l 经过Application Services自动建立Web Api层(不须要写ApiController层了)
l 自动建立Javascript 的代理层来更方便使用Web Api
l 封装一些Javascript 函数,更方便地使用ajax、消息框、通知组件、忙状态的遮罩层
l “Zero”的模块,实现了如下功能:
身份验证与受权管理(经过ASP.NET Identity实现的)
l 用户&角色管理
l 系统设置存取管理(系统级、租户级、用户级,做用范围自动管理)
l 审计日志(自动记录每一次接口的调用者和参数)
咱们去官网,找到Free Startup Templates,点击Create Your Project。
这里咱们选择咱们的运行环境,我选择的是ASP.NET MVC 5.x,默认选择单页开发模式和EF,给本身的项目取个名字,而后点击建立。
官网会自动打包你的项目,下载便可。
咱们将项目文件解压,查看ABP最新的版本是3.1.2,由于用的是.net 4.6.1,因此我用vs 2017打开。
项目组织结构以下:
一共有5个主要的工程,1个测试工程,1个工具类工程。主要介绍下这几个主要的工程项目(涉及到DDD,领域驱动设计的概念,不清楚请先百度):
MyWebSite.EntityFramework-基础设施层
MyWebSite.Core-领域层
MyWebSite.Application-应用层
MyWebSite.WebApi,MyWebSite.Web-WEB和展示层
接下来,咱们须要用nuget来还原一下相关引用,
新版本有个小问题,还原之后,Abp.AutoMapper 没有能正常识别,这里删除,再从新引用packets包里的dll就行。
我本地用的数据库是mysql,若是不须要迁移数据库的,请跳过这一段。
若是没有MySQL驱动,先安装驱动:MySQL Connector
nuget引入MySql.Data.Entity,这里最新版本跟EF有冲突,因此我降了一个版本,用的是MySql.Data.Entity 6.9.10
EF迁移配置里增长MySQL的生成器
最后,工具--程序包管理器控制台选中MyWebSite.EntityFramework
运行Update-Database,完成数据库的生成和初始化:
启动项目
好的,咱们启动项目试试:
网站已经正常运行起来,咱们后面将逐步研究解析框架牛逼的功能,并完善咱们的网站的功能。今天只是做了一个简单介绍,但愿你们更多关注ABP这个开源项目,但愿有更多的朋友能去阅读源代码,而后欢迎跟我一块儿讨论。