.NET Core

.NetCore3.1+微服务架构技术栈

若如初见. 提交于 2020-08-15 03:59:19
目标 目标系统架构演变,单体-分布式-微服务-中台 微服务架构核心解决,横向对比1.0、2.0、3.0 践行微服务架构,全组件解读! 也谈中台 单体架构Monolithic 单体应用时代:应用程序就是一个项目,在一个进程里面运行。 简单-省事儿 电商UI->(自营、秒杀、超市、生鲜、金融)->DB 弊端就是东西都堆在一起,不能满足大数据高并发的诉求,逻辑太多,很难升级。 业务演进推动技术的发展。 垂直拆分 垂直拆分,独立部署和维护,分而治之! 优势: 1.独立开发、独立维护、独立演化; 2.更好的利用资源; 劣势: 1.进程间数据同步,分家时断不掉联系的,联系就麻烦了; 2.分布式的代价,使用数据库时对数据进行加锁,数据更新事务的问题; 3.代码重复问题,如支付、用户管理等问题; 分布式的第一要务就是不要使用分布式。 分布式服务 分布式:多个进程协作完成一件事儿,多进程抽取公用服务,分布式完成功能。 分布式代价很高。 例如,自营服务调用用户服务、支付服务、日志服务等,依次顺序调用,如果对应服务失败是否需要回退数据,以及对应数据的处理逻辑是如何处理的。 分布式事务、分布式锁、服务注册、服务发现、服务安全、服务治理等等,多个问题都需要解决。 新的问题,也是会被解决的,问题都被解决后,分布式就成了常规手段,轻松的用来高并发,而且都不仅仅于此,包括故意分拆满足扩展性。 微服务架构

.Net Core3.0 WebApi 项目框架搭建 十四:自定义返回Json大小写格式

不羁岁月 提交于 2020-08-15 03:57:53
默认格式 在.net core 3中,默认的json返回格式为驼峰命名法 有的时候,我们希望返回的全小写或者全大写等。当然微软爸爸已经提供了拓展的接口。 设置返回Json名称全小写 新建JsonConv文件夹,新建LowercasePolicy.cs,继 JsonNamingPolicy /// <summary> /// 返回对象全小写 /// </summary> public class LowercasePolicy : JsonNamingPolicy { public override string ConvertName( string name) => name.ToLower(); } startup.cs的ConfigureServices方法新加AddJsonOptions services.AddControllers(option => { option.Filters.Add( typeof (GlobalExceptionsFilter)); }).AddJsonOptions(option => { // 空的字段不返回 option.JsonSerializerOptions.IgnoreNullValues = true ; // 返回json小写 option.JsonSerializerOptions.PropertyNamingPolicy

.NET Core技术研究系列-索引篇

♀尐吖头ヾ 提交于 2020-08-15 03:17:41
随着.NET Core相关技术研究的深入,现在将这一系列的文章,整理到一个索引页中,方便大家翻阅查找,同时,后续也会不断补充进来。 .NET Core技术研究-WebApi迁移ASP.NET Core2.0 .NET Core技术研究-Span<T>和ValueTuple<T> .NET Core技术研究-EntityFramework Core 3.0 Preview .NET Core技术研究-ConfigurationManager在单元测试下的坑 .NET Core技术研究-一套代码同时支持.NET Framework和.NET Core .NET Core技术研究-.NET Core迁移前的准备工作 .NET Core技术研究-HttpContext访问的正确姿势 .NET Core技术研究-最实用最常用的配置读取方式 .NET Core技术研究-中间件的由来和使用 .NET Core技术研究-主机Host ASP.NET Core技术研究-探秘Host主机启动过程 ASP.NET Core技术研究-探秘依赖注入框架 ASP.NET Core技术研究-全面认识Web服务器Kestrel .NET Core技术研究-通过Roslyn代码分析技术规范提升代码质量 .NET 5 Preview 1的深度解读和跟进 .NET Core相关技术研究文章,持续更新中。 周国庆

Docker入门 第一课 --.Net Core 使用Docker全程记录

人盡茶涼 提交于 2020-08-15 01:58:16
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的。 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Docker,成功部署运行Asp.NET core示例程序,算是基本入门。 这篇文章是自己总结的Docker入门篇,力求简洁,快速入门,以最短的时间看到学习成果,为深入学习Docker做基础。 学习前提:不要畏惧 面对未知,人们心里往往会产生恐惧,这是人与生俱来的,所以,我们在进入新的领域之前,首先要克服的是自己的畏难心理。不要因为困难,看几眼就放弃,那样你永远学不会。 面对新的未知领域,我们要把它当成一座灯塔,让它指引我们前进的方向。 第一:了解几个概念 镜像(Image) :相信大家看到这个词,都明白什么意思,我们可以把它理解为操作系统的安装盘,Ghost镜像。我给它个定义,就叫:Docker基础运行环境副本。 容器(Container) :运行中的Docker实例,称为容器。也就是一个镜像(Image)的运行时状态。 镜像仓库(Repository) :Docker为开发者提供了面向各种环境的已经打包好的镜像,这些镜像构成了一个镜像仓库。开发者只需找到自己需要的Docker镜像,下载到本地,添加自己的应用上去,运行即可,某些工具类的镜像,可无需修改,直接运行。 Docker 主机

foreach 集合又抛经典异常了,这次一定要刨根问底

时光怂恿深爱的人放手 提交于 2020-08-15 01:08:39
一:背景 1. 讲故事 最近同事在写一段业务逻辑的时候,程序跑起来总是报: 集合已修改;可能无法执行枚举操作 ,硬是没有找到什么情况下会导致这个异常产生,就让我来找一下bug,其实这个异常在座的每个程序员几乎都遇到过,谁也不是一生下就是大牛,简单看了下代码,确实是多线程操作foreach,但并没有对foreach进行Add,Remove操作,扫完代码其实我也是有点懵,没撤只能调试了,在foreach里套一层trycatch,查看异常的线程堆栈从而找出了问题代码,代码简化如下: static void Main(string[] args) { var dict = new Dictionary<int, int>() { [1001] = 1, [1002] = 10, [1003] = 20 }; foreach (var userid in dict.Keys) { dict[userid] = dict[userid] + 1; } } 先寻找点安慰,说实话,凭肉眼你觉得这段代码会抛出异常吗? 反正我是被骗过了,大写的尴尬,结论如下,运行一下便知。 从图中看确实是异常,说明在foreach的过程中连迭代集合的 value 都不可以修改,这让我激起了强烈的探索欲,看看FCL中到底是怎么限制的。 二:源码探索 1. 从IL中寻找答案 C#已发展到 9.0 了,到处都充斥着语法糖

龙芯开源社区上线.NET主页

爱⌒轻易说出口 提交于 2020-08-14 21:20:21
龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库: https://github.com/gsvm/coreclr , 随后受到.NET社区的很大参与热情鼓舞之下,2020年7月7日,龙芯团队在github发布了 corefx: https://github.com/gsvm/corefx 、core-setup : https://github.com/gsvm/core-setup 。 2020年7月9日,龙芯团队发布了 dotnet 运行时、aspnet core 运行时与 sdk 的 EA 版本,见 loongson-dotnet/releases 。同时在龙芯开源社区上线了.NET主页: http://www.loongnix.org/index.php/Dotnet 。据主页上的介绍龙芯版本 .NET 平台正在开发阶段,该平台基于 .NET Core ,初始版本为3.0,后续会升级至3.1。欢迎贡献 相关文章: 龙芯团队完成CoreCLR MIPS64移植,已在github开源 dotnet core 在 MIPS64 下的移值进度:EA 版本已经发布 来源: oschina 链接: https://my.oschina.net/u

如何使用C#中的用户注释?

試著忘記壹切 提交于 2020-08-14 17:03:14
  数据注释是能够运用于类或类成员的特点,以指定类之间的联系、描述数据怎么在UI中显现以及指定验证规矩。本文评论数据注释、为什么数据注释很有用以及怎么在.NETCore应用程序中运用它们。   若要运用本文供给的代码示例,您应该在体系中装置VisualStudio2019。如果还没有装置,能够在此处下载VisualStudio2019。   在VisualStudio2019中创立控制台应用程序项目   首先,无妨在VisualStudio中创立一个.NETCore控制台应用程序项目。假定体系中已装置VisualStudio2019,按照下面概述的步骤在VisualStudio中创立新的.NETCore控制台应用程序项目。   启动VisualStudioIDE。   点击“创立新项目”。   在“创立新项目”窗口中,从显现的模板列表中挑选“控制台应用程序”。   点击下一步。   在接下来显现的“装备新项目”窗口中,指定新项目的名称和位置。   点击创立。   这将在VisualStudio2019中创立一个新的.NETCore控制台应用程序项目。我们在本文后边将运用该项目来处理数据注释。   增加System.ComponentModel.DataAnnotations命名空间   想运用本文给出的代码示例,应该将System.ComponentModel

【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4

被刻印的时光 ゝ 提交于 2020-08-14 16:31:06
【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章介绍了 IdentityServer4 的源码分析的内容,让我们知道了 IdentityServer4 的一些运行原理,这篇将介绍如何使用dapper来持久化 Identityserver4 ,让我们对 IdentityServer4 理解更透彻,并优化下数据请求,减少不必要的开销。 .netcore项目实战交流群(637326624),有兴趣的朋友可以在群里交流讨论。 一、数据如何实现持久化 在进行数据持久化之前,我们要了解 Ids4 是如何实现持久化的呢? Ids4 默认是使用内存实现的 IClientStore、IResourceStore、IPersistedGrantStore 三个接口,对应的分别是 InMemoryClientStore、InMemoryResourcesStore、InMemoryPersistedGrantStore 三个方法,这显然达不到我们持久化的需求,因为都是从内存里提取配置信息,所以我们要做到 Ids4 配置信息持久化,就需要实现这三个接口,作为优秀的身份认证框架,肯定已经帮我们想到了这点啦,有个EFCore的持久化实现,GitHub地址 https://github.com/IdentityServer/IdentityServer4.EntityFramework

龙芯团队完成CoreCLR MIPS64移植,已在github开源

牧云@^-^@ 提交于 2020-08-14 15:36:36
国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为了自己的利益打压使用.NET技术的公司,我今天写这篇文章就是想通过龙芯团队的行动告诉更多人一起来推动.NET技术在中国的发展。希望龙芯厂商、支持龙芯的国产操作系统厂商能高度重视这个问题,主动加入 .Net Core 社区,加入.NET基金会,积极贡献代码,尽快做好适配工作。 龙芯团队一直在做net core的mips64移植工作,2020年6月18日完成了里程碑性的工作,在.NET Core 3.1分支上完成了MIPS64 的移植工作,目前已经在github上开源,开源地址: https://github.com/gsvm/coreclr 。具体说明可以参见 https://github.com/dotnet/runtime/issues/38069 。 龙芯团队正在做移植后的测试工作,已经完成了 9500 多项测试,ASP.NET Core示例程序 FlightFinder 已经可以在MIPS64 上正常运行,具体可以参看 https://github.com/dotnet/runtime/issues/4234 。 龙芯团队还在github上面为龙芯.NET 建立了一个仓库

【翻译】.NET 5 Preview5发布

给你一囗甜甜゛ 提交于 2020-08-14 14:15:10
今天,发布了.NET 5.0 Preview5。主要对它进行了一小部分新功能和性能的改进。 .NET 5.0 Preview 4 包含了一些计划和.NET 5.0要交付的内容。 现在,大多数的功能都已经包含在里面,但是有许多功能还未到最终状态。预计这个版本在Preview 7中完善。 可以下载适用于Windows,macOS和Linux的 .NET 5.0 Preview 5 : Windows and macOS installers Binaries Docker images Snap installer ASP.NET Core 和 EF Core 也在今天发布了 我们需要使用Visual Studio 2019 16.7才能使用.NET 5.0。 安装最新版本的 C#扩展 ,以将.NET 5.0与Visual Studio Code结合使用。 Mac的Visual Studio尚不支持.NET 5.0。 发布说明: .NET 5.0 release notes .NET 5.0 known issues GitHub release GitHub tracking issue RyuJIT改进 对RyuJIT JIT编译器进行了以下改进 新的、更快的、可移植的tailcall helper实现 。 ARM64硬件内部物理的实现进程 实现ASIMD Extract