9 天前 / huhubun
背景 在将公司一款基于 .NET Framework 的控制台程序迁移到 .NET Core 3.1 时,发现程序中本地化的部分失效,症状类似于对Thread.CurrentThread.CurrentCulture.Name的值进行Substring()操作时抛出ArgumentOutOfRangeException异常。 该程序在 Windows Container 中工作良好,迁移为 .NET Core 后在我的 Windows 开发机上也运行良好,一旦部署到 K8s 的 Linux 容器中就会出现问题。容器使用的是基于微软官方的 .NET Runtime 3.1 镜像(https://hub.docker.com/_/microsoft-dotnet-runtime/)。
10 天前 / BloomingRose
AgileConfig 在使用 react 编写 UI 后,变成了一个彻彻底底的前后端分离的项目,上一次解决了把 react spa 跟 asp.net core 站点集成起来 ASP.NET Core 集成 React SPA 应用。本来我每次提交代码的时候都需要手动运行 npm run build,然后把 dist 的内容复制到 asp.net core 网站的 wwwroot/ui 目录下。这样显然太麻烦了,于是尝试使用 github actions 来自动化这些步骤。 我们要实现的目标是:提交代码后自动运行 npm run build,自动把 dist 内容复制到 wwwroot 目录下,自动 build dotnet 程序,自动打包 docker 镜像,自动推送到 dockerhub 。
30 天前 / 高飞
在 .NET Core 中使用异步编程已经很普遍了, 你在项目中随处可见 async 和 await,它简化了异步操作,允许开发人员,使用同步的方式编写异步代码,你会发现在大部分的异步方法中,都提供了 CancellationToken 参数,本文主要介绍下 CancellationTokenSource 和 CancellationToken 在异步任务中的使用。 手动取消任务创建一个 CancellationTokenSource,然后调用异步方法时,传入 CancellationToken,它是一个轻量级对象,可以通知请求是否已取消,我们可以手动调用 cts.Cancel() 来取消任务,为了方面演示,这里我有用到局部方法。
32 天前 / 高飞
翻译自 Camilo Reyes 2020 年 8 月 26 日的文章《Build a REST API in .NET Core》[1] REST API 可以使用简单的动词(如 POST、PUT、PATCH 等)将大型解决方案背后的复杂性隐藏起来。在本文中,Camilo Reyes 解释了如何在 .NET Core 中创建 REST API。 扩展大型复杂解决方案的一种方法是将它们分解为 REST 微服务。微服务开启了 API 背后的业务逻辑的可测试性和可重用性。因为 REST API 可以被多个客户端重用,使得组织可以共享软件模块。客户端或许是移动端、网页端,甚至单页应用中的静态资源端,它们可以调用任意多的 API。
40 天前 / BeckJin~
服务 CPU 或 内存偶尔飙高是部署环境中经常遇到的问题,一般会采用记录日志的方式来诊断,不过有些情况靠日志可能并不能分析出个所以然,面对实在无头绪的问题也只能暂时使用重启大法先恢复。 为了尽可能精准的定位问题,掌握通过 dump 分析服务运行堆栈信息也是非常必要的,本文将分别介绍如何对 .NET Core 2.2 和 .NET Core 3.1 项目进行 dump 分析(这里只针对 Linux 下使用容器部署的方式)。 创建 dump 文件在创建 dump 文件之前,最好先查看具体是服务中哪些线程引发的异常,然后针对特定线程进行分析,不然全扫一遍将是一件非常耗时的工作。
80 天前 / 高飞
开源项目非常适合入门,并且可以作为体系结构参考的好资源, GitHub 中有几个开源的。NET Core 项目,这些项目将帮助您使用不同类型的体系结构和编码模式来深入学习 .NET Core 技术, 本文列出了不同类别的优秀的开源项目。 eShopOnContainers eShopOnContainers 是一个示例参考应用程序,演示了 Microsoft 的基于容器的微服务的各种体系结构模式。 分类:参考项目 License:MIT 架构:基于容器的微服务 Github:https://github.com/dotnet-architecture/eShopOnContainers[1] Stars:16.4k eShopOnWebeShopOnWeb 是一个示例参考应用程序...
94 天前 / 高飞
AutoMapper 是一个基于约定的面向对象的映射器,它的功能常用于将一个 input 对象 转成一个不同类型的 output 对象,input 和 output 对象之间的属性可能相同也可能不相同,这一篇我们来一起研究一下 AutoMapper 的一些高级玩法。 安装 AutoMapper 要想在项目中使用 AutoMapper ,需要通过 nuget 引用 AutoMapper 和 AutoMapper.Extensions.Microsoft.DependencyInjection 包,可以通过 Visual Studio 2019 的 NuGet package manager 可视化界面安装 或者 通过 NuGet package manager 命令行工具输入以下命令: Install-PackageAutoMapper Install-Package...
151 天前 / u497927
GitHub is where the world builds softwareMillions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world. Sign up for free
154 天前 / 原装Zigzag
【导读】无论是在我个人博客还是著作中,对于上下文实例池都只是通过大量文字描述来讲解其基本原理,而且也是浅尝辄止,导致我们对其认识仍是一知半解,本文我们摆源码,从源头开始分析 希望通过本文从源码的分析,我们大家都能了解到上注入下文和上下文实例池的区别在哪里,什么时候用上下文,什么时候用上下文实例池 友情提醒:此文略长,若心情烦躁、郁闷,无法静心,可以直接滑至文末总结或另安排时间再详细阅读本文 上下文实例池原理准备工作 上下文实例池和线程池原理从概念来上讲一样,都是可重用,但在原理实现上却有本质区别。
165 天前 / 林选臣
适用于。NET/.NET Core 开发人员的 WinForms 组件 NanUI 发布最新版本了。本文将大概介绍 NanUI 0.8 版的新特性和新功能。发布前感悟 NanUI 自从上一次更新 NanUI 0.7 已经过去大半年,B 站和头条的教学视频也只制作到了第二集。 有朋友悄悄问我是不是发生什么事故我删库跑路了所以那么长时间不更新项目不发布教程,当然,这只是玩笑而已。 实际情况是 NanUI 0.7 基于 ChormiumFX 项目进行开发,刚刚发布 0.7 之后我就发现了框架自生存在有重大 BUG 而且是我没有能力处理的那种。
196 天前 / 高飞
今天,我们深度研究一下 IHttpClientFactory。 一、前言最早,我们是在 Dotnet Framework 中接触到 HttpClient。 HttpClient 给我们提供了与 HTTP 交互的基本方式。但这个 HttpClient 在大量频繁使用时,也会给我们抛出两个大坑:一方面,如果我们频繁创建和释放 HttpClient 实例,会导致 Socket 套接字资源耗尽,原因是因为 Socket 关闭后的 TIME_WAIT 时间。这个问题不展开说,如果需要可以去查 TCP 的生命周期。
204 天前 / BeckJin~
在 Kubernetes 中,Pod 资源的控制器 Deployment、Replicaset、Daemonset 等常用于管理无状态应用,它们所管理的 Pod 对应的 IP、名字,启停顺序等都是随机的,Pod 之间也并不存在任何关联关系。而实际情况下,在应用集群部署时,实例彼此之间可能是需要存在关联关系的(启动顺序、角色),如 MySQL、MongoDB,所以 StatefulSet 就是为了运行有状态服务引入的一种资源类型,StatefulSet 为每个 Pod 维持一个唯一且固定的标识符,必要时还会为其创建专用的存储卷,当 Pod 被重建时,也依然能保持原来的标识符和存储卷。
263 天前 / 高飞
点击上方蓝字"小黑在哪里"关注我吧 Docker-Compose 代码修改 yml file up & down 镜像仓库 前言上一篇【.Net Core in Docker 极简入门(上篇)】讲解了 docker 的一些基本命令和操作,并成功构建了自己的 asp.net core web 应用的镜像,启动容器。本篇继续。 开始上一篇的项目例子非常简单,通常我们的实际项目要复杂的多。项目中会依赖各种组件服务,比如数据库,MQ,缓存等等。这就会涉及到多个容器,如果手动用 docker 命令去一个一个的启动就很麻烦了,那么这时候就可以使用 Docker-Compose 来完成多个容器的管理。
272 天前 / HueiFeng
写在前面微软在更新。Net Core 版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持 XX 方法,这就很花时间去找回需要的东西了,下面是个人在迁移。Net Core WebApi 项目过程中遇到的问题汇总: 开始迁移 1 修改*.csproj 项目文件 netcoreapp2.2 修改为 netcoreapp3.12 修改 Programpublic static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run();}public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebH...
276 天前 / 高飞
Docker 可以说是现在微服务,DevOps 的基础,咱们。Net Core 自然也得上 Docker。.Net Core 发布到 Docker 容器的教程网上也有不少,但是今天还是想来写一写。 你搜。Net core 程序发布到 Docker 网上一般常见的有两种方案: 1、在本地编译成 Dll 文件后通过 SCP 命令或者 WinSCP 等工具上传到服务器上,然后构建 Docker 镜像再运行容器。该方案跟传统的发布很像,麻烦的地方是每次都要打开相关工具往服务器上复制文件。 2、在服务端直接通过 Git 获取最新源代码后编译成 Dll 然后构建 Docker 镜像再运行容器。