由于公司现有框架需要升级,借鉴学习ABP,特此翻译并逐行测试源码,力求理解
原文地址
介绍
点击 生成模板是创建一个 ASP.NET Core + Angular 的ABP项目最简单的方法.记得要点击勾选Include module zero(ABP的组织结构管理模块).创建完成后下载项目,并按照下面的步骤来运行你的项目
(译注:
- vs2017下 社区版 就行了
- 安装的时候记得勾选相关组件 比如.net core
- 当然,由于abp使用的是core 2.0 所以你需要下载 并安装
- 数据库方面需要先自己创建好库,库的名称在创建完项目模板的时候页面上会提示连接字符串.)
ASP.NET Core 应用程序
用Visual Studio 2017+打开项目,并点击编译(build)
选择 'Web.Host' 项目 作为启动项
打开 nuget包管理控制台(Package Manager Console) 切换默认项目(Default project)为.EntityFrameworkCore, 输入Update-Database命令来创建数据库
运行程序,就会看到swagger-ui页面,表示成功运行
在这个模板中, 默认支持多租户. 你可以在 Core 项目的 module class 中关闭它
如果运行失败了,请重启你的VS,因为在首次还原nuget程序包的时候经常失败
Angular 应用程序
准备
Angular 应用程序需要安装下面几个工具:
- nodejs 6.9+ with npm 3.10+
- Typescript 2.0+
我们使用 angular-cli 来开发 Angular 应用程序
恢复程序包
打开命令行,切换到 angular 文件夹 一般就是包含了 *.sln 文件的文件夹,然后运行下面的命令 来还原程序包
npm install
(译注:
- npm装这个贼慢,推荐用cnpm,另外目前node的长期支持版本是6.1所以要用最新版不要用这个长期支持版本,
node -v
可以查看版本 - VS2017安装的时候会带上Typescript 2.3 检查一下有没有
tsc -v
如果有问题 可以自己安装npm install -g typescript
- webpack安装 检查一下有没有webpack
webpack -v
没有的话就安装一下npm install -g webpack
- 在执行 npm install 命令的时候 有个坑 需要手动安装 web-animations-js
npm install --save web-animations-js
- 这里给一个除了cnpm以外的方案:
npm config set registry https://registry.npm.taobao.org
这样就把地址指向了淘宝的镜像了,下载可以快很多)
注意:npm 在安装的时候会显示一些警告信息,这没有关系.如果你想要解决 你可以去 yarn ,并且我们也建议在你的电脑中使用它
运行
在命令行输入下面的命令
npm start
image.png
Angular 客户端同样支持 HMR (热替换Hot Module Replacement) . 在开发的时候你可以使用下面的命令 (替换 npm start) 来开启HMR:
npm run hmr
登录
现在你可以使用默认凭证登录系统。用户名:admin 密码:123qwe 。如果你想要以租户的形式来登录,首先要切换到租户的登录页面。有一个默认的租户:Default。当你登录成功后,会看到一个仪表盘的页面。
image.png这个仪表盘仅仅只是个demo你可以以这个为基础开发你的真实仪表盘
开发Angular应用程序
我们使用angular-cli工具来构建Angular解决方案。你可以使用 ng build
命令来发布你的项目。它会发布到默认文件夹。然后你也可以使用IIS或者任何你喜欢的webserver来运行它。
解决方案的细节和一些其他特色功能
以Token为基础的权限验证
如果你想要在一个移动应用中自定义某些API/服务,你可以使用以Token为基础的验证机制就像我们为Angular客户端做的一样。模板包含了JwtBearer Token验证基础功能模块
这里会使用Postman(谷歌插件)来展示请求和响应
权限验证
发送一个POST请求到 http://localhost:21021/api/TokenAuth/Authenticate 头文件设置 Context-Type="application/json" 如图
(译注:选 body,点最右侧的text下拉切换到JSON(application/json))
我们发送了usernameOrEmailAddress 和 password,如上面所见,返回的结果中包含了 token和 有效时间 (默认24小时,可以被修改).我们可以保存它,并在下次请求的时候使用.
关于多租户
API会默认以用户来工作.你可以在发送请求的时候在header中 带上Abp.TenantId来指定租户.它是个数字,并且1是默认租户的编号.
使用API
通过验证并获取了token后,我们就可以访问所有需要认证的action了.所有的服务都能够被远程直接调用.比如我们可以直接通过User service获取到用户列表
image.png发送一个GET请求到 http://localhost:21021/api/services/app/user/getAll 设置头 Content-Type="application/json" 和 Authorization="Bearer 你的Token" 所有之前界面上能用的功能,在这里都能通过API的方式使用
(译注:注意Bearer 后面的空格)
迁移工具
模板包含一个工具--Migrator.exe 可以简单的迁移你的数据库.你可以运行这个应用程序来 创建/迁移 主机和租户数据库
image.png这个程序会 从 它自己的appsettings.json文件 去获取主机的链接字符串 .这个字符串会和开头介绍过的
Web.Host 项目中的appsettings.json是一样的.确保配置文件中的连接字符串是你想要的.在获取了主机和连接字符串后,它会创建主机和数据库或者如果已经存在了就请求迁移.然后它会获取租户数据库的连接字符串并且执行迁移到这几个数据库.如果数据库没有指定,或者这个数据库已经迁移给了另外一个租户(出现在多租户共享数据库)则会跳过这个租户的数据库.
你可以同时在开发和生产环境使用这个工具来迁移数据库,替换EF本身的工具(它需要很多配置并且每次只能迁移一个)
单元测试
模板包含了测试基础框架.并且在Test项目中有一些测试.你可以查看他们并且很轻松地模仿.事实上,与其说他们是单元测试不如说是一些整合的测试,因为他们会调用所有的 ABP功能来 测试你的代码.(包括数据验证,权限验证,工作单元)
源码
这个模板是开源并且免费公布在Github: https://github.com/aspnetboilerplate/module-zero-core-template
网友评论