In this repository I will try to explain good concepts regarding Async, regarding Logging and so on.
Covered topics
☑ Async
☑ IAsyncEnumerable. Async Streams and when to use async before foreach
- Async materials are here: Async materials
- Async void pitfalls (in progress)
☑ Logging in minimalAPI:
☑ Nullable Reference Types
☐ Prevent from decompiling your C#-application
☐ Validation. Settings Validation
- Fluent Validation in MinimalAPI
- IValidation (in progress)
☑ Authentication using JWT
☑ Authorization
- Good Explanation: EditorConfig in VisualStudio in 10 minutes
☑ Worker (CPU-bound) & Completion (I\O-bound) Threads Worker & CompletionThreads.pptx
☐ GC, IDisposable, and Finalizer (in progress) GC and related materials are here:
- GC Materials
- Resurrection in .Net, GC Generations
- GC internals by Konrad Kokosa on Youtube
- .Netos slides\goodies: https://goodies.dotnetos.org
☑ ReadOnlySpan, ref struct and how to not allocate extra memory in heap
☑ PeriodicTimer, modern way how to run background tasks
☐ Delegates. Delegates use cases in C#10
☑ Benchmarks
- Benchmark: Loops with Linq, Parallel, and Span
- Benchmark memory: ReadOnlySpan
- Benchmark results: MinimalAPI vs ControllerAPI
- Benchmarking Minimal API using K6
- Benchmarking Controller APi using K6
- Benchmarking API using BenchmarkDotNet. Benchmark Runner
☐ Benchmarking WebAPI and GC utilization in it. CQRS Cost.
- Little CQRS + .Net5 project example
- Cost of CQRS. SPOILER: Around 5-8% depends on amount of memory allocated for your container with running application.
☐ Data Structures
☐ Reflection and its performance in modern C#. Dynamic as "Instead of Reflection"
- Dynamic in modern C# (in progress)
- Reflections and its performance in NET8 Preview (in progress)
☑ Console App with Generic Host. Running application from the pipeline. (useful for DB Migration)
Allows to run any Tasks and use Host services lifetime. Might be useful to run EF DBMigrations from Pipeline or from another place https://dfederm.com/building-a-console-app-with-.net-generic-host/
☐ EntityFramework vs Dapper. Improving speed of EntityFramework (in progress)
☐ Kafka meets .Net6 (in progress)
☑ GraphQL meets .Net6
☑ Bloom Filter (in progress. Could be found below)
☑ Dynamic. Performance. Comparison
☐ Retries in .Net
☐ String.Create (example from Dave is in the section below)