net core 2.0快速入门笔记(72页).doc

上传人:1595****071 文档编号:35409603 上传时间:2022-08-21 格式:DOC 页数:72 大小:5.07MB
返回 下载 相关 举报
net core 2.0快速入门笔记(72页).doc_第1页
第1页 / 共72页
net core 2.0快速入门笔记(72页).doc_第2页
第2页 / 共72页
点击查看更多>>
资源描述

《net core 2.0快速入门笔记(72页).doc》由会员分享,可在线阅读,更多相关《net core 2.0快速入门笔记(72页).doc(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-net core 2.0快速入门笔记-第 72 页A core2.0默认教学计划-基础入门篇笔记-又名七日速成本笔记是个人学习期间整理,因水平有限,不对之处敬请指教!教程分初级篇、高级篇。本文都是基于该视频教程整理,这是基础篇,购买高级篇的基础篇自动就可以看了,不需要单独购买基础篇,付费后会邀请加入微信讨论群,像张善友等大佬都在其中。视频地址在文末。第1章: 介绍与引入任务1: 课程介绍任务2: 环境安装VS2017 + ASP.NET Core 2.0任务3: 在控制台创建ASP.NET Core应用程序控制台下创建ASP.NET Core应用程序的常用命令学习任务4: 在VS2017中创

2、建ASP.NET Core应用程序略。任务5: 部署到IISIIS环境配置。任务6: 准备CentOS和Nginx环境虚拟机安装CentOS,安装网卡、Nginx,开启http、https,开启80端口命令。任务7: 在CentOS上安装.NET Core运行时微软文档:任务8: 部署到CentOSFTP上传至服务器;Nginx 80端口映射至.NET Core的端口,如5000端口,实现转发。第2章: 配置管理任务9: 配置介绍任务10: 命令行配置1. VS2017创建控制台应用程序2. NuGet引用microsoft.aspnetcore.all程序包3. Using 命名空间,定义b

3、uilder,拿到configuration4. 修改程序,使用默认值5. 运行示例:程序目录dotnet CommandLineSample.dll name=jim age=22任务11: Json文件配置(控制台示例)1. 建立class.json文件2. 路径问题需要修改一下class.json文件属性,确保编译时拷贝到编译目录中。3. .AddJsonFile(class.json);4. 注意数组的的读取方法任务12: Bind读取配置到C#实例(MVC架构实现)通过Bind方法将.json配置文件内容映射(赋值)到.class实体类1. 类2. Json文件3. program文

4、件中WebHost.CreateDefaultBuilder(args)语句自动将settings.json文件加入到配置池中。4. Startup构造函数输出任务13: 在Core Mvc中使用Options通过Options将.json配置文件内容映射(自动匹配)到.class实体类1. 建立MVC架构,如Controllers、Views等文件夹2. 创建控制器、视图页控制器依赖注入视图页调用3. 将配置文件数据匹配到实体4. 引入中间件services.AddMvc();默认路由app.UseMvcWithDefaultRoute();任务14: 配置的热更新热更新:即修改相关配置文件

5、(如appsettings.json等)不需要重新启动应用程序就能读取到最新的配置信息。热更新默认是开启的,但是要将Ioptions替换为IoptionsSnapshot后才能读取到最新配置信息。public HomeController(IOptionsSnapshot options)/IOptions在控制台应用程序中,Add方法(如AddJsonFile等)的第三个参数默认值为true,即启用热更新功能。MVC中关闭默认热更新的方法,修改Program.cs文件,如下:任务15: 配置框架设计浅析1. 创建:配置建造器(ConfigurationBuilder)2. 准备source(

6、json,内存,xml等等)3. 将source资源指针(文件名)添加到ConfigurationBuilder,此时只是将所需的资源罗列给配置建造器(ConfigurationBuilder),并未真正加载。builder.Add(“source”)4. 实例化配置文件:var configruation=builder.Builder()将所有source内容加载到运行时的配置文件中configruation5. 获取配置文件中的数据内容。 configruation“key”或数组configurationStudents:0:name /直接使用 services.Configure(

7、Configuration)/Ioptions方法 Configuration.Bind(myclass)/Bind方法现有Source及支持驱动,如果需要自定义,必须继承相应的接口去实现。第3章: 依赖注入任务16: 介绍简易理解:来自:背景:需求发生变化的时候,代码是肯定需要改动的,那么怎么改,改哪里就有技巧了。使用依赖注入的方式可以保证代码的改动压缩在最小的范围之内。这大概就是DI出现的原因。概念:依赖注入(Dependency Injection)是用于实现控制反转(Inversion of Control)的最常见的方式之一。(要注意的是,依赖注入只是控制反转的一种实现方式。控制反转

8、还有一种常见的实现方式称为依赖查找。)依赖注入(DI)和控制反转(IOC)基本是一个意思,因为说起来谁都离不开谁。解析:简单来说,A依赖B,但A不控制(A的代码段不会出现)B的创建和销毁,仅使用B,那么B的控制权交给A之外处理,这叫控制反转(IOC)。而A要依赖B,必然要使用B的instance(实例),那么 通过A的接口,把B传入; 通过A的构造,把B传入; 通过设置A的属性,把B传入;这个传入过程叫依赖注入(DI)。那么什么是IOC Container?(IOC容器)随着DI的频繁使用,要实现IOC,会有很多重复代码,甚至随着技术的发展,有更多新的实现方法和方案,那么有人就把这些实现IOC

9、的代码打包成组件或框架,来避免人们重复造轮子。所以实现IOC的组件或者框架,我们可以叫它IOC Container。视频作者文章:视频作者文章精要: 一个设计原则:依赖于抽象,而不是具体的实现。 容器负责两件事情: 绑定服务与实例之间的关系 获取实例,并对实例进行管理(创建与销毁) 在.NET Core中DI的核心分为两个组件:IServiceCollection和 IServiceProvider。 IServiceCollection 负责注册 IServiceProvider 负责提供实例 .NET Core DI 为我们提供的实例生命周其包括三种: Transient: 每一次GetS

10、ervice都会创建一个新的实例 Scoped: 在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内) Singleton :整个应用程序生命周期以内只创建一个实例 建议先看文章,因为视频主要以补充文章内容为主。任务17: 从UML角度来理解依赖1. 什么是依赖(见图)2. 显示依赖与隐式依赖隐式依赖:显示依赖:(优点:清晰、统一,但未实现控制反转)3. 依赖倒置原则:概念:高层业务不依赖于低层业务的具体实现,而依赖于具体的抽象(接口)。应用场景:底层业务发生变更时,上层代码不需要改动。例如当MSS

11、QL变更为MYSQL时。争议:一般的类是否需要写接口呢?我的类不能能变动那么快啊?不能一会就变成另一个数据库了呀?所以没必要。答疑:进行单元时,就是一种替换持久化的操作,所以,建议使用接口。任务18: 控制反转注意:控制反转不是依赖倒置!依赖倒置:强调要依赖接口而不是实例。控制反转:强调仅使用依赖而不去管依赖的创建、销毁等操作,依赖的创建、销毁交到外部(容器)去管理。改进后,实现了控制反转,如图:任务19: 单元测试创建单元测试,请看视频。依赖注入在单元测试中体现出了价值。任务20: DI初始化的源码解读(理解不了也要过一遍)任务21: 依赖注入的使用无视频内容,就是视频作者的文章:第4章:

12、ASP.NET Core HTTP 介绍任务22: 课程介绍任务23: Http请求的处理过程任务24: WebHost的配置1. VS新建一个空网站2. 修改program文件3. 新建settings.json文件4. 添加应用程序参数5. 修改startup文件,输出配置信息引入命名空间:using Microsoft.Extensions.Configuration;6. 运行结果7. 配置默认启动URL修改program文件但是修改后再通过vs启动就不能自动打开浏览器了,需要自己手工输入。解决:此处不要添加这行代码,而是在项目属性中去修改URL任务25: IHostEnvironme

13、nt和 IApplicationLifetime介绍1. IhostEnvironment读取配置输出2. IapplicationLifetime几个事件执行顺序作者关于WebHost的文章,可以深入学习一下:(1)(2)任务26: dotnet watch run 和attach到进程调试这一节用到VS Code软件讲解,主要就是一个调试技巧。1. 安装VSCode、Git软件下载安装都很快,不像VS似的2. 新建命令:dotnet new web name HelloCore新建一个空的MVC网站3. 运行命令:dotnet run浏览器中手工输入5000端口下运行。4. 调试(修改文件

14、后自动重启运行网站程序)修改:.csproj文件加入:5. 使用命令:dotnet restore 来Restore packages,VS中应该可以自动Restore packages6. 使用dotnet watch run运行程序7. 这样就可以一边修改代码,一边查看运行结果了,修改完后自动重启。8. 其它9. 版本https:/www.nuget.org/packages/Microsoft.DotNet.Watcher.Tools这里有dotnet watch的版本,当前为2.0.2,变更后运行一下dotnet restore命令即可。10. 图标控制方式:注:这里如果现实没有配置,

15、那就重新打开VSCode看一下。选择当前工程目录下的exe。任务27: Middleware管道介绍1. 总览:2. 运行过程3. 构建管道app.use()、app.run()其中都有一个next参数,管道一是无返回值调用,处理完自己的业务处理,然后调用下一个管道,管道二是有返回值调用,自己不去处理具体业务,而是将处理的业务封装交给其他处理函数去做。调用next则继续执行下一个管道,否则将终止执行。注意两图对比4. 路由管道app.map()方法运行查看:任务28: RequestDelegate管道实现思路讲解源码,下一节将自动动手写源码。任务29: 自己动手构建RequestDelega

16、te管道这节课主要是讲解自动写一个RequestDelegate管道的实现方法,帮助理解执行过程。1. VSCode新建一个控制台项目命令:dotnet new console -name MyPipeLineVSCode打开文件夹2. 新建Context.cs、RequestDelegate.cs文件Context.cs内容RequestDelegate.cs内容3. Program.cs文件修改如下执行结果4. 同上一节课,如果某个管道不调用下一步命令next,则管道阻塞(结束)执行结果任务30: RoutingMiddleware介绍以及MVC引入返回到任务27的MVC项目需要引入命名空

17、间:Microsoft.AspNetCore.Routing方法一: 运行后localhost:5000/action方法二:直接接收一个Router运行后localhost:5000/action视频后半段通过源码进一步讲解执行过程。第5章: 认证与授权任务31: 课时介绍任务32: Cookie-based认证介绍通常用于网站应用任务33: 34课 :AccountController复制过来没有移除Authorize标签无视频内容作者注:在我调试的过程中把Authorize标签一移除掉了,但是这段内容在视频中没有体现。如果大家也在AccountController上打上 Authoriz

18、e标签的话,就会一直循环跳转,希望后面的同学注意一下这个情况 。任务34: Cookie-based认证实现1. 创建MVC项目2. 新建AdminController.cs控制器3. 创建视图修改Index.cshtml文件内容如下4. 运行dotnet run命令,可以正常访问但是我们需要的是经过授权以后才能访问Admin的Index视图,如何做呢?继续。5. Admin控制器添加认证机制6. Startup.cs文件引入命名空间using Microsoft.AspNetCore.Authentication.Cookies;using Microsoft.AspNetCore.Auth

19、entication;启动网站,将不再能直接访问Admin控制器,而是跳转到指定登录界面7. 接下来模拟一个登录的过程创建AccountController.cs控制器8. 访问http:/localhost:5000/Admin后自动跳转到http:/localhost:5000/Account/Login?ReturnUrl=%2FAdmin这里只要访问该网页就自动登录了,所以再次访问http:/localhost:5000/Admin就会打开页面了。9. 如果不想实现上述自动登录的效果,可以修改Account控制器的Login方法名这时如果要登录就要手工在地址栏输入http:/local

20、host:5000/Account/makeLogin了。10. http:/localhost:5000/Account/Logout是登出方法。11. 修改默认登录指向修改startup.cs文件任务35: JWT 认证授权介绍应用场景:移动端应用或前后端分离时(webapi项目)什么是JWT?包含三部分。JWT官方网站:https:/jwt.io任务36: 应用Jwtbearer Authentication1. 新建webapi项目2. 引入dotnet watch run保存,然后运行命令:dotnet restore3. 用到一个api调试工具:Postman,网站:运行结果4.

21、添加访问认证机制5. 添加配置类文件夹类文件代码6. 通过APPsettings.json文件配置类信息注意:SecretKey必须大于16个字符7. 添加认证引入命名空间配置(视频中未体现Configuration.GetSection(“JwtSettings”),而是在下一节中做的勘误,这里要注意!添加认证中间件管道8. 运行Postman中测试,显示401,未授权,成功阻止了未授权访问下一节生成Token,实现授权访问。任务37: 生成 JWT Token1. 新建ViewModel2. LoginViewModel.cs一个用户名,一个密码。3. 新建验证授权控制器代码4. 安装Nu

22、Get安装完毕后重新加载一下找到查看-命令面板输入,选择第一个输入搜索内容选择版本(一般选择最大的就行)选择安装在哪个项目中接下来会提示安装成功,配置文件中会出现点击Restore即可或者和视频中一样去手动输入命令Restore一下5. 接下来就可以引入命名空间(using System.IdentityModel.Tokens.Jwt;)生成并返回Token6. Dotnet watch run后,使用Postman访问,最后惊奇的发现:404,很是尴尬,评论里也有相关说明,可能是视频中省略的比较多评论区(【1、Token方法中的参数,loginviewmode参数,在传入方法体时,需要对u

23、ser、password两个属性进行初始化值,同时两个属性不要置为required。否则用postman测试时,将返回badrequest;2、示例代码中,AuthorizeController并没有指定路由,引发了404错误,需要在在Configure方法中,在使用usemvc中间件时,指定路由;又或者还是保持UseMVC默认,在Controller上面指定路由,如Route(api/controller)这种情况也需要在Token方法上也要声明Route注解属性,否则的话也会引发404错误。】博客园文章可以参考一下:个人解决思路(视频中的源码见第10、11条):本案例只是为了测试Token

24、的生成,所以直接在Token方法中赋值来实现,默认只要访问就可以拿到Token。代码如下(命名空间未做改动,重新做了一个Controller文件,AuthController.cs)调整一下默认路由7. Dotnet watch run后,使用Postman访问:http:/localhost:5000/Auth/Token拿到Token了。8. Postman中再新开一个窗口,如下传入Token以后可以看到拿到授权后才能访问的内容了。9. Jwt.io官网校验部分说明:jwt.io官网首页上的校验方式发生了一些变化,没法做到和视频中一样的效果。10. 修正:视频中AuthorizeContr

25、oller实际代码测试通过命名空间部分代码部分(看不清请放大word的显示比例)11. Postman调用图示任务38: JWT 设计解析及定制如何以现存系统中团队或个人自定义的Token替换Netcore中的Token?如果全新开发系统本节可以略过。1. 源码讲解2. 改造3. MyTokenValidator.cs文件略。任务39: Role以及Claims授权基于角色授权(过期的,逐步淘汰的)基于Cliams授权(鼓励的,提倡的)1. 基于角色相同角色获得授权后才可以访问。2. 基于Cliams授权要求必须有Claim才能访问现在运行一下网站,不管角色是admin还是user都不能再获取

26、到值了。添加claims再次运行,便可以拿到结果了。第6章: ASP.NET Core MVC任务40: 介绍制作一个完善的注册登录等操作的网站,用到之前几章学到的内容。任务41: Individual authentication 模板(个人身份验证)1. 使用命令查看新建选项这里用到两个a.验证机制b.数据库2. 创建项目项目目录3. 默认创建了一个MSSQL数据库连接4. 创建数据库命令:dotnet ef database update打开SQL Server 管理工具,可以看到生成的数据库及默认的数据表注意:未生成数据库的请检查一下连接字符串5. 运行一下网站dotnet runht

27、tp:/localhost:5000/可以看到网站能够正常运行了,可以注册、登录测试一下任务42: EF Core Migration任务43: Identity MVC:UI本节开始,自己敲代码实现Individual authentication认证,加深对权限认证流程的认识。从(任务34: Cookie-based认证实现)最终实现的代码入手,实现注册、登录UI。简化处理,一步步达到默认生成项目的效果。本节开始换用VS2017,VSCode的感知功能不是很好。1. AccountController中添加注册登录方法2. 添加注册、登录视图(View)Register.cshtmlLog

28、in.cshtml代码asp-for用于绑定Model3. 前台增加注册、登录的入口连接,修改Shared目录下_Layout.cshtml文件,添加代码4. 添加ViewModels代码用于绑定5. 添加引用,Register.cshtml文件6. 运行一下网站注册界面就做好了任务44: Identity MVC: EF + Identity实现1. 新建Data文件夹,主要存放EF相关操作类等2. Data文件夹下添加ApplicationDbContext.cs类代码3. Models文件夹下添加两个类ApplicationUser.cs代码ApplicationUserRole.cs代

29、码4. 修改ApplicationDbContext.cs5. 修改Startup.cs命名空间注册上图中options.LoginPath=/Account/Login;/未登录时跳转地址appsettings.json加入数据库连接字符串6. 修改AccountController.cs,实现注册功能命名空间构造函数注册7. 创建数据库查找安装Microsoft.EntityFrameworkCore.tools调出控制台输入初始化命令(这里是在VS2017中,与VSCode命令不一样,前面课程有对照)命令:add-migration init执行完后项目中会出现migration文件夹再

30、执行命令生成数据库:update-database8. 运行网站,注册界面注册一个用户,查询数据表AspNetUsers发现注册成功。任务45: Identity MVC:注册逻辑实现实现注册后自动登录及登录后显示用户登录信息修改AccountController.cs文件,实现注册后自动登录修改_Layout.cshtml,实现登录后显示用户信息运行网站,并注册一个账号,自动跳转到首页,并显示用户登录名。任务46: Identity MVC:登录逻辑实现登录方法登出方法修改_Layout.cshtml,实现未登录时显示登录注册链接,登录后显示用户名登出链接。完善Login.cshtml文件运

31、行网站,可以进行登入登出操作测试。任务47: Identity MVC:ReturnUrl实现本节实现的是登录后跳转到之前访问页面的功能.1. Register方法(getpost都需要)加入参数获取访问页面2. 添加私有方法,用于判断返回到具体哪个地址3. 注册登录后的跳转代码段修改为4. 修改提交表单 5. 同理修改Login处理相关程序6. 运行网站,访问http:/localhost:56097/admin,自动跳转到登录界面,输入正确的用户名密码后自动跳转回http:/localhost:56097/admin。任务48: Identity MVC:Model后端验证1. 修改Reg

32、isterViewModel.cs,添加后端验证2. 复制registerViewModel.cs为LoginViewModel.cs修改Login.cshtml,AccountController.cs等文件的绑定3. Cshtml页面添加前端提示占位符4. 修改register方法5. 运行网站,不输入用户名密码直接点击登录按钮测试,将返回这里是服务端返回的错误信息。6. 同理,修改注册处理程序相关代码7. Startup.cs中开启密码策略8. 视图页中添加错误信息汇总标签9. 运行网站,注册界面不填写任何内容直接点击注册按钮,将返回同理可以处理Login.cshtml文件。注意:这里如

33、果输入了用户名,但是密码和确认密码输入不一致,将不会返回服务器端错误信息,也不会注册成功,因为内容判断逻辑代码在控制器中还没有写。10. 处理异常,比如上面提到的必填字段都输入了,但是存在逻辑错误。控制器中添加统一的异常处理方法11. 异常时处理代码12. 再次运行网站,注册测试,用户名、密码、确认密码都输入,但是密码和确认密码不一致,将会返回错误信息!任务49: Identity MVC:Model前端验证1. 前端验证主要用到_ValidationScriptsPartial.cshtml文件代码2. Login.cshtml中添加代码3. 运行网站并验证4. 同理处理注册前端验证。任务50: Identity MVC:DbContextSeed初始化1. 创建一个初始化类文件代码2. 调用新建一个WebHostMigrationExtensions.cs在program.cs中调用3. 删除原有数据库,运行网站数据将会自动创建默认添加一个djd的administrator用户,密码123.全文到此结束。此笔记基于jesse的视频课程基础篇。同时还有一个高级篇的关于 core做微服务实战的课程。视频地址: 购买的话可以踩着老学员的链接或优惠码QATG5,领50元的优惠券,不差钱的绕行。By:djd2018/6/15

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁