ASP.NET Core 3.0 入门
标签:
原文:ASP.NET Core 3.0 入门课程简介
与2.x相比发生的一些变化,项目结构、Blazor、SignalR、gRPC等
课程预计结构
ASP.NET Core 3.0项目架构简介
ASP.NET Core MVC 简介
Blazor
SignalR
Web API
gRPC
发布
一. 创建项目dotnet core 本质上是控制台应用
1. DI 依赖注入(Dependency Injection)IoC 容器(Inversion of Control)控制反转
注册(服务)
请求实例
实例的生命周期
生命周期
Transient(每次被请求都会生成一个新的实例,最短)
Scoped(一次 Web 请求产生一次实例,较长)
Singleton(从应用程序启动到停止,只创建一次,最长)
2. ConfigureServices services.AddControllersWithViews(); services.AddControllers(); // 别的类每次请求 IClock 这个接口时,都会返回一个 ChinaClock 类的实例 // services.AddSingleton<IClock, ChinaClock>(); services.AddSingleton<IClock, UtcClock>();当需要更改接口的实现类的时候,只需要在依赖注入中修改即可。
public class HomeController: Controller { // 不需要更改 public HomeController(IClock clock) { } } 2.1 DI 的优点解耦,没有强依赖。
利于单元测试
不需要了解具体的服务类
也不需要管理服务类的生命周期
3. Configure针对 HTTP 请求,建立管道
3.1 ASP.NET Core 管道(pipeline)放在管道中处理请求的东西(请求的数据,或者一些Web Server的东西),叫做中间件
Auth 身份认证,MVC 框架,Static Files 静态文件(HTML,JS,CSS)
3.2 中间件注册(顺序非常重要) // 在开发环境中,一些没有被处理或者捕获的异常就会传到这里,展示成一个页面 if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // 不使用这个中间件就无法访问静态文件(HTML,JS,CSS) // 它可以放在 UesRouting 前,因为不需要知道路由信息 app.UseStaticFiles(); // 将 HTTP 请求转换为 HTTPS 请求,强制用户使用 TLS 协议(SLL) app.UseHttpsRedirection(); // 身份认证,必须放在 UseEndpoints 前面,因为在使用 MVC 等之前就应该完成身份认证 app.UseAuthtication(); // 路由中间件,检查在应用中已经被注册的端点,这些端点有可能是被 MVC 注册的, 也有可能是RazorPages 注册的。 // 会判断这个 HTTP 请求是在哪个端点上出现的,并把这些信息传达给后面需要用到这些信息的中间件。 app.UseRouting(); // 端点中间件,对端点进行注册 app.UseEndpoints(endpoints = > { endpoints.MapGet(pattern:"http://www.mamicode.com/", requestDelegate:async context => { await context.Response.WriteAsync(text: "Hello World!"); }); // MVC endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // Attribute:类似在Controller上加上[Route("api/[Controller]")] // 注意, services.AddControllers(); 和 endpoints.MapControllers(); 方法成对出现,。 endpoints.MapControllers(); }); 3.3 端点 endpoint端点就是进来的 HTTP 请求的 URL 的结尾那部分,这部分会被中间件进行处理。
/{controller} /{action}
/home /index
为什么要将 ”路由“ 从 MVC 中分离出来,配合其他中间件使用呢?
3.4 ASP.NET Core 应用的多样性MVC:/Home /Index
Razor Pages:/SomePage
SignalR:/Hub /Chat
4. 自带的 Kestrel 服务器Visual Studio 会配置IIS服务器,但 ASP.NET Core 应用程式本身也会带有一个小型的服务器 Kestrel
4.1 launchSettings.jsoniisSettings, IISExpress 服务器的设置,如果删除后面 profiles 中的 IISExpress 的话,可以把这里的iisSettings也进行删除
profiles 配置,在这里可以配置多个服务器
默认有 IISExpress 服务器和 Kestrel 服务器
5. 自定义 ConfigureDevelopment 方法 // 自定义 ConfigureDevelopment 方法 public void ConfigureDevelopment(IApplicationBuilder app, IWebHostEnvironment env) { // ... } // 如果找不到自定义的 Configure 方法,就会执行默认的 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 通过 IWebHostEnvironment 进行注入 // 可以是 IsDevelopment(),也可以是 IsProduction(),还可以自定义 IsEnvironment("OK") if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } } // ConfigureServices()方法也可以自定义配置,还可以对Starup 类进行自定义(例如StartupDevelopment) 6. 静态文件手动创建 wwwroot 文件夹(css,js,image)
使用 app.UseStaticFiles() 中间件就可以让 wwwroot 里的静态文件变的可访问(例如:localhost:5000/images/logo.png)
二. 包管理服务器端(后端):Nuget
前端:Npm
添加 npm Configuration File (package.json)
libman.json(右键--管理客户端)
1. 合并 CSS 文件,并对其进行压缩温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41049.html