摘要:这是关于领域驱动设计的一个系列博文,目的是在学习之后能够使用领域驱动设计的知识来开发应用。领域驱动设计是目前比较火的概念,其实早在2004年的时候 **Eric Evans** 就提出了领域驱动设计。但是直到后期才被大家所认识,特别是随着现在微服务的兴起,许许多多的人意识到了领域驱动设计的好处,认为它是指导微服务设计的一把利器。 阅读全文
posted @ 2020-01-08 16:13 句幽 阅读 (803) 评论 (9)
摘要:在实践领域驱动设计(DDD)的过程中,我们往往会遇到多个领域对象相互交互的情况。比如聚合根A在执行某操作之前需要得到聚合根B的某个信号(或某些数据)。如果在单体应用程序中,我们有条件和机会使得两者进行强引用来完成操作,但是这将直接打破领域驱动设计的规范,从而使得项目不可控,再次回到大泥球的开发。现在,咱们可以选取一种更纯净的方式来解决这类问题,并且还能够更清晰的描述领域对象的活动迹象。这就是咱们今天的主题 ———— 领域事件 阅读全文
posted @ 2020-03-05 17:47 句幽 阅读 (1012) 评论 (15)
摘要:taiko是一个免费的开源浏览器自动化工具,由ThoughtWorks开发。它是一个node的库,Taiko使用Chrome Devtools API,它是为测试现代web应用程序而构建的。 阅读全文
posted @ 2020-03-03 11:41 句幽 阅读 (225) 评论 (2)
摘要:在开发AspNet Core应用的时候,我们经常会为该应用公布一个特殊的检测接口出来。该接口的目的很简单,告诉某一些外界程序(比如docker,客户端等)这个程序现在是可以访问或者不能访问的,便于外界做出相应的操作,比如监控报警,页面通知用户稍作等待等。在Aspnet Core 2.2 之后,我们有了新的解决方式。只需要简单的操作就可以进行程序运行状况的检查。 阅读全文
posted @ 2020-03-02 17:08 句幽 阅读 (1231) 评论 (7)
摘要:咱们开发应用的时候,有时候可能需要建立一些独立于应用逻辑体本身的后台任务。在.NET Core 2.0 之后,官方为我们提供了一个叫做 `IHostedService` 的接口,它可以便于我们更好的实现托管服务。那么今天咱们就来扒一扒 `IHostedService` 到底是一个怎样的东西,我们可以在什么情况下使用它。 阅读全文
posted @ 2020-02-28 16:07 句幽 阅读 (1812) 评论 (11)
摘要:一说起设计模式,大家应该都不会太陌生。毕竟在面向对象的世界中,我们需要用到各种奇技淫巧的手段来构建我们的应用,而设计模式就是这些技巧的根本。既然都是向外界提供一个结果,那么Provider和Factory到底有什么不同呢? 阅读全文
posted @ 2020-02-24 17:59 句幽 阅读 (1597) 评论 (12)
摘要:一谈到如何在.Net中进行对象映射,可能大部分同学都会脱口而出:“使用AutoMapper!”。 是的,AutoMapper 是一个非常成熟的对象映射器。截至到写这篇文章,您能在Nuget上下载到的AutoMapper包的版本为:v9.0.0,而对应的 Github 的 star 已经高达7K。然后再来看一看,咱们今天要介绍的主角:Mapster。 不知道有多少同学听过它?应该很少吧,这一点从百度搜索也可以看出来 阅读全文
posted @ 2020-02-21 17:42 句幽 阅读 (2214) 评论 (13)
摘要:伴随着 .NET Core 3.0 一起发布的 C# 8 ,从发布至今已经过了快大半年了。如果您细心的话,就能发现在C# 8新增的功能中有一条:“默认接口方法” 。 半年前当我看到这一新特性的时候,我惊呆了,但是惊讶之余是更多的疑惑。因为对于接口这个东西来说,从C#发布至今的十多年里几乎一直保持它的样子,然而在C# 8之后,它有了巨大的变化。随着而来,也是各种争论的声音。 阅读全文
posted @ 2020-02-17 17:22 句幽 阅读 (3934) 评论 (48)
摘要:对于“ + ”,“ - ”,“ * ”,“ / ”,“ is ”,“ as ” 等C#的运算符可能大家都再熟悉不过了。但是有时候大家在阅读一些网站上的代码或者开源项目的源码时,会遇到一些奇奇怪怪的运算符,特别当几个少见的运算符连在一起的时候,仿佛有一种 “别人的C#和我的C#怎么不一样” 的感觉。随着C#的版本更新,它为我们提供了许许多多的语法糖和新运算符方便我们更流畅的来编写代码。当有时候遇到不认识的运算符,就会本着 “百度不行就谷歌” 的程序员大法来疯狂操作一波。但是!! 搜索引擎他喵的居然不认这些符号。 阅读全文
posted @ 2020-02-14 16:45 句幽 阅读 (595) 评论 (11)
摘要:【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。如果您现在正在使用.NetCore的话,相信您对await 和 async这两个关键字再熟悉不过了。它们是为异步编程提供的语法糖,便于我们在代码中更便捷的进行异步操作。await 和 async其实是对Task对象都一层包装操作。而当我们查看Task对象的时候,会发现他有一个叫做 Yield() 的方法。 阅读全文
posted @ 2020-01-24 15:41 句幽 阅读 (1322) 评论 (6)
摘要:在上一篇文章:《闪电光速拳? .NetCore 中的Span》中我们提到了在.net core 2.x 所新增的一个类型:Span。但是您会发现它无法用在我们项目的某些地方,它独特的 ref结构 使它没有办法跨线程使用、更没有办法使用Lambda表达式。所以,这个时候如果我们又想跨线程操作数据又想获得类似Span这样的性能怎么办呢? 阅读全文
posted @ 2020-01-20 18:13 句幽 阅读 (1734) 评论 (17)