十六夜雨 发表于 2023-8-9 17:08:27

从浅入深了解.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,写一个常量就行;

第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;

不建议这么写,写在一起就提出不来了;


8.第三方 Log Provider


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

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


[*]在NuGet中安装【Servilog.AspNetCore】

//如果需要输出到控制台

//输出到文件


[*]在【Program.cs】文件中Main方法中进行配置。


[*]在【Program.cs】文件中CreateWebHostBuilder方法中进行使用。


三、Filter

1.Filter


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

[*]之前、之后

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

[*]避免代码重复

[*]常用场景

[*]授权
[*]需要Https


2.MVC管道



3.Filter种类


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

4.实现Filter


[*]IFilterMetadata

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


5.应用Filter


[*]Action
[*]Controller
[*]全局


四、缓存

1.缓存的优点?


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

2.缓存的缺点?


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

3.缓存的地点?


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

4.In-Memory缓存


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

5.MemoryCacheEntryOptions


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

6.怎么使用缓存?


[*]现在【Sartup.cs】的【ConfigureServices】方法中注册缓存:


[*]定义一个常量,用来做Key


[*]构造函数依赖注入缓存


[*]使用缓存


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



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安装)


连接、运行Redis


[*]在VS项目中安装Redis


[*]在【Startup.cs】的【ConfigureService】方法中进行注入。


[*]在Controller中构造函数依赖注入


[*]使用分布式缓存


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


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

15.Reponse缓存参数?


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

16.如何使用Reponse缓存?


[*]在【Startup.cs】注册Reponse缓存


[*]在控制器中写代码;

也可以使用之前注册的


17.压缩


[*]压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;
如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中注册服务

(2)在【Program.cs】中【Configure】使用服务

没介绍完,看文档...

五、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

来源:https://www.cnblogs.com/kimiliucn/archive/2023/08/09/17616708.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 从浅入深了解.NET Core MVC 2.x全面教程【第二章】