0
点赞
收藏
分享

微信扫一扫

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

章节

第一章:https://blog.51cto.com/kimiliucn/6996292

第二章:https://blog.51cto.com/kimiliucn/7020412


二、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,写一个常量就行;

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


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

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


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

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


8.第三方 Log Provider

  • Serilog
  • Nlog
  • Elmah


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

  • 在NuGet中安装【Servilog.AspNetCore】

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

如果需要输出到控制台

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

输出到文件

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

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

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

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

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


三、Filter

1.Filter

  • 用于MVC
  • 可以在MVC的请求管道里添加逻辑
  • 之前、之后
  • Cross-cutting concerns:灌穿特性
  • 避免代码重复
  • 常用场景
  • 授权
  • 需要Https


2.MVC管道

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

3.Filter种类

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


4.实现Filter

  • IFilterMetadata
  • IAtuorizationFilter,IAsyncAuthorizationFilter
  • IResourceFilter
  • IActionFilter
  • IRestleFilter
  • IExceptionFilter


5.应用Filter

  • Action
  • Controller
  • 全局

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


四、缓存

1.缓存的优点?

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


2.缓存的缺点?

  • 仔细规划
  • 奇怪的副作用


3.缓存的地点?

  • 服务器
  • 缓存服务器
  • 客户端


4.In-Memory缓存

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


5.MemoryCacheEntryOptions

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


6.怎么使用缓存?

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

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

  • 定义一个常量,用来做Key

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

  • 构造函数依赖注入缓存

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

  • 使用缓存

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


7.Cache Tag Helper

  • <cache>@await Component.IncokeAsync("xxx")</cache>
  • 服务器端
  • 使用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

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


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

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

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

连接、运行Redis

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

  • 在VS项目中安装Redis

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

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

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

  • 在Controller中构造函数依赖注入

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

  • 使用分布式缓存

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


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

  • 基于Header
  • 客户端缓存
  • 使用ResponseCache这个Attribute


15.Reponse缓存参数?

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


16.如何使用Reponse缓存?

  • 在【Startup.cs】注册Reponse缓存

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

  • 在控制器中写代码;

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

也可以使用之前注册的

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


17.压缩

  • 压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;

如何使用呢?

(1)在【Program.cs】中【ConfigureServices】方法中注册服务

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

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

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

五、VSTS(后改名:Azure DevOps)

1.Azure DevOps

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


2.Azure DevOps组件

  • 源码控制
  • 计划
  • CI
  • 发布管理
  • 测试
  • ...


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

4.Azure Devops -CI

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


上一章节:https://blog.51cto.com/kimiliucn/6996292


版权声明:本文为原创文章,版权归 [西瓜程序猿] 所有,转载请注明出处,有任何疑问请私信咨询。

原文链接:https://blog.51cto.com/kimiliucn/7020412

举报

相关推荐

0 条评论