随笔分类 - .net
摘要:上个月我写了《.NET gRPC核心功能初体验》, 里面使用gRPC双向流做了一个打乒乓球的Demo, 实时双向这两个标签是不是很熟悉,对, WebSockets也可以做实时双向通信。 本文将利用WebSockets(SignalR的一部分)搭建一个可双向通信的ASP.NETCore5应用。 (💡
阅读全文
摘要:闭包作为前端面试的必考题目,常让1-3年工作经验的Javascripter感到困惑,其实C#语言也有闭包。 今天我们深入聊一聊[闭包], 查缺补漏! C#闭包的实现 · 庖丁解牛 跨语言 · 追本溯源 一等函数 自由变量 词法作用域 闭包与线程结合 1. C#闭包: 庖丁解牛 一个闭包就是一个“捕获
阅读全文
摘要:之前写《.NET gRPC 核心功能初体验》,利用gRPC双向流做了一个打乒乓的Demo,存储消息的对象是IAsyncEnumerable<T>,这个异步可枚举泛型接口支撑了gRPC的实时流式通信。 本文我将回顾分享 foreach/yield return/async await语法糖的本质 如何
阅读全文
摘要:前言,本文定位为.NET方向 grpc核心能力一把梭,全篇是姿势性和结论性的展示, 方便中高级程序员快速上手.NET Grpc。 有关grpc更深层次的前世今生、底层原理、困惑点释疑请听下回分解, 欢迎菜鸟老鸟们提出宝贵意见。 grpc宏观目标: 高性能rpc框架 grpc框架实现宏观目标的底层3协
阅读全文
摘要:前文传送门: 什么是云原生? 现代云原生设计理念 Microservices 微服务是构建现代应用程序的一种流行的架构风格。(云原生拥抱微服务) 微服务是由一组(使用共享结构交互的、独立的小块服务)搭建的分布式集 共享结构??微服务之间不是通过标准http,grpc来调用吗?怎么还共享结构? 指的是
阅读全文
摘要:hello,最近在对一个使用.NET5项目的认证授权系统进行重构,对.NET 5的授权中间件的源码有些看法。 也希望同学们能帮我理解。 一个朴素的需求 这是一个api项目,默认所有的api都需要授权, 少数散落在Controller各处的api不需要授权访问,故这里有个全局授权访问+特例匿名访问的矛
阅读全文
摘要:图片上传是很常见的功能,里面有些固定的操作也可以沉淀下来。
本文记录使用Abp vNext做图片上传的姿势。
阅读全文
摘要:最好的总会在不经意间出现。 作为后端程序员,免不了与前端同事对接API, 一个书写良好的API设计文档可有效提高与前端对接的效率。 为避免联调时来回撕逼,今天我们聊一聊正确使用Swaager的姿势。 swagger 项目在2015年捐献给OpenAPI倡议,swagger 和openapi的叫法通常
阅读全文
摘要:讲故事 关注我公众号的朋友,应该知道我写了一些云原生应用日志收集/分析相关的文章,其中内容大多聚焦某个具体的组件: 超级有用的TraceId,快点用起来吧! 如何利用NLog输出结构化日志,并在Kibana优雅分析日志? 既然能直接向ElasticSearch写日志,为什么还要logstash日志摄
阅读全文
摘要:应用程序在某些时刻总是需要一些外挂配置,云原生应用的实践是在容器化之前就将应用程序配置保留在代码之外。 12-Factors App:Store config in the environment ① 外挂配置文件:业务配置 appsettings.json 可以在代码中要求加载appsetting
阅读全文
摘要:1. 坑位 最近在重构认证代码,认证过程相当常规: POST /open-api/v1/user-info?client_id&timstamp&rd=12345&sign=***&method=hmac content-type: application/json payload: { "toke
阅读全文
摘要:上文我们演示了使用NLog向ElasticSearch写日志的基本过程(输出的是普通文本日志),今天我们来看下如何向ES输出结构化日志、并利用Kibana中分析日志。 什么是结构化日志? 当前互联网、物联网、大数据突飞猛进,软件越复杂,查找任何给定问题的起因就越困难(且成本更高)。 在实践中我们开发
阅读全文
摘要:好久不见,前两周经历了人生第一次"伪牛市",基金和股市大起大落,更加坚信“你永远赚不到超出你认知范围之外的钱,除非靠着运气”,老韭菜诚不欺我也。 当能力与野心不匹配,只能多看书,收割那些不求甚解的韭菜。 言归正传,本文聊一聊在ASP.NET Core3.1中集成ElasticSearch、Kiban
阅读全文
摘要:什么叫路由? routing vs proxy? proxy: 强调的是流量将被接收并被透明转发给upstream 应用处理,强调的是流量被转发的行为, 是处理链路上处于应用层的行为。 路由:用于在网络内或者跨网络为流量选择一个处理路径, 强调的是流量在进程内是以怎样的策略来为流量选择处理对象。 路
阅读全文
摘要:长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package。 前置 安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli 从VS2017开始,dotnet Cli已经自动在.NET开发套件中被安装; 使用SDK-style
阅读全文
摘要:这篇文章行文结构对照微软博客, 结合本人意译和多年实践的回顾思考形成此次读书笔记。 Domian-driven Design 领域-驱动-设计(DDD)提倡基于(用例相关的现实业务)进行建模。 1. DDD的视角 DDD将现实问题视为领域; DDD将独立的问题描述为有界限的上下文(一个有界上下文对应
阅读全文
摘要:引言 长话短说,今天聊一聊分布式定时任务,我的流水账笔记: ASP.NET Core+Quartz.Net实现web定时任务 AspNetCore结合Redis实践消息队列 细心朋友稍一分析,就知道还有问题: 水平扩展后的WebApp的Quartz.net定时任务会多次触发, 因为webapp实例使
阅读全文
摘要:前言 前面利用《Docker-Compose搭建Redis高可用哨兵集群》, 我们的思路是将Redis、Sentinel、Redis Client App链接到同一个网桥网络,这个网桥内的Redis Client App就可以使用ContainerIP访问网桥内任意redis节点。 同一网桥网络访问
阅读全文
摘要:背景 ASP.NET Core 在 2.1 之后推出了具有弹性 HTTP 请求能力的 HttpClient 工厂类 HttpClientFactory。 替换的初衷还是简单摆一下:① using(var client = new HttpClient()) 调用的 Dispose() 方法并不会立即
阅读全文
摘要:Client Redirect vs Server Redirect ; 3xx
阅读全文