会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
MingsonZheng
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
4
5
6
7
8
9
10
下一页
2020年3月26日
.NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记
摘要: 32 | 集成事件:解决跨微服务的最终一致性 首先看一下集成事件的工作原理 它的目的时为了实现系统的集成,它主要是用于系统里面多个微服务之间相互传递事件 集成事件的实现方式有两种,一种是图上显示的发布订阅的方式,通过 EventBus,还有一种方式是通过观察者模式,由观察者将事件发送给关注事件的人
阅读全文
posted @ 2020-03-26 00:17 郑子铭
阅读(876)
评论(1)
推荐(0)
2020年3月25日
.NET Core开发实战(第31课:APIController:定义API的最佳实践)--学习笔记
摘要: 31 | APIController:定义API的最佳实践 首先看一个传统意义上三层架构定义的 Controller [HttpPost] public Task<long> CreateOrder([FromBody]CreateOrderVeiwModel viewModel) { var mo
阅读全文
posted @ 2020-03-25 00:24 郑子铭
阅读(1288)
评论(0)
推荐(0)
2020年3月24日
.NET Core开发实战(第30课:领域事件:提升业务内聚,实现模块解耦)--学习笔记
摘要: 30 | 领域事件:提升业务内聚,实现模块解耦 我们在领域的抽象层定义了领域事件和领域事件处理的接口 IDomainEvent namespace GeekTime.Domain { public interface IDomainEvent : INotification { } } 这是一个空接
阅读全文
posted @ 2020-03-24 00:25 郑子铭
阅读(970)
评论(0)
推荐(0)
2020年3月22日
C# lock 语法糖实现原理--《.NET Core 底层入门》之自旋锁,互斥锁,混合锁,读写锁
摘要: 在多线程环境中,多个线程可能会同时访问同一个资源,为了避免访问发生冲突,可以根据访问的复杂程度采取不同的措施 原子操作适用于简单的单个操作,无锁算法适用于相对简单的一连串操作,而线程锁适用于复杂的一连串操作 原子操作 修改状态要么成功且状态改变,要么失败且状态不变,并且外部只能观察到修改前或者修改后
阅读全文
posted @ 2020-03-22 17:45 郑子铭
阅读(8383)
评论(12)
推荐(37)
.NET Core开发实战(第29课:定义仓储:使用EF Core实现仓储层)--学习笔记
摘要: 29 | 定义仓储:使用EF Core实现仓储层 首先定义仓储层的接口,以及仓储层实现的基类,抽象类 仓储层的接口 namespace GeekTime.Infrastructure.Core { /// <summary> /// 包含普通实体的仓储 /// 约束 TEntity 必须是继承 En
阅读全文
posted @ 2020-03-22 00:18 郑子铭
阅读(2560)
评论(0)
推荐(5)
2020年3月21日
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记
摘要: 28 | 工作单元模式(UnitOfWork):管理好你的事务 工作单元模式有如下几个特性: 1、使用同一上下文 2、跟踪实体的状态 3、保障事务一致性 我们对实体的操作,最终的状态都是应该如实保存到我们的存储中,进行持久化 接下来看一下代码 为了实现工作单元模式,这里定义了一个工作单元的接口 pu
阅读全文
posted @ 2020-03-21 00:01 郑子铭
阅读(1575)
评论(2)
推荐(2)
2020年3月20日
.NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记
摘要: 27 | 定义Entity:区分领域模型的内在逻辑和外在行为 上一节讲到领域模型分为两层 一层是抽象层,定义了公共的接口和类 另一层就是领域模型的定义层 先看一下抽象层的定义 1、实体接口 IEntity namespace GeekTime.Domain { public interface IE
阅读全文
posted @ 2020-03-20 00:16 郑子铭
阅读(1075)
评论(0)
推荐(0)
2020年3月19日
.NET Core开发实战(第26课:工程结构概览:定义应用分层及依赖关系)--学习笔记
摘要: 26 | 工程结构概览:定义应用分层及依赖关系 从这一节开始进入微服务实战部分 这一节主要讲解工程的结构和应用的分层 在应用的分层这里定义了四个层次: 1、领域模型层 2、基础设施层 3、应用层 4、共享层 可以通过代码来看一下 共享层一共建立三个工程: 1、GeekTime.Core:主要承载基础
阅读全文
posted @ 2020-03-19 00:29 郑子铭
阅读(1067)
评论(0)
推荐(0)
2020年3月18日
.NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(下)
摘要: 25 | 路由与终结点:如何规划好你的Web API 自定义约束实现了路由约束接口,它只有一个 Match 方法,这个方法传入了 Http 当前的 httpContext,route,routeKey 这个 routeKey 就是我们要验证的 key 值 后面两个参数 RouteValueDicti
阅读全文
posted @ 2020-03-18 00:01 郑子铭
阅读(503)
评论(0)
推荐(0)
2020年3月17日
.NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(上)
摘要: 25 | 路由与终结点:如何规划好你的Web API 路由系统在 ASP.NET MVC 框架里面就已经存在了,在 ASP.NET Core 框架里面进行了改进 路由系统的核心作用是指 URL 和 应用程序 Controller 的对应关系的一种映射 这个映射关系实际上有两种作用: 1、把 URL
阅读全文
posted @ 2020-03-17 00:19 郑子铭
阅读(624)
评论(1)
推荐(0)
2020年3月16日
.NET Core开发实战(第24课:文件提供程序:让你可以将文件放在任何地方)--学习笔记
摘要: 24 | 文件提供程序:让你可以将文件放在任何地方 文件提供程序核心类型: 1、IFileProvider 2、IFileInfo 3、IDirectoryContents IFileProvider 是访问各种各样文件提供程序的接口 通过这样子抽象的定义,让我们与具体的抽象文件的读取的代码进行了隔
阅读全文
posted @ 2020-03-16 00:02 郑子铭
阅读(592)
评论(0)
推荐(0)
2020年3月15日
.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(下)
摘要: 23 | 静态文件中间件:前后端分离开发合并部署骚操作 这里还有一个比较特殊的用法 一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaScript 和图片文件 CSS 文件和 JavaScript 和图片文件一般会部署在 CDN 服务器上
阅读全文
posted @ 2020-03-15 00:13 郑子铭
阅读(502)
评论(0)
推荐(0)
2020年3月14日
.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)
摘要: 23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1、支持指定相对路径 2、支持目录的浏览 3、支持设置默认文档 4、支持多目录映射 首先使用静态文件中间件 // 通过这一行代码就可以访问到静态配置文件 app.UseStaticFiles(); 这样就
阅读全文
posted @ 2020-03-14 00:02 郑子铭
阅读(589)
评论(0)
推荐(0)
2020年3月13日
.NET Core开发实战(第22课:异常处理中间件:区分真异常与逻辑异常)--学习笔记(下)
摘要: 接下来介绍使用代理方法的方式,也就是说把 ErrorController 整段逻辑直接定义在注册的地方,使用一个匿名委托来处理,这里的逻辑与之前的逻辑是相同的 app.UseExceptionHandler(errApp => { errApp.Run(async context => { // 在
阅读全文
posted @ 2020-03-13 00:25 郑子铭
阅读(681)
评论(1)
推荐(0)
2020年3月12日
.NET Core开发实战(第22课:异常处理中间件:区分真异常与逻辑异常)--学习笔记(上)
摘要: 22 | 异常处理中间件:区分真异常与逻辑异常 这一节我们来讲解一下错误处理的最佳实践 系统里面异常处理,ASP.NET Core 提供了四种方式 1、异常处理页 2、异常处理匿名委托方法 3、IExceptionFilter 4、ExceptionFilterAttribute Startup 的
阅读全文
posted @ 2020-03-12 00:01 郑子铭
阅读(616)
评论(0)
推荐(0)
2020年3月11日
.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(下)
摘要: 21 | 中间件:掌控请求处理过程的关键 如果在 Map 的时候逻辑复杂一点,不仅仅判断它的 URL 地址,而且要做特殊的判断的话,可以这么做把判断逻辑变成一个委托 我们要判断当我们的请求地址包含 abc 的时候,输出 new abc app.MapWhen(context => { return
阅读全文
posted @ 2020-03-11 00:03 郑子铭
阅读(532)
评论(0)
推荐(0)
2020年3月10日
.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(上)
摘要: 21 | 中间件:掌控请求处理过程的关键 这一节讲解一下如何通过中间件来管理请求处理过程 中间件工作原理 next 表示后面有一个委托,每一层每一层套下去可以在任意的中间件来决定在后面的中间件之前执行什么,或者说在所有中间件执行完之后执行什么 整个中间件的处理过程实际上有两个核心对象: IAppli
阅读全文
posted @ 2020-03-10 00:43 郑子铭
阅读(545)
评论(0)
推荐(0)
2020年3月9日
.NET Core开发实战(第20课:结构化日志组件Serilog:记录对查询分析友好的日志)--学习笔记
摘要: 20 | 结构化日志组件Serilog:记录对查询分析友好的日志 之前讲解的日志框架,记录的日志都是文本,而且是非结构化的,这样一串串文本实际上不利于我们去做分析 结构化的日志它的好处就显而易见,它可以让我们更易于去检索,更易于与现有的分析系统进行结合 结构化日志的主要场景: 1、实现日志告警 2、
阅读全文
posted @ 2020-03-09 00:06 郑子铭
阅读(919)
评论(0)
推荐(0)
2020年3月8日
.NET Core开发实战(第19课:日志作用域:解决不同请求之间的日志干扰)--学习笔记
摘要: 19 | 日志作用域:解决不同请求之间的日志干扰 开始之前先看一下上一节的代码 // 配置的框架 var configBuilder = new ConfigurationBuilder(); configBuilder.AddCommandLine(args); configBuilder.Add
阅读全文
posted @ 2020-03-08 00:56 郑子铭
阅读(776)
评论(0)
推荐(0)
2020年3月7日
.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)
摘要: 18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace LoggingSimpleDemo { public class OrderService { ILo
阅读全文
posted @ 2020-03-07 00:13 郑子铭
阅读(583)
评论(0)
推荐(1)
2020年3月6日
.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)
摘要: 18 | 日志框架:聊聊记日志的最佳姿势 日志框架必要的包: 1、Microsoft.Extensions.Logging 2、Microsoft.Extensions.Logging.Console 3、Microsoft.Extensions.Logging.Debug 4、Microsoft.
阅读全文
posted @ 2020-03-06 00:20 郑子铭
阅读(692)
评论(0)
推荐(0)
2020年3月5日
.NET Core开发实战(第17课:为选项数据添加验证:避免错误配置的应用接收用户流量)--学习笔记
摘要: 17 | 为选项数据添加验证:避免错误配置的应用接收用户流量 三种验证方法 1、直接注册验证函数 2、实现 IValidateOptions 3、使用 Microsoft.Extensions.Options.DataAnnotations 延用上一节代码 需要添加验证的时候不能用 Configur
阅读全文
posted @ 2020-03-05 00:17 郑子铭
阅读(568)
评论(2)
推荐(0)
2020年3月4日
.NET Core开发实战(第16课:选项数据热更新:让服务感知配置的变化)--学习笔记
摘要: 16 | 选项数据热更新:让服务感知配置的变化 选项框架还有两个关键类型: 1、IOptionsMonitor 2、IOptionsSnapshot 场景: 1、范围作用域类型使用 IOptinsSnapshot 2、单例服务使用 IOptionsMonitor 通过代码更新选项: IPostCon
阅读全文
posted @ 2020-03-04 00:04 郑子铭
阅读(558)
评论(0)
推荐(0)
2020年3月3日
.NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记
摘要: 15 | 选项框架:服务组件集成配置的最佳实践 这一节讲解如何使用选项框架来处理服务和配置的关系 选项框架的特性: 1、支持单例模式读取配置 2、支持快照 3、支持配置变更通知 4、支持运行时动态修改选项值 在设计系统的时候需要遵循两个原则: 1、接口分离原则(ISP),我们的类不应该依赖它不使用的
阅读全文
posted @ 2020-03-03 00:18 郑子铭
阅读(588)
评论(0)
推荐(0)
2020年3月2日
.NET Core开发实战(第14课:自定义配置数据源:低成本实现定制化配置方案)--学习笔记
摘要: 14 | 自定义配置数据源:低成本实现定制化配置方案 这一节讲解如何定义自己的数据源,来扩展配置框架 扩展步骤 1、实现 IConfigurationSource 2、实现 IConfigurationProvider 3、实现 AddXXX 扩展方法,用来作为注入的快捷方式 引用以下两个包: Mi
阅读全文
posted @ 2020-03-02 00:12 郑子铭
阅读(547)
评论(1)
推荐(0)
2020年3月1日
.NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记
摘要: 13 | 配置绑定:使用强类型对象承载配置数据 要点: 1、支持将配置值绑定到已有对象 2、支持将配置值绑定到私有属性上 继续使用上一节代码 首先定义一个类作为接收配置的实例 class Config { public string Key1 { get; set; } public bool Ke
阅读全文
posted @ 2020-03-01 00:25 郑子铭
阅读(439)
评论(0)
推荐(0)
2020年2月29日
.NET Core开发实战(第12课:配置变更监听)--学习笔记
摘要: 12 | 配置变更监听:配置热更新能力的核心 这一节讲解如何使用代码来监视配置变化并做出一些动作 当我们需要追踪配置发生的变化,可以在变化发生时执行一些特定的操作 配置主要提供了一个 GetReloadToken 方法,这就是跟踪配置的关键方法 接着使用上一节的代码 var builder = ne
阅读全文
posted @ 2020-02-29 00:17 郑子铭
阅读(677)
评论(0)
推荐(1)
2020年2月28日
.NET Core开发实战(第11课:文件配置提供程序)--学习笔记
摘要: 11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configuration.Json Microsoft.Extensions.Configuration.New
阅读全文
posted @ 2020-02-28 00:33 郑子铭
阅读(482)
评论(0)
推荐(0)
2020年2月27日
.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
摘要: 10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径 环境变量的配置提供程序主要适应场景: 1、在 Docker 中运行时 2、在 Kubernetes 中运行时 3、需要设置 ASP.NET Core 的一些内置特殊配置时 环境变量和命令行这两个提供程序在早期是没有容器化的,当时一个操作系
阅读全文
posted @ 2020-02-27 00:52 郑子铭
阅读(541)
评论(1)
推荐(0)
2020年2月26日
.NET Core开发实战(第9课:命令行配置提供程序)--学习笔记
摘要: 09 | 命令行配置提供程序:最简单快捷的配置注入方法 这一节讲解如何使用命令行参数来作为配置数据源 命令行配置(提供程序的)支持三种格式的命令 1、无前缀的 key=value 模式 2、双中横线模式 --key=value 或 --key value 3、正横杠模式 /key=value 或 /
阅读全文
posted @ 2020-02-26 00:52 郑子铭
阅读(620)
评论(0)
推荐(0)
上一页
1
···
4
5
6
7
8
9
10
下一页
公告