作者小头像 Lv.2
150 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
150
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

他的回复:
微信昵称:yjh879238   华为云账号:yjh879238Day5. 搭建一套开发框架1、为什么Restful API如此流行REST指的是一组框架约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。REST是一种框架模式,用于创建使用HTTP作为其基础通信方式的API。REST体系结构模式制定了系统应遵循的一组约束,即REST约束。RESTful约束用于限制服务器端只能遵循来处理和响应客户端请求,而遵循这些约束服务也可以获取理想的非函数化的属性。如果一个服务违背了其中一个原则,则不能被称作RESTful系统。客户端服务器约束、无状态约束、可缓存约束、统一接口约束。2、ASP.NET Core中的WEB APISwashbuckle.AspNetCore有如下3个主要组件。Swashbuckle.AspNetCore.Swagger:将Swagger对象模型和中间件转换为SwaggerDocument对象,然后作为公开JSON。Swashbuckle.AspNetCore.SwaggerGen:是一个Swagger生成器,可以将SwaggerDocument从路由、控制器和模型中直接生成对象。通常与Swagger中间件结合,以生成自动公开的SwaggerJSON。Swashbuckle.AspNetCore.SwaggerUI:是一个嵌入式多版本SwaggerUI工具。可以解析Swagger JSON来构建丰富的、可定制的界面,以呈现Web API功能。包含一些内置的公共方法测试工具。3、图形可视化的WEBAPI帮助页Swagger UI提供了基于web的界面,根据Swagger.json生成的,通过界面提供有关服务的信息。修改ToDoController文件中的Route属性,可以直接通过Swagger进行页面内容的调试。同时,对ToDoController中的方法进行了规范性的调整,请求规则也调整为API控制器名称/方法名,这种更加具有辨识度的方式便于维护和调试。这样,可以脱离Postman工具,直接在Swagger UI上进行接口的测试。4、实现多层架构体系领域驱动设计中有如下4个基本层:展现层:向用户提供一个接口,通过应用层与用户进行交互,就是当前项目的web单层。应用层:展现层和领域层实现交互的中间层,协调业务对象执行特定的应用任务,可以理解为复杂业务逻辑关系的功能拼接。领域层:业务对象和业务规则,应用程序的核心层,用于存放领域实体及重要逻辑的实现。基础设施层:提供通用技术来支持更高的层。
他的回复:
微信昵称:yjh879238   华为云账号:yjh879238Day4. 泛型仓储的最佳实践落地1、如何做一个好架构软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计,软件体系结构是构建计算机软件实践的基础。软件架构即软件系统的顶层设计结构。架构规则如下:架构是顶层设计。框架是面向编程或配置的半成品。组件是从技术维度上的复用。模块是从业务维度上职责的划分。系统是相互协同可运行的实体。系统是由无数个子系统组成的,子系统是由无数个模块构建而成,由无数的API接口组合而成,模块由无数个组件组合而成。可以从业务设计、物理部署、开发架构不同架构设计角度进行架构软件设计。2、泛型仓储的最佳实践落地采用仓储模式的优势包括:使代码更清晰,更易于重用和维护;允许创建松耦合的系统。创建仓储,可以针对每个实体都创建两个文件:一个为Repository的接口文件、一个为Repository的类文件。ASP.NET Core提供了依赖注入,通过它可以创建松耦合的系统。C#提供了泛型仓储,可以实现对参数、方法、服务的复用。将它们结合在一起,就可以使系统充分松耦合。可以在路径/infrastructure/Repositories的文件夹中创建两个文件。IRepository.cs接口文件,所有仓储的约定,用于标识这些仓储。RepositoryBase.cs类文件,默认仓储的通用功能实现,用于所有的领域模型。where TEntity:用于约束传入的实体文件类型必须是类文件,要防止误用这个仓储文件。因为Web服务器的可用线程是有限的,而在高负载情况下的所有线程可能都被占用。发生这种情况的时候,服务器无法处理请求,直到线程被释放。使用同步编码时,可能会出现多个线程被占用而不能执行任何操作的情况,因为它们正在等待I/O完成。简单来说,会感觉网站访问速度很慢。3、依赖注入服务注册可以在Models文件夹中完成实体创建、数据库上下文中添加种子数据,自动注册接口到依赖注入容器中。NetCore.AutoRegisterDi是一个开源库,当前使用的是Microsoft.Dependency Injection依赖注入组件,而且Microsoft.Dependency Injection的性能比Autofac快了5倍左右。
他的回复:
微信昵称:yjh879238   华为云账号:yjh879238Day3. ASP.NET Core Identity1、为什么需要密码加密由于很多用户是多个网站共用一个密码,因此一个网站密码泄漏就会造成很大的安全隐患。我们在做系统时,密码就需要加密处理。2、ASP.NET Core Identity安全框架ASP.NET Core Identity是一个会员身份系统,是一个完善的,全面的庞大的框架。可以创建、查询、更改、删除账户信息。验证和授权。密码重置。双重身份认证。支持扩展登录,如微软、谷歌、微信等。提供了一个丰富的API,并且这些API可以进行大量的扩展。添加顺序:第一:让DbContext类继承IdentityDbContext类;第二:配置Asp.Net Core Identity服务;第三:添加认证中间件。3、授权与验证的关系身份认证是用于识别用户的身份。授权是用于识别用户可以做什么和不能做什么的过程。ASP.NET Core MVC中的授权通过Attribute控制。4、基于角色的访问控制与基于声明的访问控制内置的IdentityRole类表示一个Role。RoleManager类执行所有CRUD操作,即从基础数据库表AspNetRoles创建,读取、更新和删除角色。需要将IdentityRole类指定为RoleManager的泛型参数,来告诉RoleManager服务采用的是Identity类,然后通过ASP.NET Core依赖注入系统,RoleManager可供任何控制器或视图使用。通常基于声明的授权需要使用将Policy与Authorize属性的Policy参数一起实现。5、一个项目账户中心应该具备的功能每个系统都应该拥有账户中心,都是一些标准的功能,包括不限于登录、注册、忘记密码、邮箱验证、手机号验证等等内容。需要完成的功能如下:第三方登录集成Microsoft与Github账号的外部登录双因子身份验证验证电子邮件的验证忘记密码重置密码邮箱激活
他的回复:
微信昵称:yjh879238   华为云账号:yjh879238Day2.ASP.NET Core MVC1、MVC的设计模式MVC是用于实现应用程序的用户界面层的结构设计模式,包含了Controller、View、Model的应用程序分层设计。模型(Model):包含一组数据的类和管理数据的逻辑信息。视图(View):包含显示逻辑,用于显示Controller提供给它的模型中数据。控制器(Controller):处理Http请求,调用模型,请选择一个视图呈现该模型。2、ASP.NET Core项目中配置MVC先将所需的MVC服务添加到asp.net core中的依赖注入容器,再添加MVC中间件到请求处理管道中。AddMvcCore()方法只会添加最核心的MVC服务。AddMvc()方法添加了所有必须的MVC服务。AddMvc()方法会在内部调用AddMvcCore()方法。3、依赖注入的重要性依赖注入是一种软件设计模式,一个或多个依赖被注入,或通过引用传递,传入一个依赖对象并成为客户状态的一部分。该模式通过自身的行为分离了客户依赖的创建,允许程序设计松耦合,同时遵循依赖倒置和单一职责原则。与服务定位器模式直接进行对比,允许用户了解用来查找依赖的机制。ASP.NET Core依赖注入容器注册服务有:AddSingleton()、AddTransient()、AddScoped()。依赖注入提供了低耦合、高测试性,使单元测试更加容易。例如构造函数注入,使用构造函数来注入依赖项。4、ASP.NET Core中的模型绑定与验证模型绑定是将HTTP请求中的数据映射到控制器操作方法上对应的参数。操作方法中的参数可以是简单类型,也可以是复杂类型。模型绑定节约了大量的时间,没有它,必须编写大量自定义代码来将请求数据映射到操作方法参数,容易出错。5、使用EntityFramework Core数据访问EF Core支持多种数据库。可以通过使用数据库提供程序的插件来实现。数据库提供程序,通常位于EF Core及其支持的数据库之间。数据库提供程序包含特定于支持的数据库的功能。所有数据库通用的功能都在EF Core组件中。6、采用仓储模式ASP.NET Core中的仓储模式使代码更清晰,更易于重用和维护。能够创建松耦合的系统。在单元测试项目中,很容易用模拟的实现来替换真实的仓储进行测试。
他的回复:
微信昵称:yjh879238   华为云账号:yjh879238Day01 ASP.NET Core基础1、为什么用.NET Core.NET是一种用于构建多种应用的免费开源开发平台,在全球,目前.NET是市场上唯一一个涵盖人工智能、物联网、桌面开发、网页开发、云原生应用、移动应用、游戏等厂家的开发框架。软件开发从传统的单体架构开始不停变化,分布式单体应用结构、服务化结构、到微服务结构。微软适时推出ASP.NET Core,带来一个全新领域的机会。2、编程语言与.NET的关系根据维基百科解释,编程语言是用来定义计算机程序的形式语言,是一种被标准化的交流技巧,用来向计算机发出指令。计算机语言让程序员能够准确定义计算机所需要使用的数据,并精确定义在不同情况下应当采取的行动。C#、F#、VB、Java、C、C++、Python等都是编程语言。而.NET则是一个通用的开发平台,包含了.NET Framework、Mono、.NETCore等技术框架,为开发者提供一个具有一致性的编程环境,让代码、部署、版本控制以及基于标准API进行的开发工作都有统一的封装和构建方式,帮助开发者提升开发效率,为用户带来良好的体验。3、ASP.NET Core的基础知识ASP.NET Core是一个跨平台,高性能的开源框架,用于构建现代的,基于云连接互联网的应用程序。ASP.NET Core是ASP.NET 4.X的重新设计。最初成为ASP.NET 5,后重命名为ASP.NET Core1.0.4、ASP.NET Core的项目启动流程ASP.NET Core项目的入口有两个:Program.cs和Startup.cs。ASP.NET Core 应用程序最初作为控制台应用程序启动,Program.cs文件中的Main()方法就是入口。当.NET运行时,执行应用程序,会查找Main()方法,然后执行其中的代码段。ASP.NET Core定义Main()方法并启动时,内部代码段会让程序成为一个ASP.NET Core Web应用程序。Startup类只有两个方法:ConfigureServices()、Configure()。ConfigureServices()方法配置应用程序所需的服务。Configure()方法配置应用程序所需的请求处理管道。