ABP框架个人开发实战(1)_环境搭建
前言
之前关注ABP框架有一阵子了,一直没有潜下心来实际研究一下。最近想自己建站,以后有自己的功能开发项目,可以在自己的站点上开发,并一步步的完善,所以找个比较好用的框架迫在眉睫,选来选去,决定用ABP框架。用群里的大大门的话来说,掌握了ABP,基本就可以飞天了~
先简单介绍下吧(以下部分资料来自群里资料,如有侵权,请告知):
ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。
ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序基础框架和项目模板。
ASP.NET Boilerplate 基于DDD的经典分层架构思想,实现了众多DDD的概念。
ABP的官方网站:http://www.aspnetboilerplate.com
ABP在Github上的开源项目:https://github.com/aspnetboilerplate
APB采用了以下技术:
服务器端:
l ASP.NET MVC 5、Web API 2、C# 5.0
l DDD领域驱动设计 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
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框架也有涉及,所以我采用这个框架,方便以后的功能集成和扩展。
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 审计日志(自动记录每一次接口的调用者和参数)
下载和还原nuget
我们去官网,找到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驱动,先安装驱动:MySQL Connector
nuget引入MySql.Data.Entity,这里最新版本跟EF有冲突,所以我降了一个版本,用的是MySql.Data.Entity 6.9.10
EF迁移配置里增加MySQL的生成器
最后,工具--程序包管理器控制台选中MyWebSite.EntityFramework
运行Update-Database,完成数据库的生成和初始化:
启动项目
好的,我们启动项目试试:
网站已经正常运行起来,我们后面将逐步研究解析框架牛逼的功能,并完善我们的网站的功能。今天只是作了一个简单介绍,希望大家更多关注ABP这个开源项目,希望有更多的朋友能去阅读源代码,然后欢迎跟我一起讨论。
资源
ABP框架个人开发实战(1)_环境搭建的更多相关文章
- iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术 ...
- iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleV ...
- iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)
环境搭建之StoryBoard(玩转UINavigationController与UITabBarController) 研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...
- AI应用开发实战 - 从零开始配置环境
AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到 https://gith ...
- Robot Framework自动化_环境搭建以及第一个用例
Robot Framework自动化_环境搭建以及第一个脚本 培训老师:肖能尤 2016/06/07 课程目的 一.Robot framework 环境搭建以及第一个脚本 课程内容 1 安装前准 ...
- [置顶] Django 微信开发(一)——环境搭建
Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...
- 手把手教你君正X2000开发板的OpenHarmony环境搭建
摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况 本文分享自华为云社区<君正X2000开发板的OpenHarmony环境搭建>,作者: 星 ...
- JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建
本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...
- .net转php laraval框架学习系列(一) 环境搭建
之前也没写过什么博客,可能文章结构比较混乱,想到那写到哪. 主要是把自己学习中的经验写下来. 为什么选择laravel框架,是因为laravel框架目前是Php最流行的框架,深入研究后发现和asp.n ...
随机推荐
- C++拷贝构造函数专题
C++拷贝构造函数 在定义任何C++类时,拷贝空置操作都是必要部分,类需要控制拷贝.赋值和销毁对象时发生的行为.拷贝构造函数的用途:当创建了一个新对象时,可以用另一个对象的数据初始化这个新建的对象. ...
- 【前端】深入浅出Javascript中的数值转换
由于Javascript是一门弱类型的语言,在我们的代码中无时无刻不在发生着类型转换,所以了解Javascript中的类型转换对于了解我们认识Javascript的运行原理至关重要. 本文主要从数值转 ...
- Docker入门之四搭建私有仓库
前面学习了下镜像和容器,今天来学习下仓库,来搭建本地私有仓库.当然可以使用远程的共有的仓库,但在企业中有的还是放在本地,所以需要搭建私有仓库. 一.搭建仓库 可以在容器中run一个仓库镜像. dock ...
- SQL Server 锁机制 悲观锁 乐观锁 实测解析
先引入一些概念,直接Copy其他Blogs中的,我就不单独写了. 一.为什么会有锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 1.丢失更新 A,B两个用户读同一数据并进行修改,其中 ...
- python使用装饰器@函数式化django开发
django是一个python web开发的框架.作为一个框架MVC的架构已经实现起来了.但是编码的时候你经常要进行进一步的抽象. AOP是一种称为面向切面的开发思想,意思是将部分功能代码在运行时动态 ...
- Elasticsearch学习笔记 一
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws. 本文参考和学习资料 <ES权威指南> 一.基本概念 存储数据到ES中的行为叫做 ...
- 怎么用SQL语句备份和恢复数据库?
BACKUP DATABASE "mydb" TO DISK ='C:\mybak.db' with init RESTORE DATABASE "mydb" ...
- 简说chart2.4的应用,以及Uncaught ReferenceError : require is not defined的解决
51呢最近在学习chart.js,然后呢就照着中文的帮助文档来然后就一直出Uncaught ReferenceError : require is not defined的问题查了挺多才知道是帮助文档 ...
- Javascript常见浏览器兼容问题
常见浏览器原生javascript兼容性问题主要分为以下几类: 一.Dom 1.获取HTML元素,兼容所有浏览器方法:document.getElementById("id")以I ...
- 【ASP.NET MVC 学习笔记】- 18 Bundle(捆绑)
本文参考:http://www.cnblogs.com/willick/p/3438272.html 1.捆绑(Bundle),一个在 View 和 Layout 中用于组织优化浏览器请求的 CSS ...