首页 > 其他分享 >从浅入深了解.NET Core MVC 2.x全面教程【第二章】

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

时间:2023-08-09 14:12:26浏览次数:48  
标签:Core 缓存 浅入 vary Azure MVC 使用 cs 分布式

二、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,写一个常量就行;
image.png
第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;
image.png
不建议这么写,写在一起就提出不来了;
image.png


8.第三方 Log Provider

  • Serilog
  • Nlog
  • Elmah

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

  • 在NuGet中安装【Servilog.AspNetCore】

image.png
//如果需要输出到控制台
image.png
//输出到文件
image.png

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

image.png

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

image.png


三、Filter

1.Filter

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

2.MVC管道

image.png


3.Filter种类

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

4.实现Filter

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

5.应用Filter

  • Action
  • Controller
  • 全局

image.png


四、缓存

1.缓存的优点?

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

2.缓存的缺点?

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

3.缓存的地点?

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

4.In-Memory缓存

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

5.MemoryCacheEntryOptions

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

6.怎么使用缓存?

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

image.png

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

image.png

  • 构造函数依赖注入缓存

image.png

  • 使用缓存

image.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

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

image.png
image.png
连接、运行Redis
image.png

  • 在VS项目中安装Redis

image.png

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

image.png

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

image.png

  • 使用分布式缓存

image.png


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

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

15.Reponse缓存参数?

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

16.如何使用Reponse缓存?

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

image.png

  • 在控制器中写代码;

image.png
也可以使用之前注册的
image.png


17.压缩

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

如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中注册服务
image.png
(2)在【Program.cs】中【Configure】使用服务
image.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

标签:Core,缓存,浅入,vary,Azure,MVC,使用,cs,分布式
From: https://www.cnblogs.com/kimiliucn/p/17616708.html

相关文章

  • linux配置 崩溃生成core 转储
    ulimit-c查看core文件大小限制0表达不生成ulimit-cunlimited设置为不限制vim/proc/sys/kernel/core_pattern编辑生成规则|/usr/share/apport/apport%p%s%c%d%P%E%p:进程ID(PID)%s:进程名称(通常是可执行文件的名称)%c:命令行参数%d:应用程序的工作目录%P:包含应......
  • .NET CORE Worker Service服务访问服务器共享目录提示无权限
    问题:.NETCOREWorkerService中访问服务器共享目录,代码运行时不报错,发布出来后访问共享目录创建文件夹或者文件等所有操作都提示无权限解决方案:先对共享目录进行连接,然后再进行文件夹或文件创建等操作boolstate=connectState(共享目录路径,用户名,密码);......
  • uniapp中微信小程序取微信头像并上传到.net core后端
    uniapp中微信小程序取微信头像并上传到.netcore后端2023年08月09日后端net7测试成功,先记下来,以后要用的时候直接来这复制粘贴前端uniapp里的vue代码: <template><view><buttonclass="avatar-wrapper"open-type="chooseAvatar"@chooseavatar="o......
  • Springmvc展示oss的图片
    公开权限的图片展示首先确定思路,存储在oss中的图片有两种权限模式,一种是公开的,这种直接通过url对应到具体某张图片即可显示。格式如下:http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction>,<yourParamValue>具体例子http://image-demo.oss-c......
  • .NET Core多线程 (2) 异步 - 上
    去年换工作时系统复习了一下.NETCore多线程相关专题,学习了一线码农老哥的《.NET5多线程编程实战》课程,我将复习的知识进行了总结形成本专题。本篇,我们来复习一下异步的相关知识点,预计阅读时间10分钟。理解异步的本质(1)异步是什么?举个例子,在高峰期去餐厅吃饭,会先排队拿个小票,......
  • .Net Core WebApi
    目录MiniMalAPiDemoProgram.csSwagger文档+信息Program.csAPI版本控制ApiVersion.csVersion1Controller.csProgram.cs生成注释解决跨域.Net后台请求封装返回数据压缩默认压缩Gzip压缩缓存接口缓存静态文件缓存MiniMalAPi最小的api,请求都写在Program.cs中,可以做微服务D......
  • ASP.NET Core 中的显示和编辑器模板
    显示模板和编辑器模板指定了自定义类型的用户界面布局。考虑下列 Address 模型:C#复制 publicclassAddress{publicintId{get;set;}publicstringFirstName{get;set;}=null!;publicstringMiddleName{get;set;}=null!;publicst......
  • C#/.NET/.NET Core优秀项目和框架每周精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
    思维导航前言项目地址项目分类(善用Ctrl+F)项目列表加入DotNetGuide技术交流群前言注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯......
  • 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)
    第五节:EFCore中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)原文链接:https://blog.csdn.net/weixin_30954265/article/details/101542615?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-10154......
  • EF Core事务
    EFCore事务原文链接:https://blog.csdn.net/m0_47659279/article/details/119929767EFCore事务EFCore提供了SaveChange方法,可以把数据操作好之后再统一调用SaveChange方法,这样就实现了简单的事务功能如果需要多个SaveChange形成一个事务,就是说多个SaveChange要么全部成......