收藏 分销(赏)

net-core-2.0快速入门笔记.doc

上传人:天**** 文档编号:4528196 上传时间:2024-09-26 格式:DOC 页数:77 大小:7.28MB
下载 相关 举报
net-core-2.0快速入门笔记.doc_第1页
第1页 / 共77页
net-core-2.0快速入门笔记.doc_第2页
第2页 / 共77页
net-core-2.0快速入门笔记.doc_第3页
第3页 / 共77页
net-core-2.0快速入门笔记.doc_第4页
第4页 / 共77页
net-core-2.0快速入门笔记.doc_第5页
第5页 / 共77页
点击查看更多>>
资源描述

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

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

3、程序,使用默认值5. 运行示例:程序目录dotnet mandLineSample、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文件中WebHost、CreateDefaultBuilder

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

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

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

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

8、控制反转(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: 每一次GetService都会创建一个新得实例 Scoped:

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

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

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

13、hostEnvironment读取配置输出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. 调试(修改文件后自动重启运行网站程序)修改:、csproj文件加入:5.

14、 使用命令:dotnet restore 来Restore packages,VS中应该可以自动Restore packages6. 使用dotnet watch run运行程序7. 这样就可以一边修改代码,一边查瞧运行结果了,修改完后自动重启。8. 其它9. 版本这里有dotnet watch得版本,当前为2、0、2,变更后运行一下dotnet restore命令即可。10. 图标控制方式:注:这里如果现实没有配置,那就重新打开VSCode瞧一下。选择当前工程目录下得exe。任务27: Middleware管道介绍1. 总览:2. 运行过程3. 构建管道app、use、app、run其中都有

15、一个next参数,管道一就是无返回值调用,处理完自己得业务处理,然后调用下一个管道,管道二就是有返回值调用,自己不去处理具体业务,而就是将处理得业务封装交给其她处理函数去做。调用next则继续执行下一个管道,否则将终止执行。注意两图对比4. 路由管道app、map方法运行查瞧:任务28: RequestDelegate管道实现思路讲解源码,下一节将自动动手写源码。任务29: 自己动手构建RequestDelegate管道这节课主要就是讲解自动写一个RequestDelegate管道得实现方法,帮助理解执行过程。1. VSCode新建一个控制台项目命令:dotnet new console na

16、me MyPipeLineVSCode打开文件夹2. 新建Context、cs、RequestDelegate、cs文件Context、cs内容RequestDelegate、cs内容3. Program、cs文件修改如下执行结果4. 同上一节课,如果某个管道不调用下一步命令next,则管道阻塞(结束)执行结果任务30: RoutingMiddleware介绍以及MVC引入返回到任务27得MVC项目需要引入命名空间:Microsoft、AspNetCore、Routing方法一: 运行后localhost:5000/action方法二:直接接收一个Router运行后localhost:5000

17、/action视频后半段通过源码进一步讲解执行过程。第5章: 认证与授权任务31: 课时介绍任务32: Cookiebased认证介绍通常用于网站应用任务33: 34课 :AccountController复制过来没有移除Authorize标签无视频内容作者注:在我调试得过程中把Authorize标签一移除掉了,但就是这段内容在视频中没有体现。如果大家也在AccountController上打上 Authorize标签得话,就会一直循环跳转,希望后面得同学注意一下这个情况 。任务34: Cookiebased认证实现1. 创建MVC项目2. 新建AdminController、cs控制器3.

18、创建视图修改Index、cshtml文件内容如下4. 运行dotnet run命令,可以正常访问但就是我们需要得就是经过授权以后才能访问Admin得Index视图,如何做呢?继续。5. Admin控制器添加认证机制6. Startup、cs文件引入命名空间using Microsoft、AspNetCore、Authentication、Cookies;using Microsoft、AspNetCore、Authentication;启动网站,将不再能直接访问Admin控制器,而就是跳转到指定登录界面7. 接下来模拟一个登录得过程创建AccountController、cs控制器8. 访问d

19、min后自动跳转到?ReturnUrl=%2FAdmin这里只要访问该网页就自动登录了,所以再次访问dmin就会打开页面了。9. 如果不想实现上述自动登录得效果,可以修改Account控制器得Login方法名这时如果要登录就要手工在地址栏输入akeLogin了。10. out就是登出方法。11. 修改默认登录指向修改startup、cs文件任务35: JWT 认证授权介绍应用场景:移动端应用或前后端分离时(webapi项目)什么就是JWT?包含三部分。JWT官方网站:任务36: 应用Jwtbearer Authentication1. 新建webapi项目2. 引入dotnet watch r

20、un保存,然后运行命令:dotnet restore3. 用到一个api调试工具:Postman,网站:运行结果4. 添加访问认证机制5. 添加配置类文件夹类文件代码6. 通过APPsettings、json文件配置类信息注意:SecretKey必须大于16个字符7. 添加认证引入命名空间配置(视频中未体现Configuration、GetSection(“JwtSettings”),而就是在下一节中做得勘误,这里要注意!添加认证中间件管道8. 运行Postman中测试,显示401,未授权,成功阻止了未授权访问下一节生成Token,实现授权访问。任务37: 生成 JWT Token1. 新建V

21、iewModel2. LoginViewModel、cs一个用户名,一个密码。3. 新建验证授权控制器代码4. 安装NuGet安装完毕后重新加载一下找到查瞧命令面板输入,选择第一个输入搜索内容选择版本(一般选择最大得就行)选择安装在哪个项目中接下来会提示安装成功,配置文件中会出现点击Restore即可或者与视频中一样去手动输入命令Restore一下5. 接下来就可以引入命名空间(using System、IdentityModel、Tokens、Jwt;)生成并返回Token6. Dotnet watch run后,使用Postman访问,最后惊奇得发现:404,很就是尴尬,评论里也有相关说明

22、,可能就是视频中省略得比较多评论区提到得解决方案:【1、Token方法中得参数,loginviewmode参数,在传入方法体时,需要对user、password两个属性进行初始化值,同时两个属性不要置为required。否则用postman测试时,将返回badrequest;2、示例代码中,AuthorizeController并没有指定路由,引发了404错误,需要在在Configure方法中,在使用usemvc中间件时,指定路由;又或者还就是保持UseMVC默认,在Controller上面指定路由,如Route(api/controller)这种情况也需要在Token方法上也要声明Route

23、注解属性,否则得话也会引发404错误。】博客园文章可以参考一下:个人解决思路(视频中得源码见第10、11条):本案例只就是为了测试Token得生成,所以直接在Token方法中赋值来实现,默认只要访问就可以拿到Token。代码如下(命名空间未做改动,重新做了一个Controller文件,AuthController、cs)调整一下默认路由7. Dotnet watch run后,使用Postman访问:拿到Token了。8. Postman中再新开一个窗口,如下传入Token以后可以瞧到拿到授权后才能访问得内容了。9. Jwt、io官网校验部分说明:jwt、io官网首页上得校验方式发生了一些变化

24、,没法做到与视频中一样得效果。10. 修正:视频中AuthorizeController实际代码测试通过命名空间部分代码部分(瞧不清请放大word得显示比例)11. Postman调用图示任务38: JWT 设计解析及定制如何以现存系统中团队或个人自定义得Token替换Netcore中得Token?如果全新开发系统本节可以略过。1. 源码讲解2. 改造3. MyTokenValidator、cs文件略。任务39: Role以及Claims授权基于角色授权(过期得,逐步淘汰得)基于Cliams授权(鼓励得,提倡得)1. 基于角色相同角色获得授权后才可以访问。2. 基于Cliams授权要求必须有C

25、laim才能访问现在运行一下网站,不管角色就是admin还就是user都不能再获取到值了。添加claims再次运行,便可以拿到结果了。第6章: ASP、NET Core MVC任务40: 介绍制作一个完善得注册登录等操作得网站,用到之前几章学到得内容。任务41: Individual authentication 模板(个人身份验证)1. 使用命令查瞧新建选项这里用到两个a、验证机制b、数据库2. 创建项目项目目录3. 默认创建了一个MSSQL数据库连接4. 创建数据库命令:dotnet ef database update打开SQL Server 管理工具,可以瞧到生成得数据库及默认得数据表

26、注意:未生成数据库得请检查一下连接字符串5. 运行一下网站dotnet run可以瞧到网站能够正常运行了,可以注册、登录测试一下任务42: EF Core Migration任务43: Identity MVC:UI本节开始,自己敲代码实现Individual authentication认证,加深对权限认证流程得认识。从(任务34: Cookiebased认证实现)最终实现得代码入手,实现注册、登录UI。简化处理,一步步达到默认生成项目得效果。本节开始换用VS2017,VSCode得感知功能不就是很好。1. AccountController中添加注册登录方法2. 添加注册、登录视图(Vie

27、w)Register、cshtmlLogin、cshtml代码aspfor用于绑定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代码Appl

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

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

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

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

32、误信息,也不会注册成功,因为内容判断逻辑代码在控制器中还没有写。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. 删除原有数据库,运行网站数据将会自动创建用户,密码123、全文到此结束。此笔记基于jesse得视频课程基础篇。同时还有一个高级篇得关于 asp、net core做微服务实战得课程。视频地址: 购买得话可以踩着老学员得链接或优惠码QATG5,领50元得优惠券,不差钱得绕行。By:djd2018/6/15

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服