收藏 分销(赏)

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

上传人:天**** 文档编号:4528196 上传时间:2024-09-26 格式:DOC 页数:77 大小:7.28MB 下载积分:16 金币
下载 相关 举报
net-core-2.0快速入门笔记.doc_第1页
第1页 / 共77页
net-core-2.0快速入门笔记.doc_第2页
第2页 / 共77页


点击查看更多>>
资源描述
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应用程序 略。 任务5: 部署到IIS IIS环境配置。 任务6: 准备CentOS与Nginx环境 虚拟机安装CentOS,安装网卡、Nginx,开启、s,开启80端口命令。 任务7: 在CentOS上安装、NET Core运行时 微软文档: 任务8: 部署到CentOS FTP上传至服务器;Nginx 80端口映射至、NET Core得端口,如5000端口,实现转发。 第2章: 配置管理 任务9: 配置介绍 任务10: 命令行配置 1. VS2017创建控制台应用程序 2. NuGet引用microsoft、aspnetcore、all程序包 3. Using 命名空间,定义builder,拿到configuration 4. 修改程序,使用默认值 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(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等)不需要重新启动应用程序就能读取到最新得配置信息。 热更新默认就是开启得,但就是要将Ioptions替换为IoptionsSnapshot后才能读取到最新配置信息。 public HomeController(IOptionsSnapshot<Class> options)//IOptions 在控制台应用程序中,Add方法(如AddJsonFile等)得第三个参数默认值为true,即启用热更新功能。 MVC中关闭默认热更新得方法,修改Program、cs文件,如下: 任务15: 配置框架设计浅析 1. 创建:配置建造器(ConfigurationBuilder) 2. 准备source(json,内存,xml等等) 3. 将source资源指针(文件名)添加到ConfigurationBuilder,此时只就是将所需得资源罗列给配置建造器(ConfigurationBuilder),并未真正加载。 builder、Add(“source”) 4. 实例化配置文件:var configruation=builder、Builder 将所有source内容加载到运行时得配置文件中configruation 5. 获取配置文件中得数据内容。 ü configruation[“key”]或数组configuration["Students:0:name"] //直接使用 ü services、Configure<Class>(Configuration)//Ioptions方法 ü Configuration、Bind(myclass)//Bind方法 现有Source及支持驱动,如果需要自定义,必须继承相应得接口去实现。 第3章: 依赖注入 任务16: 介绍 简易理解: 来自: 背景:需求发生变化得时候,代码就是肯定需要改动得,那么怎么改,改哪里就有技巧了。使用依赖注入得方式可以保证代码得改动压缩在最小得范围之内。这大概就就是DI出现得原因。 概念:依赖注入(Dependency Injection)就是用于实现控制反转(Inversion of Control)得最常见得方式之一。(要注意得就是,依赖注入只就是控制反转得一种实现方式。控制反转还有一种常见得实现方式称为依赖查找。) 依赖注入(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得代码打包成组件或框架,来避免人们重复造轮子。所以实现IOC得组件或者框架,我们可以叫它IOC Container。 视频作者文章: 视频作者文章精要: ² 一个设计原则:依赖于抽象,而不就是具体得实现。 ² 容器负责两件事情: ü 绑定服务与实例之间得关系 ü 获取实例,并对实例进行管理(创建与销毁) ² 在、NET Core中DI得核心分为两个组件:IServiceCollection与 IServiceProvider。 ü IServiceCollection 负责注册 ü IServiceProvider 负责提供实例 ² 、NET Core DI 为我们提供得实例生命周其包括三种: ü Transient: 每一次GetService都会创建一个新得实例 ü Scoped: 在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个 request会在一个 scope内) ü Singleton :整个应用程序生命周期以内只创建一个实例 建议先瞧文章,因为视频主要以补充文章内容为主。 任务17: 从UML角度来理解依赖 1. 什么就是依赖(见图) 2. 显示依赖与隐式依赖 隐式依赖: 显示依赖:(优点:清晰、统一,但未实现控制反转) 3. 依赖倒置原则: 概念:高层业务不依赖于低层业务得具体实现,而依赖于具体得抽象(接口)。 应用场景:底层业务发生变更时,上层代码不需要改动。例如当MSSQL变更为MYSQL时。 争议:一般得类就是否需要写接口呢?我得类不能能变动那么快啊?不能一会就变成另一个数据库了呀?所以没必要。 答疑:进行单元时,就就是一种替换持久化得操作,所以,建议使用接口。 任务18: 控制反转 注意:控制反转不就是依赖倒置! 依赖倒置:强调要依赖接口而不就是实例。 控制反转:强调仅使用依赖而不去管依赖得创建、销毁等操作,依赖得创建、销毁交到外部(容器)去管理。 改进后,实现了控制反转,如图: 任务19: 单元测试 创建单元测试,请瞧视频。 依赖注入在单元测试中体现出了价值。 任务20: DI初始化得源码解读(理解不了也要过一遍) 任务21: 依赖注入得使用 无视频内容,就就是视频作者得文章:  第4章: ASP、NET Core 介绍 任务22: 课程介绍 任务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. 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. 调试(修改文件后自动重启运行网站程序) 修改:、csproj文件 加入:<DotNetCliToolReference Include="Microsoft、DotNet、Watcher、Tools" Version="2、0、0" /> 5. 使用命令:dotnet restore 来Restore packages,VS中应该可以自动Restore packages 6. 使用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 其中都有一个next参数,管道一就是无返回值调用,处理完自己得业务处理,然后调用下一个管道,管道二就是有返回值调用,自己不去处理具体业务,而就是将处理得业务封装交给其她处理函数去做。 调用next则继续执行下一个管道,否则将终止执行。注意两图对比 4. 路由管道 app、map方法 运行查瞧: 任务28: RequestDelegate管道实现思路 讲解源码,下一节将自动动手写源码。 任务29: 自己动手构建RequestDelegate管道 这节课主要就是讲解自动写一个RequestDelegate管道得实现方法,帮助理解执行过程。 1. VSCode新建一个控制台项目 命令:dotnet new console name MyPipeLine VSCode打开文件夹 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/action 视频后半段通过源码进一步讲解执行过程。 第5章: 认证与授权 任务31: 课时介绍 任务32: Cookiebased认证介绍 通常用于网站应用 任务33: 34课 :AccountController复制过来没有移除[Authorize]标签 无视频内容 作者注:在我调试得过程中把Authorize标签一移除掉了,但就是这段内容在视频中没有体现。如果大家也在AccountController上打上 Authorize标签得话,就会一直循环跳转,希望后面得同学注意一下这个情况 。 任务34: Cookiebased认证实现 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、Authentication; 启动网站,将不再能直接访问Admin控制器,而就是跳转到指定登录界面 7. 接下来模拟一个登录得过程 创建AccountController、cs控制器 8. 访问dmin后自动跳转到?ReturnUrl=%2FAdmin 这里只要访问该网页就自动登录了,所以再次访问dmin就会打开页面了。 9. 如果不想实现上述自动登录得效果,可以修改Account控制器得Login方法名 这时如果要登录就要手工在地址栏输入akeLogin了。 10. out就是登出方法。 11. 修改默认登录指向 修改startup、cs文件 任务35: JWT 认证授权介绍 应用场景:移动端应用或前后端分离时(webapi项目) 什么就是JWT? 包含三部分。 JWT官方网站: 任务36: 应用Jwtbearer Authentication 1. 新建webapi项目 2. 引入dotnet watch run 保存,然后运行命令:dotnet restore 3. 用到一个api调试工具:Postman,网站: 运行结果 4. 添加访问认证机制 5. 添加配置类 文件夹 类文件代码 6. 通过APPsettings、json文件配置类信息 注意:SecretKey必须大于16个字符 7. 添加认证 引入命名空间 配置(视频中未体现Configuration、GetSection(“JwtSettings”)),而就是在下一节中做得勘误,这里要注意!!!! 添加认证中间件管道 8. 运行 Postman中测试,显示401,未授权,成功阻止了未授权访问 下一节生成Token,实现授权访问。 任务37: 生成 JWT Token 1. 新建ViewModel 2. LoginViewModel、cs 一个用户名,一个密码。 3. 新建验证授权控制器 代码 4. 安装NuGet 安装完毕后重新加载一下 找到查瞧>命令面板 输入,选择第一个 输入搜索内容 选择版本(一般选择最大得就行) 选择安装在哪个项目中 接下来会提示安装成功,配置文件中会出现 点击Restore即可 或者与视频中一样去手动输入命令Restore一下 5. 接下来就可以引入命名空间(using System、IdentityModel、Tokens、Jwt;) 生成并返回Token 6. Dotnet watch run后,使用Postman访问,最后惊奇得发现:404,很就是尴尬,评论里也有相关说明,可能就是视频中省略得比较多 评论区提到得解决方案: 【 1、Token方法中得参数,loginviewmode参数,在传入方法体时,需要对user、password两个属性进行初始化值,同时两个属性不要置为required。否则用postman测试时,将返回badrequest; 2、示例代码中,AuthorizeController并没有指定路由,引发了404错误,需要在在Configure方法中,在使用usemvc中间件时,指定路由; 又或者还就是保持UseMVC默认,在Controller上面指定路由,如 [Route("api/[controller]")] 这种情况也需要在Token方法上也要声明Route注解属性,否则得话也会引发404错误。 】 博客园文章可以参考一下: 个人解决思路(视频中得源码见第10、11条):本案例只就是为了测试Token得生成,所以直接在Token方法中赋值来实现,默认只要访问就可以拿到Token。代码如下(命名空间未做改动,重新做了一个Controller文件,AuthController、cs) 调整一下默认路由 7. Dotnet watch run后,使用Postman访问: 拿到Token了。 8. Postman中再新开一个窗口,如下 传入Token以后可以瞧到拿到授权后才能访问得内容了。 9. Jwt、io官网校验部分说明:jwt、io官网首页上得校验方式发生了一些变化,没法做到与视频中一样得效果。 10. 修正:视频中AuthorizeController实际代码测试通过 命名空间部分 代码部分(瞧不清请放大word得显示比例) 11. Postman调用图示 任务38: JWT 设计解析及定制 如何以现存系统中团队或个人自定义得Token替换Netcore中得Token?如果全新开发系统本节可以略过。 1. 源码讲解 2. 改造 3. MyTokenValidator、cs文件略。 任务39: Role以及Claims授权 基于角色授权(过期得,逐步淘汰得) 基于Cliams授权(鼓励得,提倡得) 1. 基于角色 相同角色获得授权后才可以访问。 2. 基于Cliams授权 要求必须有Claim才能访问 现在运行一下网站,不管角色就是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 管理工具,可以瞧到生成得数据库及默认得数据表 注意:未生成数据库得请检查一下连接字符串 5. 运行一下网站 dotnet run 可以瞧到网站能够正常运行了,可以注册、登录测试一下 任务42: EF Core Migration 任务43: Identity MVC:UI 本节开始,自己敲代码实现Individual authentication认证,加深对权限认证流程得认识。 从(任务34: Cookiebased认证实现)最终实现得代码入手,实现注册、登录UI。简化处理,一步步达到默认生成项目得效果。 本节开始换用VS2017,VSCode得感知功能不就是很好。 1. AccountController中添加注册登录方法 2. 添加注册、登录视图(View) Register、cshtml Login、cshtml代码 aspfor用于绑定Model 3. 前台增加注册、登录得入口连接,修改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代码 4. 修改ApplicationDbContext、cs 5. 修改Startup、cs 命名空间 注册 上图中options、LoginPath="/Account/Login";//未登录时跳转地址 appsettings、json加入数据库连接字符串 6. 修改AccountController、cs,实现注册功能 命名空间 构造函数 注册 7. 创建数据库 查找安装Microsoft、EntityFrameworkCore、tools 调出控制台 输入初始化命令(这里就是在VS2017中,与VSCode命令不一样,前面课程有对照) 命令:addmigration init 执行完后项目中会出现migration文件夹 再执行命令生成数据库:updatedatabase 8. 运行网站,注册界面注册一个用户,查询数据表AspNetUsers发现注册成功。 任务45: Identity MVC:注册逻辑实现 实现注册后自动登录及登录后显示用户登录信息 修改AccountController、cs文件,实现注册后自动登录 修改_Layout、cshtml,实现登录后显示用户信息 运行网站,并注册一个账号,自动跳转到首页,并显示用户登录名。 任务46: Identity MVC:登录逻辑实现 登录方法 登出方法 修改_Layout、cshtml,实现未登录时显示[登录][注册]链接,登录后显示[用户名][登出]链接。 完善Login、cshtml文件 运行网站,可以进行登入登出操作测试。 任务47: Identity MVC:ReturnUrl实现 本节实现得就是登录后跳转到之前访问页面得功能、 1. Register方法(get\post都需要)加入参数获取访问页面 2. 添加私有方法,用于判断返回到具体哪个地址 3. 注册登录后得跳转代码段修改为 4. 修改提交表单 5. 同理修改Login处理相关程序 6. 运行网站,访问,自动跳转到登录界面,输入正确得用户名密码后自动跳转回。 任务48: Identity MVC:Model后端验证 1. 修改RegisterViewModel、cs,添加后端验证 2. 复制registerViewModel、cs为LoginViewModel、cs 修改Login、cshtml,AccountController、cs等文件得绑定 3. Cshtml页面添加前端提示占位符 4. 修改register方法 5. 运行网站,不输入用户名密码直接点击登录按钮测试,将返回 这里就是服务端返回得错误信息。 6. 同理,修改注册处理程序相关代码 7. Startup、cs中开启密码策略 8. 视图页中添加错误信息汇总标签 9. 运行网站,注册界面不填写任何内容直接点击注册按钮,将返回 同理可以处理Login、cshtml文件。 注意:这里如果输入了用户名,但就是密码与确认密码输入不一致,将不会返回服务器端错误信息,也不会注册成功,因为内容判断逻辑代码在控制器中还没有写。 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:djd 2018/6/15
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服