傲渊山岳 发表于 2023-8-9 19:04:14

从浅入深了解.NET Core MVC 2.x全面教程【第二章】

二、Logging

1.诊断中间件


[*]命名空间:Microsoft.AspNetCore.Diagnostics
[*]报告信息并处理异常

2.诊断中间件


[*]UseDeveloperExceptionPage:开发时使用的异常页面,异常信息
[*]UseStatusCodePages:返回状态码:400-600
[*]UserExceptionHandler:指定异常处理器
[*]UseWelcome:当网站还在建设中

3.ASP.NET Core里的Log系统


[*]EventSource
[*]ILogger
[*]DiagnosticSource

4.ILogger


[*]基于Providers

[*]内置
[*]可扩展使用其他的,或自己构件


5.内置的Log Providers


[*]Console:控制台
[*]Debug:VSDebug窗口
[*]EventSource
[*]EventLog:写到Windows事件中
[*]TraceSource:只能应用于完整的.NET Frameword
[*]Azure App Service

6.Log等级(低级——>高级)


[*]Trace
[*]Debug
[*]Information
[*]Warning
[*]Error
[*]Cirtical

7.添加日志信息

第一个参数是EventID,写一个常量就行;
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936386-2061179963.png
第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936185-503362473.png
不建议这么写,写在一起就提出不来了;
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936213-759160682.png

8.第三方 Log Provider


[*]Serilog
[*]Nlog
[*]Elmah

9.怎么在ASP.NET Core中使用Serilog?


[*]在NuGet中安装【Servilog.AspNetCore】
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935162-2011101949.png
//如果需要输出到控制台
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936043-2117794765.png
//输出到文件
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936377-813372510.png

[*]在【Program.cs】文件中Main方法中进行配置。
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935268-1500093765.png

[*]在【Program.cs】文件中CreateWebHostBuilder方法中进行使用。
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936279-1232764016.png

三、Filter

1.Filter


[*]用于MVC
[*]可以在MVC的请求管道里添加逻辑

[*]之前、之后

[*]Cross-cutting concerns:灌穿特性

[*]避免代码重复

[*]常用场景

[*]授权
[*]需要Https


2.MVC管道

https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936308-1050237128.png

3.Filter种类


[*]AuthorizationFilter:鉴权授权
[*]ResourceFilter:资源过滤器
[*]ActionFilter:行为方法过滤器
[*]ExceptionFilter:异常过滤器
[*]ResultFilter:结果过滤器

4.实现Filter


[*]IFilterMetadata

[*]IAtuorizationFilter,IAsyncAuthorizationFilter
[*]IResourceFilter
[*]IActionFilter
[*]IExceptionFilter
[*]IRestleFilter


5.应用Filter


[*]Action
[*]Controller
[*]全局
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936374-2145763303.png

四、缓存

1.缓存的优点?


[*]提高网站的访问速度
[*]适用于不易改变的数据

2.缓存的缺点?


[*]仔细规划
[*]奇怪的副作用

3.缓存的地点?


[*]服务器
[*]缓存服务器
[*]客户端

4.In-Memory缓存


[*]内存缓存
[*]IMemoryCache
[*]适用于Sticky Seesion(使用单机服务)
[*]适用于任何类型的对象

5.MemoryCacheEntryOptions


[*]Absolute expiration time:绝对过期时间
[*]Sliding expiration time:可调的过期时间
[*]缓存优先级
[*]PostEvictionDelegate

6.怎么使用缓存?


[*]现在【Sartup.cs】的【ConfigureServices】方法中注册缓存:
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936184-1116265560.png

[*]定义一个常量,用来做Key
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936373-180573463.png

[*]构造函数依赖注入缓存
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936166-1133132829.png

[*]使用缓存
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936136-1151004431.png

7.Cache Tag Helper


[*]@await Component.IncokeAsync("xxx")
[*]服务器端
[*]使用IMemoryCache

[*]Sticky Session


8.Cache Tag Helper属性


[*]Enabled:是否启用
[*]expires-on:绝对的过期时间
[*]expires-after:时间长度
[*]expires-sliding:可调的过期时间
[*]vary-by-header:请求
[*]vary-by-query
[*]vary-by-cookie
[*]vary-by-user
[*]vary-by
[*]priority:优先级设置

9.分布式缓存_1

https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936443-667972580.png

10.分布式缓存_2


[*]无需Sticky Seesion
[*]可扩展
[*]服务器重启不会缓存
[*]性能更好

11.分布式缓存的接口名、方法?


[*]IDistributedCache
[*]Get,GetAsync
[*]Set,SetAsync
[*]Refresh,RefreshAsync
[*]Remove,RemoveAsync

12.分布式缓存有哪几种?


[*]分布式Memory Cache:只适合开发时应用
[*]分布式 Sql Server Cache
[*]分布式 Redis Cache:实际中使用这个最多

13.怎么使用Readis分布式缓存?


[*]安装Redis(使用Docker安装)
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936488-703974560.png
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935322-1572458356.png
连接、运行Redis
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935999-1257125633.png

[*]在VS项目中安装Redis
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936176-289990835.png

[*]在【Startup.cs】的【ConfigureService】方法中进行注入。
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936067-1298605584.png

[*]在Controller中构造函数依赖注入
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936273-1560026624.png

[*]使用分布式缓存
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936205-1828583253.png

14.Response缓存(响应缓存、客户端缓存)


[*]基于Header
[*]客户端缓存
[*]使用ResponseCache这个Attribute

15.Reponse缓存参数?


[*]Location:设置缓存在哪
[*]Duration:设置缓存时间的长短
[*]NoStore:不应该设为缓存
[*]VaryByHeader:设置通过检查哪个Header的值决定缓存

16.如何使用Reponse缓存?


[*]在【Startup.cs】注册Reponse缓存
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935387-96065907.png

[*]在控制器中写代码;
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936216-674132195.png
也可以使用之前注册的
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935220-1825571160.png

17.压缩


[*]压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;
如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中注册服务
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115936314-288650367.png
(2)在【Program.cs】中【Configure】使用服务
https://img2023.cnblogs.com/blog/3240243/202308/3240243-20230807115935232-73469305.png
没介绍完,看文档...

五、VSTS(后改名:Azure DevOps)

1.Azure DevOps


[*]Saas
[*]完整的DevOps的解决方案
[*]与技术无关
[*]基于Azure
[*]集成开发团队的环境

2.Azure DevOps组件


[*]源码控制
[*]计划
[*]CI
[*]发布管理
[*]测试
[*]...

3.CI-Continuouts Integeration(持续集成)


4.Azure Devops -CI


[*]Build连接到测试,工作项...
[*]宿主代理
[*]针对报告
[*]支持多种语言凭他

上一章节:https://www.cnblogs.com/kimiliucn/p/17611047.html
原文链接:https://www.cnblogs.com/kimiliucn/p/17616708.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 从浅入深了解.NET Core MVC 2.x全面教程【第二章】