前言

之前关注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这个开源项目,希望有更多的朋友能去阅读源代码,然后欢迎跟我一起讨论。

资源

GitHub项目源码

ABP框架个人开发实战(1)_环境搭建的更多相关文章

  1. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  2. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  3. iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

  4. AI应用开发实战 - 从零开始配置环境

    AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到 https://gith ...

  5. Robot Framework自动化_环境搭建以及第一个用例

    Robot Framework自动化_环境搭建以及第一个脚本 培训老师:肖能尤 2016/06/07 课程目的 一.Robot framework 环境搭建以及第一个脚本 课程内容 1    安装前准 ...

  6. [置顶] Django 微信开发(一)——环境搭建

    Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...

  7. 手把手教你君正X2000开发板的OpenHarmony环境搭建

    摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况 本文分享自华为云社区<君正X2000开发板的OpenHarmony环境搭建>,作者: 星 ...

  8. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  9. .net转php laraval框架学习系列(一) 环境搭建

    之前也没写过什么博客,可能文章结构比较混乱,想到那写到哪. 主要是把自己学习中的经验写下来. 为什么选择laravel框架,是因为laravel框架目前是Php最流行的框架,深入研究后发现和asp.n ...

随机推荐

  1. 化繁为简 经典的汉诺塔递归问题 in Java

    问题描述   在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑 ...

  2. Count Color 线段树

    Count Color Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  3. 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿

    前言:本文建议有一定Python基础和前端(html,js)基础的盆友阅读. 金秋九月,丹桂飘香,在这秋高气爽,阳光灿烂的收获季节里,我们送走了一个个暑假余额耗尽哭着走向校园的孩籽们,又即将迎来一年一 ...

  4. “一切都是消息”--MSF(消息服务框架)之【请求-响应】模式

    在前一篇, “一切都是消息”--MSF(消息服务框架)入门简介, 我们介绍了MSF基于异步通信,支持请求-响应通信模式和发布-订阅通信模式,并且介绍了如何获取MSF.今天,我们来看看如何使用MSF来做 ...

  5. TargetType Mismatch

    TargetType Mismatch 环境:windowsphone 8,silerlight toolkit, 页面报TargeType Mismatch错误或者 length 0,是因为Syst ...

  6. Ubuntu 定时任务中的环境变量设置

    背景 1,定时任务命令 crontab -e 2,默认的环境变量 SHELL=/bin/sh PATH=/usr/bin:/bin PWD=/home/owl LANG=zh_CN.UTF- SHLV ...

  7. Oracle Database 10g Express Edition系统文件损坏的解决办法

    1.检查错误代码:ora-10010 亦或是ora-10003,上网找响应的解决办法: 异常状态:登陆不上 常用的方法解决 (1)进入Oracle命令行模式 (2)Shutdown immedaite ...

  8. YYModel学习总结YYClassInfo(1)

    OC的run-time 机制,简直像是网络上的猫! 我在开发中很少用到,但是作为iOS开发 人家肯定会问这个东西,所以深入的学习了下. 对于 run-time的入手,YYModel的学习,简直让人美滋 ...

  9. CentOS 6.5 中安装 Mysql 5.6,并远程连接Mysql

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.在安装CentOS时,若选择的是Basic Server(可支持J2EE开发),则新安装好的CentOS系统中默认是已经安装了一个mysq ...

  10. NopCommerce 1. NopCommerce Application_Start启动过程

    这里简单介绍整个启动过程,其他具体的后续讲解 从Application_Start中执行开始,一开始执行EngineContext.Initialize(false); EngineContext 是 ...