摘要:
这两天在整理两年前写的一个打字练习的小游戏的代码,发现其中有个写法挺有意思:private IEnumerable LetterSprites => from p in this where p is LetterSprite select p as LetterSprite;这段代码的意思是,... 阅读全文
摘要:
从容器启动复制下面的YAML然后保存成docker-compose.yaml文件:---version: '3'services: zookeeper: image: confluentinc/cp-zookeeper:7.0.1 container_name: zookeeper ... 阅读全文
摘要:
最近在工作中发现一个莫名其妙的Bug,考察下面的代码:var baseUrl = "https://test.example.com/";var loginUrl = $"{baseUrl}sso-auth/login";var userInfoUrl = $"{baseUrl}sso-auth/u... 阅读全文
摘要:
在服务端应用程序中,我们往往会通过事务处理来保证数据一致性(Data Consistency),例如:当用户从库存中取走了一定数量的物品,这些物品会体现在用户的提货单上,与此同时,库存中物品的数量也应该减少。如果在这个过程中无法保证数据的一致性,那么就有可能出现用户没有成功取走物品,而库存中的物品数... 阅读全文
摘要:
协变(Covariance)与逆变(Contravariance)是Visual C# 4.0中引入的一个语言特性,目的是为了强化在泛型类型上继承关系的语义的合理性。举个非常简单的例子:爬行动物和哺乳动物都继承于动物,然后你不能将爬行动物的行为赋予动物类型,因为这种动物类型有可能是哺乳动物,它不具备... 阅读全文
摘要:
ASP.NET Core的认证与授权已经不是什么新鲜事了,微软官方的文档对于如何在ASP.NET Core中实现认证与授权有着非常详细深入的介绍。但有时候在开发过程中,我们也往往会感觉无从下手,或者由于一开始没有进行认证授权机制的设计与规划,使得后期出现一些混乱的情况。这里我就尝试结合一个实际的例子... 阅读全文
摘要:
微软将于北京时间11月9日凌晨00:30(太平洋时间11月8日早上8:30分)发布Visual Studio 2022,这里简单介绍一下它的新特性吧。性能方面 VS 2022完全64位版本:能够快速加载世界上最复杂的软件项目解决方案 在大型解决方案项目中查找文件速度为原来的3倍开发者体验 强化... 阅读全文
摘要:
何时使用领域驱动设计?其实当你的应用程序架构设计是面向业务的时候,你已经开始使用领域驱动设计了。领域驱动设计既不是架构风格(Architecture Style),也不是架构模式(Architecture Pattern),它也不是一种软件开发方法论,所以,是否应该使用领域驱动设计,以及什么时候使用 阅读全文
摘要:
在大数据处理和人工智能时代,数据工厂(Data Factory)无疑是一个非常重要的大数据处理平台。市面上也有成熟的相关产品,比如Azure Data Factory,不仅功能强大,而且依托微软的云计算平台Azure,为大数据处理提供了强大的计算能力,让大数据处理变得更为稳定高效。由于工作中我的项目 阅读全文
摘要:
Visual C# 8.0中引入了可空引用类型(Nullable reference type),通过编译器提供的强大功能,帮助开发人员尽可能地规避由空引用带来的代码问题。这里我大致介绍一下可空引用类型的基本内容。 刚开始接触这个语言特性的时候,可能会不太容易理解。引用类型本来不就是可以为空(nul 阅读全文
摘要:
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C 阅读全文
摘要:
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布 阅读全文
摘要:
在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证。在本讲中,我们会讨论在当前这种架构的应用程序中,如何完成用户授权。 回顾 《Angular SPA基于 阅读全文
摘要:
在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot API网关整合Identity Service做身份认证的API请求。今天,我们进入前端开发,设计 阅读全文
摘要:
上文已经介绍了Identity Service的实现过程。今天我们继续,实现一个简单的Weather API和一个基于Ocelot的API网关。 回顾 《Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)》 Weather API Weather 阅读全文
摘要:
好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名《Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Identity实现身份认证与授权》,然而如你所见,这样的名字实在是太长了。所以,我不得不缩写“单页面应用”几个字 阅读全文
摘要:
在上文中,我介绍了如何在Ocelot中使用自定义的中间件来修改下游服务的response body。今天,我们再扩展一下设计,让我们自己设计的中间件变得更为通用,使其能够应用在不同的Route上。比如,我们可以设计一个通用的替换response body的中间件,然后将其应用在多个Route上。 O 阅读全文
摘要:
Ocelot是ASP.NET Core下的API网关的一种实现,在微服务架构领域发挥了非常重要的作用。本文不会从整个微服务架构的角度来介绍Ocelot,而是介绍一下最近在学习过程中遇到的一个问题,以及如何使用中间件(Middleware)来解决这样的问题。 问题描述 在上文中,我介绍了一种在Angu 阅读全文
摘要:
效果 首先看看效果: 本文将介绍如何基于Angular 8和Bootstrap 4来实现上面的主题切换效果。 设计 遵循Bootstrap的设计,我们会使用bootswatch.com提供的免费主题来实现上面的效果。Bootswatch为前端程序员提供了多达21种免费的Bootstrap主题,并且提 阅读全文
摘要:
手头有个ASP.NET Core 2.0的项目,打算将里面的依赖包进行一个版本升级,鉴于该项目还是一年前开发的,使用的是.NET Core 2.0的版本,这次正好借着.NET Core 3.0在上个月刚刚发布的机会,干脆一起将该项目所使用的.NET Core版本从2.0升级到3.0,但这过程也并不是 阅读全文