NETCORE - 技术教程文章

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能【代码】【图】

事由:这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。过程:首先我们需要在Nuget上安装BenchMarkDotNet(安装当前最新版本,当前我已经安装好了)但是却安装失败出现两个error。其中一个是 第二个ok,第二个错误非常显眼,那我先尝试着按照它的说法解决 我边在Nuget上找到 Microsoft.CodeAnalysis.CSharp 2.8.2 ,Microsoft.CodeAnalysis.Common (= 2.8.2) 我安...

ASP.NET Core 借助 Helm 部署应用至K8S【代码】【图】

前言 玩K8S也有一段时间了,借助云服务提供商的K8S控制台,已经可以很方便的快速部署应用至K8S。通过简单的点击,可以一次性帮忙创建K8S 对象:Deployment、Service、Ingress、ConfigMap等。但是当服务的规模上来后,这种方式就有点捉襟见肘。尤其是需要同时更新多个关联服务时,就需要一个一个的去更改,就有点不太方便。为了解决这个问题,最近上手实操了一下Helm,发现生产力大大提升。 Helm 简介 Helm 是一个为K8S打造的包管理...

K8s中ASP.NET Core应用获取不到客户端真实IP地址解决办法

原文 K8s中ASP.NET Core应用获取不到客户端真实IP地址解决办法应用部署在 kubernets 集群中,请求是通过阿里云负载均衡+ nginx ingress 转发的,客户端 IP 是通过 X-Forwarded-For 请求头转发的,ASP.NET Core 应用是这么获取客户端 IP 的。在 Startup.ConfigureServices 中的代码:services.Configure<ForwardedHeadersOptions>(options => {options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForw...

k8s-部署AspNetCore应用【代码】【图】

1、准备AspNetCore WebApi项目 修改Controller,返回当前主机的名称和IP:编写Dockerfile: #指定基础镜像 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base#配置工作目录 相当于cd WORKDIR /app#暴露容器端口,此端口与程序运行路径一致,可 EXPOSE 5000#复制文件到工作目录 COPY . .#ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境) #这里是配置程序运行端口,如果程序不使用默认...

Windows docker k8s asp.net core【代码】【图】

在上一篇文章 Ubuntu 18 Kubernetes的Install and Deploy 我们在ubuntu在部署了k8s集群, 今天来看看windows下怎么搞。 主要点有: 1) windows 下搭建k8s 单节点 2)ap.net core 制作和发布镜像 ,重点在于发布到私有的harbor上(Ubuntu18 安装搭建Harbor???????) 3)部署到k8s集群上 安装 1.下载 k8s-for-docker-desktop,前查看自己docker的版本(我这里是19.03.1所以直接下载master),然后下载对应的分支 2.切换到对应的目录,...

ASP.NET Core on K8S深入学习(11)K8S网络知多少【代码】【图】

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。 一、Kubernetes网络模型我们都知道Kubernetes作为容器编排引擎,它有一个强大又复杂的网络模型,也牵引出了Pod网络、Service网络、ClusterIP、NodePort、Ingress等多个概念。这里我们采用杨波老师(架构师杨波)模仿TCP/IP协议栈总结的一个K8S网络模型图来看看K8S的四个抽象层次,从而了解一下K8S的网络。本小节的文字主要引用自杨...

.net core i上 K8S(三)Yaml文件运行.netcore程序【代码】【图】

上一章我们通过kubectl run简单运行了一个.netcore网站,但实际的开发中,我们都是通过yaml来实现的。 1.编写yaml文件 关于yaml文件的格式在此就不多描述了,不熟悉的可以去网上搜一下示例。apiVersion: apps/v1beta2    #指定版本,支持的版本可以通过kubectl api-versions查询 kind: Deployment          #指定类型,这一次我们要创建一个Deployment metadata:              #元数据name: cys-netco...

【AspNetCore源码】设计模式 - 提供者模式【代码】【图】

AspNetCore源代码发现日志模块的设计模式(提供者模式),特此记录 学习设计模式的好处是,我们可以容易扩展它达到我们要求,除了要知道如何扩展它,还应该在其他地方应用它 类图 & 分析 角色分析 日志工厂 ( LoggerFactory --> ILoggerFactory) - 提供注册提供者 - 创建日志记录器(Logger) 日志记录器(Logger --> ILogger) - 写入日志记录(遍历所有日志提供者的Logger) - 这里所有注册的日志提供者聚合 日志提供者(C...

开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型【图】

1、框架去掉application层,把HOst作为application层 2、增加swagger插件 3、增加Asp.net Identity身份验证 源代码地址:https://github.com/topgunymn/YMNNetCoreFrameWork 开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型标签:host 增加 cat 数据 插件 swagger 去掉 开源 技术 本文系统来源:https://www.cnblogs.com/topguntopgun/p/12261914.html

C#的建造者设计模式,及Aspnet Core的源代码

Aspnet Core 代码无处不是 Builder 模式,到处是 内置委托 Action<T1,...> 作为 函数的参数。 1、 参考一文《C#方法作参数——关于Action和Func的使用》 https://blog.csdn.net/wf824284257/article/details/83661843

开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型【图】

1、框架去掉application层,把HOst作为application层 2、增加swagger插件 3、增加Asp.net Identity身份验证 源代码地址:https://github.com/topgunymn/YMNNetCoreFrameWork

开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加ASp.net core Identity身份认证,JWT身份认证【代码】

1、框架增加Identity注册功能 2、框架增加identity登录以后获取JWTtoken 3、请求接口通过token请求,增加验证特性 源代码地址:https://github.com/topgunymn/YMNNetCoreFrameWork JWTtoken生成代码: private string CreateAccessToken(IEnumerable<Claim> claims, TimeSpan? expiration = null){var now = DateTime.UtcNow;SymmetricSecurityKey symmetricSecurityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_...

视频图文教学 - 用最快的速度把 DotNet Core Blazor 程序安装到 树莓派中 并且用网页控制 GPIO 闪灯【代码】【图】

前言 dotnet core 在3.0时代已经发展得很好. 尤其是在跨平台方面更已经是达到了很实用的阶段. 作为 dotnet 程序员, 应该对 Linux 有充分的了解, 也可以在业余时间玩玩硬件, 做个小创客 这次教学就是想让玩跨界的网友能在最短时间内上手. 本文配套视频地址是 https://www.bilibili.com/video/BV1Ap4y1y7Bh/ 树莓派是什么? 如图: 树莓派它首先是一台电脑 , 它拥有Arm版的CPU, 和按G计算的内存 , 安装Linux (官方Raspbian) 后...

树莓派开机时在终端运行.netcore程序【代码】

参考网上其他教程尝试多次实现了树莓派开机启动.netcore程序 首先在建立一个.sh脚本文件,文件内容为需要启动的netcore程序,示例如下chmod 777 /home/pi/Documents/HuiBo/publish/AutoStart/home/pi/Documents/HuiBo/publish/AutoStart在/home/pi/.config下创建一个文件夹autostartmkdir /home/pi/.config/autostart在该文件夹下创建一个以.desktop结尾的文件,文件名称可自定义,文件内容如下:[Desktop Entry] Name=autostart C...

树莓派 Raspberry Pi 4,.net core 3.0 ,Avalonia UI 开发【图】

虽说.net core3.0已经可以用于开发wpf和winform程序,可是遗憾的时目前这core下的wpf还是只能运行在windows下,想要在linux下运行wpf估计还要等一段时间。 Avaloniaui : 直接用官网的一句话来描述吧:A cross platform XAML Framework for .NET Framework, .NET Core and Mono 在树莓派 4 B上允许Avaloniaui 简单的步骤: 第一步: 烧录树莓派最新的系统Raspbian ,最新的Raspbian 下载地址 第二步: Install curl, libunwind8, get...

C# 使用.net core 驱动树莓派的IO信号【代码】【图】

如何使用.net core来驱动树莓派的IO信号?是我们的实际项目需求中,可能就会有这种小项目,我们要输出一个IO信号,此处我们拿了树莓派4做测试 一共有两排引脚,引脚的顺序定义及功能如下: 我们就参考两侧的灰色的索引文本就好了,好了,我们来新建项目了,新建一个.Net Core的项目,当然是用最新的VS2019了 然后安装system.Device.GPIO 库,会附带一些库信息。 然后我们写程序: static void Main( string[] args ...

Asp.Net Core&Docker部署到树莓派3B中【代码】【图】

花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http://aspnetcore.online/,访问不通可能树莓派断电了),过程中发现了一点问题,或许对于同样路线的朋友有所帮助,特此写出玩转过程。码云Demo地址:https://gitee.com/530521314/ControlEvent.git 一、树莓派安装操作系统1、进入官网下载操作系统...

.Net Core使用Socket与树莓派进行通信详解【图】

前言 去年买的树莓派一直放在抽屉里吃灰,前些阵子Debian 9发布,也不出意外的支持了树莓派。 于是重新拿出读卡器又重新了装上了Debian桌面版系统。介绍 现在这个东西目前的程度只是了解一下Python和.Net的通信。最佳的版本应该是,可以通过服务器端远程执行树莓派命令。 这样做的原因大家也都知道,很多宽带现在不提供外网IP,这样造成家庭没有公网ip,也没办法远程对树莓派控制,我想做的东西类似内网穿透Ngrok之类的。 效果Pyth...

树莓派通过ssh安装部署.net Core程序【图】

树莓派安装系统 查找下载树莓派系统 我这里下载的是官方的raspios-lite系统,这样没有GUI资源占用小一些 下载地址 下载后解压为img刷入tf卡 这里使用的工具是 Win32DiskImager 下载地址选择之前解压好的img和TF卡所在的盘符,点击写入,操作完成后插入树莓派,接通树莓派电源。 设置树莓派ssh启用

.net core webapi使用nginx实现集群和负载均衡【代码】【图】

第一步:先编写webapi接口:接口介绍:1、接口采用appkey和appsecret2、访问的话,在报文头加上,appkey和sign。1、sign由请求地址(例如:http://www.xxx.com/api/user/xx/,那么地址是/api/user/xx/)+appsecret+queryString或者报文体使用SHA1散列算法得出。Filter代码:1 string appKey = "fjdsakljg";2 string appSecret = "dfhdjsklahfkdsbgkfdhtu";3 4 public void OnAuthorization(AuthorizationFilterConte...

ASP.NET Core使用Docker-Swarm集群部署实现负载均衡实战演练【图】

一、需求背景人生苦短,我用.NET Core!阿笨对Docker是这样评价的:Docker在手,环境我有!Docker出手,集群我有!前面的Doc基础课程我们学习了如何使用Docker来部署搭建单机容器应用。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而...

Nginx知多少系列之(六)Linux下.NET Core项目负载均衡【代码】【图】

原文:Nginx知多少系列之(六)Linux下.NET Core项目负载均衡目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略详解 8.Linux下.NET Core项目Nginx+Keepalived高可用(主从模式) 9.Linux下.NET Core项目Nginx+Keepalived高可用(双主模式) 10.Linux下.NET Core项目LVS+Keepalived+Nginx高可用集群 11.构建静态服务器 12.日志分析 13.优化策略 14.总结 在上一...

Nginx+.Net Core实现项目负载均衡【图】

Nginx大家如果没用过那或多或少都应该听过,vue的部署、反向代理、负载均衡nginx都能帮你做到。 今天主要说一下nginx负载均衡我们的项目,如下图所示,请求到达nginx,nginx再帮我们转发。 首先使用Docker安装nginx. docker pull nginx:latest 运行容器,将本地的8080端口映射到容器内部的 80 端口. docker run --name nginx -p 8080:80 -d nginx 查看nginx容器,如果有错请看日志. 浏览器中访问一下 ok,到此我们的nginx就已安装完成...

win10 docker部署nginx对dotnetcore应用实现负载均衡【代码】

原文:win10 docker部署nginx对dotnetcore应用实现负载均衡 nginx功能 反向代理,负载均衡,缓存静态资源,如图片、CSS、JS 正向代理和反向代理 正向代理 代理客户端,代客户端发出请求,客户端知道要访问的真实地址,如vpn 反向代理 代理服务端,代服务端接收请求,客户端不知道要访问的真实地址 win10 docker部署nginx对dotnetcore应用实现负载均衡 一、部署nginx #拉取镜像 docker pull nginx:latest #运行容器,挂载日志目录,方...

dotnet core nginx负载均衡【代码】【图】

使用: dotnet core 3.1 创建项目 dotnet new webapi --name WebApi 创建valueController using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration;namespace WebApi.Controllers {[ApiController][Route("api/[controller]")]public class ValueController : ControllerBase{public IConfiguration _configuration { get; }public ValueController(IConfiguration Configuration){_configuration = Configura...

(4)ASP.NET Core3.1 Ocelot负载均衡【代码】【图】

1.负载均衡 Ocelot可以在每个路由的可用下游服务中实现负载均衡,这使我们更有效地选择下游服务来处理请求。负载均衡类型:●LeastConnection:根据服务正在处理请求量的情况来决定哪个服务来处理新请求,即将新请求发送到具有最少现有请求的服务去处理。算法状态没有分布在Ocelot集群中。●RoundRobin:遍历可用服务并发送请求。算法状态没有分布在Ocelot集群中。●NoLoadBalancer:从配置或服务发现中获取第一个可用服务来处理新...

ASP.NET Core ResponseCache进行缓存操作【代码】【图】

前言老幺 https://www.laoyao.org本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓存将减少对web服务器的请求次数,同时可以提升性能,避免重复的运算浪费。 ASP.NET Core对于HTTP缓存分为两种: 客户端(浏览器缓存) 服务端缓存客户端缓存通过设置HTTP的响应头 Cache-Control 来完成页面存储到浏览器缓存中如下所示:其实客户端缓存的话只需要进行设置 ResponseCache 特性就可以请看如下代码片段[ResponseCache(Du...

Asp.net Core 3.1基于AspectCore实现AOP,实现事务、缓存拦截器【代码】【图】

最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理。给一个方法加一个缓存特性,那这个方法就会进行缓存。 这个也是网上说的面向切面编程AOP。 AOP的概念也很好理解,跟中间件差不多,说白了,就是我可以任意地在方法的前面或后面添加代码,这很适合用于缓存、日志等处理。 在net core2.2时,我当时就尝试过用autofac实现aop,但这次我不想用autofac,我用了一个更轻量级的...

ASP.NET Core 中的响应缓存 / ResponseCache【图】

前言:十年河东,十年河西,莫欺少年穷,学无止境,精益求精本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓存将减少对web服务器的请求次数,同时可以提升性能,避免重复的运算浪费。 ASP.NET Core对于HTTP缓存分为两种:客户端(浏览器缓存) 服务端缓存客户端缓存通过设置HTTP的响应头 Cache-Control 来完成页面存储到浏览器缓存中如下所示:在老的版本的MVC里面,有一种可以缓存视图的特性(OutputCache),可以保...

如何在ASP.Net Core使用分布式缓存的实现

ASP.Net Core 提供了多种类型的缓存,除了内存缓存和响应缓存之外,还提供了对 分布式缓存 的支持。在之前的一篇文章中,我讨论了 ASP.Net Core 的内存缓存。在本文中,我们将讨论如何在 ASP.Net Core 中使用分布式缓存,本篇就拿 Redis 和 SQL Server 作为演示。 什么是分布式缓存 分布式缓存 可用于提高应用程序的性能和可伸缩性,通常 分布式缓存 被多个应用服务器共享,在分布式缓存中,缓存的数据不会落在某些个别的web服务器...