<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/wearedotnet/best-of/2024/12" -->

---
title: Best We Are .NET posts — December 2024 | daily.dev
description: The most upvoted We Are .NET posts from December 2024, curated by the daily.dev community.
canonical: https://daily.dev/sources/wearedotnet/best-of/2024/12
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/wearedotnet/best-of/2024/12
og:type: website
og:site_name: daily.dev
og:title: Best We Are .NET posts — December 2024 | daily.dev
og:description: The most upvoted We Are .NET posts from December 2024, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of We Are .NET — December 2024

1. 1  
[](https://daily.dev/posts/the-right-way-to-build-async-apis-in-asp-net-core-qsfjmtj08 "The Right Way To Build Async APIs in ASP.NET Core")  
Video  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
The Right Way To Build Async APIs in ASP.NET Core  
Learn how to build asynchronous REST APIs in ASP.NET Core where requests get an immediate response, while the detailed work happens in the background. The post provides an example of a thumbnail generation service, which processes image resizing asynchronously using the Channel class and background services. It discusses how to improve user experience by decoupling slow processing from the main request-response cycle and offers insights into managing asynchronous tasks effectively.  
27
2. 2  
[](https://daily.dev/posts/performance-testing-your-api-with-grafana-k6--uqw85loig "Performance testing your API with Grafana K6⚡")  
Video  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
Performance testing your API with Grafana K6⚡  
Performance testing is crucial for ensuring your API can handle high traffic without crashing. This post introduces Grafana K6, a tool that lets you write JavaScript scripts to conduct various performance tests, such as load tests, stress tests, soak tests, and spike tests. It provides insights into API performance, helping identify potential bottlenecks. The tutorial covers installing K6, writing and executing tests, and analyzing results for an ASP.NET Core API.  
21
3. 3  
[](https://daily.dev/posts/a-dozen-programmer-utilities-ak3zfjau8 "A Dozen Programmer Utilities")  
Article  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
A Dozen Programmer Utilities  
Discover a curated list of indispensable programmer utilities, including Visual Studio 2022, Copilot, ExamDiffPro, Tweaks by Mads Kristensen, Viasfora, Evernote, LastPass, Git Diff Margin, DB Browser for SQLite, and BlueSky. These tools enhance productivity and streamline various aspects of software development. Most of them are free, offering significant value without a hefty price tag.  
16  
3
4. 4  
[](https://daily.dev/posts/the-simplest-background-processing-in-net---channels-rnwuuapwp "The Simplest Background Processing in .NET - Channels")  
Video  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
The Simplest Background Processing in .NET - Channels  
In .NET, channels provide a simple API for implementing background processing. They allow you to write and read messages from a pipeline. The ChannelReader property offers a ReadAllAsync method that returns an async enumerable, which can be iterated over using an await foreach to perform background tasks.  
15
5. 5  
[](https://daily.dev/posts/from-net-6-to-net-8-my-migration-experience-migrating-durable-functions-net-8-isolated-anthon-iiqxy1gbb "From .NET 6 to .NET 8, my migration experience: Migrating Durable Functions .NET 8 isolated – Anthony Giretti's .NET blog")  
Article  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
From .NET 6 to .NET 8, my migration experience: Migrating Durable Functions .NET 8 isolated – Anthony Giretti's .NET blog  
The post outlines the steps and modifications necessary to migrate applications from .NET 6 to .NET 8, specifically focusing on Durable Functions in an isolated setup. The migration process includes updates to the CsProj file, NuGet package replacements, changes in the Program.cs file, adjustments in the local.settings.json file, and changes to various function triggers. The post provides detailed guidance to help developers avoid common pitfalls and successfully complete the migration.  
12
6. 6  
[](https://daily.dev/posts/understand-openapi-document-generation-in-asp-net-core-cjp7egvmk "Understand OpenAPI document generation in ASP.NET Core")  
Article  
![Avatar of wearedotnet](https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet)We Are .NET · 2y  
Understand OpenAPI document generation in ASP.NET Core  
Discover how to generate OpenAPI documents in ASP.NET Core, including integrating Swagger and Scalar tools for enhanced API testing and documentation. Learn through practical examples, how to set up a CRUD Web API project in .NET 9, configure OpenAPI endpoints, and use third-party tools for viewing and testing APIs.  
10

[See all We Are .NET archives](/sources/wearedotnet/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/wearedotnet/best-of/2024/12#page","url":"https://daily.dev/sources/wearedotnet/best-of/2024/12","name":"Best We Are .NET Posts — December 2024","description":"The most upvoted We Are .NET posts from December 2024, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/wearedotnet/best-of/2024/12#items","numberOfItems":6,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/the-right-way-to-build-async-apis-in-asp-net-core-qsfjmtj08","name":"The Right Way To Build Async APIs in ASP.NET Core"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/performance-testing-your-api-with-grafana-k6--uqw85loig","name":"Performance testing your API with Grafana K6⚡"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/a-dozen-programmer-utilities-ak3zfjau8","name":"A Dozen Programmer Utilities"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/the-simplest-background-processing-in-net---channels-rnwuuapwp","name":"The Simplest Background Processing in .NET - Channels"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/from-net-6-to-net-8-my-migration-experience-migrating-durable-functions-net-8-isolated-anthon-iiqxy1gbb","name":"From .NET 6 to .NET 8, my migration experience: Migrating Durable Functions .NET 8 isolated – Anthony Giretti's .NET blog"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/understand-openapi-document-generation-in-asp-net-core-cjp7egvmk","name":"Understand OpenAPI document generation in ASP.NET Core"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"We Are .NET","item":"https://daily.dev/sources/wearedotnet"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/wearedotnet/best-of"},{"@type":"ListItem","position":5,"name":"December 2024"}]}]}
```

