标签:iap ransient mamicode rop soft info 控制 wait pac
ASP.NET Core:微软提供的跨平台(window、mac、Linux)设计模式,据我了解,在2018年中旬,Core运行效率拍在100开外,到近几年,效率提高速度堪称恐怖,目前应该是前15了。总而言之,微软还是很强大的。
今天我这里介绍的是.NET Core 3.0,目前最新应该是3.1了已经。
从创建一个.NET Core项目开始:
目录组成:Core 3.0以前的版本Properties文件应该是没有显示在项目中的需要在对应的项目文件夹中查看。。。
截图的时候写错了:应该是kestrel。Kestrel是一个基于libuv的跨平台web服务器,在项目发布的时候我们不一定要在iis下面进行发布。在vs2019下可以直接选择运行项目,而不适用iis,如果想要删除iis直接在此文件夹中删掉有关iis配置信息就可以了。
在kestrel下运行可查看窗口运行的内部信息。
我们也可以右键项目下的属性查看本项目的core版本以及一些常规的程序集信息
总体文件目录接收
首先来看看Startup类里面的内容,这里的Startup其实就是个普通的类。它也并没有继承什么接口什么的。。。
ConfigureServices:这里主要负责依赖注入
DI(全称:Dependency Injection) 依赖注入机制依赖于IoC容器(也就是控制反转Inversion of Control)
抽象-----》实现-----》注册-----》使用
在我看来,services实际上是实现了其接口 IServiceCollection,这样通过services就可以进行一个依赖注入(不知道说的对不对。。。)
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace WebApplication2 { public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } } }
接下来看 Configure方法里面的内容。
它给了一个条件判断,意思是:如果此模式是开发模式,就执行一个中间件操作,实际上app.UserDeveloperExceptionPage();就是一个中间件。
说到中间件,就不得不扯一下管道问题,实际上当客户端请求服务器数据时,通常会经过一个管道,从管道中进来然后从管道中出去,在这一系列的过程中,当然是经过了多个中间件来判断客户端请求的参数或者是什么东东。。。那么这里的app.UserDeveloperExceptionPage() 意思是如果在请求的过程中出现问题,那么将给浏览器返回一个错误信息到一个页面page也可以看得出是这个意思没错了。感觉有点像try catch这波操作。。。进行一个异常处理。这个时候它通常是管道中的第一个中间件。一般这种模式在开发过程中进行,在项目进行发布的时候不会处于开发中模式将错误信息明确的展示给客户。。。
也可以自己定义环境变量进行配置。。。如图:右键项目,属性,debug
然后来看第二个中间件,app.UseRouting():它是一个路由中间件。
第三个中间件 app.UseEndpoints:它是通过lambda表达式配置的端点中间件
实际上在此基础上,我们可以自己配置一个MVC的路由表中间件(将原来的注释掉)
例如:默认就是Home/Index,学过MVC的应该在熟悉不过了吧。。。
//通过lambda表达式配置端点中间件 app.UseEndpoints(endpoints => { //MapGet扩展方法 //endpoints.MapGet("/", async context => //{ // //如果url符合的话,就执行这个操作,相应了一句话 // await context.Response.WriteAsync("Hello World!"); //}); //注册一个MVC路由模板(实际上可以注册多个): endpoints.MapControllerRoute( name:"default", pattern:"{controller=Homr}/{action=Index}/{id}" ); });
标签:iap ransient mamicode rop soft info 控制 wait pac
原文地址:https://www.cnblogs.com/hcyesdo/p/12826361.html