计时器(Timer)调用异步(Async)任务

我最近在 .NET Core 应用中编写托管服务,该服务基于计时器(Timer)在后台运行作业,而该作业为一个异步(async)任务。通常情况下,计时器的委托只能接收同步作业。对于异步任务,需要作出相应的处理,下文叙述如何实现。 …

阅读更多 »

.NET Core 应用部署到 Docker

最近申请到了微软 Azure 免费虚拟主机,于是便有了将本站迁移到 Azure 的想法。因本站是基于 .NET Core 开发,原本是托管在 Linux 主机上,打算在 Azure 上使用 Docker 进行部署。几经折腾,总算是部署成功了,现将部署过程记录下来,便于日后查阅。 …

阅读更多 »

如何设计一个良好的 API 接口?

API 是软件系统的核心,而我们在设计 API 接口的同时,面临着非常多的挑战,从遇到的场景上来看,它是多样的,如何设计一个处处适用的 API 呢?我们所参与的业务不断演进,如何设计一个有兼容性的 API 呢?我们的软件流程是协同开发的, …

阅读更多 »

如何在 Startup 正确解析服务?

在 .NET Core 应用中,通常需要在 Startup 注册和解析服务(resolve services),即在 ConfigureServices 注册服务,在 ConfigureServices 和 Configure 中解析服务。例如有以下的场景:我有一个基于 ASP.NET Core 3.1 的应用程序 …

阅读更多 »

C# 编码规范

对于编程中非代码文件(例如 xml 等),我们目前的最佳指南是代码风格的一致性。编辑代码文件时,需要保持新增/更改的代码与原文件中的代码风格一致性。对于新建的代码文件,它也应符合本编码规范。好的编码规范,有利于提升代码的可读性。 …

阅读更多 »