在上一篇文章《如何正确实现一个 BackgroundService》中有提到 LongRunning 来优化后台任务始终保持在同一个线程上。
```csharp
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.Factory.StartNew(async () =>
{
while (!stoppingToken.IsCancellationRequested)
{
// Simulate some work
Console.WriteLine(“HostServiceTest_A is doing work.”);
[Read More]
如何正确实现一个 backgroundservice
相信大家都知道如何在 .NET 中执行后台(定时)任务。首先我们会选择实现 IHostedService 接口或者继承BackgroundService 来实现后台任务。然后注册到容器内,然后注册到容器内,之后这些后台任务 service 就会自动被 触发(trigger)。本文不是初级的入门教程,而是试图告诉读者一些容易被忽略的细节。
[Read More]
Dynamic adaptation to application sizes (datas) gc 策略
现在大家的 .NET 程序基本都部署在如 K8S 这种容器化场景下。出于节约资源的考虑,往往我们还会限制每个实例占用的资源。不知道大家发现没有,在一些高并发的场景下,我们的程序会占用非常多的内存,内存迟迟不释放,在某些极端情况下甚至会发生 OOM 。如果你搜索这个问题,大概率会找到一个答案,那就是在一些资源有限的环境请把 GC 改成 workstation 模式。更改为 workstation 模式后,内存占用高的情况确实有所好转,但是同时也会影响服务的吞吐量。
到了 .NET8 其实我们还有另外一个 GC 的策略可以选择,那就是 DATAS - Dynamic adaptation to application sizes 。它可以帮我们在内存占用跟吞吐量之间找到一个平衡。
[Read More]
Autogenstudio 构建你的私有团队
AI Agent 无疑是今年最火爆的概念,从科技巨头的战略布局到创业公司的创新产品,AI 智能体正在重塑我们与机器交互的方式。无论是自动化任务、个性化服务,还是复杂问题的协同解决,AI Agent 都展现出了前所未有的潜力。
[Read More]
在 aspire 项目下使用 agileconfig
什么是 Aspire
[Read More]