ABP项目启动及源代码结构
在整体介绍ABP项目之前我们需要从官方网站下载模板项目,下载以后放到一个本地目录下,启动VS打开源代码。具体下载的步骤如下:
一 创建ABP项目模板
1 进入官方网站然后选择特定的样板项目。
2 选择特定的平台以及特定的架构从而生成特定的模板。 
3 开始创建模板

二 创建数据库并启动运行项目
在拿到整个项目的源代码之后,我们仍然对整个项目缺少一个大概的了解,下面以我们创建的多页面的框架为例,在拿到一个陌生的开源项目之前我们总希望能够看到界面到底长成什么样?从而在大体上对这个项目有一个直观的认识,但是要做到这一步你需要进行下面的几个步骤。
1 打开解决方案,还原Nuget包。
具体步骤:在VS2017中打开创建项目--》右键解决方案--》还原Nuget包。
2 修改本地数据库的连接字符串。
可能对Asp.Net Core项目不熟悉的可能还不知道在哪里修改默认的配置,因为你会发现在整个项目中整个配置的方式和 Asp.Net MVC有一些不同,这里找到你将要启动的项目(示例中的启动项目为MyMultiPageWeb.Web.Host),然后双击打开appsettings.json,然后我们选择在这里配置数据库连接字符串。

这里需要特别注意的是Database是即将在SQL Server数据库中生成的数据库名称。
3 在Nuget管理控制台中执行Add-Migration命令。
A 打开程序包管理控制台 
B 选择默认的项目为XXX.EntityFrameworkCore
C 执行 Add-Migration 命令

在这个过程中,如果执行成功会在XXX.EntityFrameworkCore项目下面的Migrations文件夹下面生成对应的迁移记录。
4 执行Update-Database更新到数据库。
最后一步也是最重要的一步就是在控制台中输入Update-Database命令(注:后面可以不需要接任意参数),待更新完成之后便会生成数据库中的对应的表结构和种子数据,这样就算是完成整个数据库的生成工作了。

在这些表中还有一张数据库迁移的历史记录表(dbo_EFMigrationsHistory),其中记录了整个数据库历史迁移的数据。
三 项目启动界面截图
1 启动MyMultiPageWeb.Web.Host项目。

当前项目主要集成了时下非常流行的Swagger UI,主要用来生成Web API的文档,能够全方位的进行Web API的开发。
2 启动MyMultiPageWeb.Web.MVC项目
这个项目是一个完整的官方提供的ABP Web项目,下面通过几张截图来了解一下,项目启动时默认的用户名:admin 、密码为123qwe。

四 项目的源代码结构

整个项目的源代码结构如上面所示,上面是项目的源码,下面是项目的测试部分,整个项目的源代码是遵循DDD(领域驱动设计)的开发思想来进行组织的,下面就这些项目来进行说明:
MyMultiPageWeb.Application:应用层,主要包括定义和前台进行交互的接口层,调用领域层中对应的接口,默认包括:验证、配置、多租户、角色、用户、Session的一些操作,是整个Web API对外部提供调用的核心接口。

MyMultiPageWeb.Core:领域层,对现实业务进行抽象,通过调用ORM层的提供的接口来对当前的User、Role、Tenant等一系列的管理操作,并对外提供统一的Manager接口,从而供应用层进行相关的操作,另外还提供了诸如验证、配置、Feature、本地化等等一些列基础接口。

MyMultiPageWeb.EntityFrameworkCore:ORM层,该层顾名思义是使用EntityFrameworkCore来和SQL Server数据库进行交互的核心逻辑,包括一些常规的各种CRUD操作,以及通过Model First模式创建数据库,为数据库提供种子数据等一系列操作。

MyMultiPageWeb.Migrator:提供基于控制台的数据库迁移工具
MyMultiPageWeb.Web.Core:这个部分主要是另外一种WebAPI的访问方式,和应用层这种直接的映射的方式不同,在当前项目中为了更好地体现REST 风格的API ,我们会在我们的类中继承自AbpController这个基类,然后在当前的Controller类中通过[Route("api/[controller]/[action]")]这种方式来进行映射关系,这种风格更加符合REST的风格要求,在后面实际的项目中也会尽可能的采用这种方式。

MyMultiPageWeb.Web.Host:Swagger UI 集成Web API文档工具
MyMultiPageWeb.Web.Mvc:标准的Asp.Net Core MVC 项目,完整的前后端实现,这一部分将在后续进行一系列的分析和解读。
最后,点击这里返回整个ABP系列的主目录。
ABP项目启动及源代码结构的更多相关文章
- ABP项目概述
在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...
- 启动ABP项目
1.在官网下载ABP项目 2.打开项目选择解决方案,右击还原NuGet包 3.修改appsettings.json中的ConnectionStrings 例子"ConnectionStrin ...
- Android 源代码结构(转)
简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...
- Android 源代码结构
简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...
- Abp项目构建、swagger及代码生成器
前段时间在学习abp,在配置swagger时踩了不少坑,特此整理一下,方便同行参考.幸运的是又发现了神奇的代码生成器,分享下亲身经验. 觉得此博客非常有用的朋友可以在右侧赞助打赏下,非常感谢大家支持. ...
- 在基于AngularJs架构的ABP项目中使用UEditor
[前提须知] 读过此篇博客 了解angular-ueditor 了解ABP如何使用 会使用VS2017 [1.下载ABP模板] https://aspnetboilerplate.com/Templa ...
- Chrome源代码结构
首先,开始接触Chrome的童鞋可能有一个疑惑,Chrome和Chromium是同一个东西吗?答案是,Chrome是Google官方的浏览器项目名称,Chromium是Google官方对Chrome开 ...
- MINA2 源代码学习--源代码结构梳理
一.mina总体框架与案例: 1.总体结构图: 简述:以上是一张来自网上比較经典的图,总体上揭示了mina的结构,当中IoService包括clientIoConnector和服务端IoAccepto ...
- Android相框 与 源代码结构
一. Android 相框 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android执行环境层; -- 应用框架层; -- 应 ...
随机推荐
- PHP中的Traits用法详解
PHP是单继承的语言,在PHP 5.4 Traits出现之前,PHP的类无法同时从两个基类继承属性或方法.php的Traits和Go语言的组合功能有点类似, 通过在类中使用use关键字声明要组合的Tr ...
- 史上最全python面试题详解(四)(附带详细答案(关注、持续更新))
python高级进阶-网络编程和并发(?道题详解) 1.简述 OSI 七层协议. OSI是Open System Interconnection的缩写,意为开放式系统互联. OSI七层协议模型主要是: ...
- 折腾Java设计模式之策略模式
博客原文地址 简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式.简单理解就是一组算法,可以互换,再简单点策略就是封装算法. ...
- 欧洲AI规范先行,值得肯定与借鉴 --- 我看欧盟发布AI道德规范
欧洲AI规范先行,值得肯定与借鉴 --- 我看欧盟发布AI道德规范 [事件回放] 近日,据外媒报道,欧盟委员会(EC)任命的人工智能高级专家小组发布了AI开发和使用的道德草案,内容长达37页,提出可信 ...
- SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal
SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal 在笔者看来,MIGO这个事务代码里的Return Delivery主要用于采购退货场景. 先找到 ...
- NET Core应用中使用缓存
NET Core应用中使用缓存 .NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓 ...
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
- android Q build 变化
一 概述 android Q build变化整体上越来越严格,语法上之前能够使用的Q上将不能使用. 二 主要变化 2.1 'USER' 弃用 ‘USER’后面的值会被设置成‘nobody',andr ...
- SQL Server 数据库调整表中列的顺序操作
SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装 ...
- GitHub下载克隆clone指定的分支tag代码
需求描述: 这边有很多tag分支版本的代码,我想克隆下载指定版本到我服务器上面 例如:我想下载tag:1.4.1的代码 解决方法: 命令:git clone --branch [tags标签] [gi ...