Zum Inhalt springen

From .NET 3.5 to Modern ASP.NET Core: A Structured Learning Path

Veröffentlicht am Feb 27, 2026 | ca. 9 Min. Lesezeit |

This article provides a structured 7-phase learning path for developers migrating from .NET Framework 3.5 to modern ASP.NET Core.

What Has Changed Since .NET 3.5?

.NET Framework 3.5 (then)      .NET 9 (now)
──────────────────────          ─────────────
Windows-only                    Cross-platform (Win/Linux/macOS)
Visual Studio required          VS Code + dotnet CLI is sufficient
ASP.NET WebForms                ASP.NET Core (completely rewritten)
LINQ to SQL / EF 1.0           Entity Framework Core 9
No built-in DI                  DI is a core concept
No async/await                  async/await is everywhere

Key C# Features to Learn First

1. async/await (mandatory)

Every database call, every HTTP request, and every file operation in ASP.NET Core is asynchronous:

// Old style (blocking):
public string GetData() { Thread.Sleep(2000); return "data"; }

// Modern style (non-blocking):
public async Task<string> GetDataAsync()
{
    await Task.Delay(2000);  // Thread is free during the wait
    return "data";
}

2. Records (C# 9)

// Immutable data class — replaces 30+ lines of boilerplate
public record User(int Id, string Name, string Email);

// Copy with modification:
var updated = user with { Name = "New Name" };

3. Nullable Reference Types (C# 8)

string name = "Max";      // Cannot be null
string? nickname = null;  // Explicitly nullable

// Compiler warns before NullReferenceException can occur
Console.WriteLine(nickname?.Length ?? 0);  // Safe

The 7-Phase Learning Path

Phase Topic Duration Priority
0 Orientation: what changed? 1–2 days Read once
1 Modern C# (async/await, records, nullable) 1–2 weeks ⭐⭐⭐⭐⭐
2 ASP.NET Core basics (REST API, EF Core, DI) 2–3 weeks ⭐⭐⭐⭐⭐
3 JWT authentication 1–2 weeks ⭐⭐⭐⭐⭐
4 SignalR (real-time) 1 week ⭐⭐⭐⭐
5 RabbitMQ + MassTransit (background jobs) 1 week ⭐⭐⭐⭐
6 Neo4j graph database 1 week ⭐⭐⭐⭐
7 Docker + full stack integration 1 week ⭐⭐⭐

Estimated total: 8–12 weeks studying evenings and weekends.

Phase 2 Quick Start: Your First REST API

dotnet new webapi -n MyApi
cd MyApi
dotnet run
# Visit http://localhost:5000/swagger

A complete REST controller with EF Core:

[ApiController]
[Route("api/[controller]")]
public class NotesController : ControllerBase
{
    private readonly AppDbContext _db;
    public NotesController(AppDbContext db) => _db = db;

    [HttpGet]
    public async Task<ActionResult<List<Note>>> GetAll()
        => await _db.Notes.ToListAsync();

    [HttpPost]
    public async Task<ActionResult<Note>> Create(CreateNoteDto dto)
    {
        var note = new Note { Title = dto.Title, Content = dto.Content };
        _db.Notes.Add(note);
        await _db.SaveChangesAsync();
        return CreatedAtAction(nameof(GetById), new { id = note.Id }, note);
    }
}

Phase 3: JWT Authentication

// Protect any endpoint:
[Authorize]
[HttpGet("profile")]
public async Task<ActionResult<UserProfile>> GetProfile()
{
    var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
    return await _db.Users.FindAsync(int.Parse(userId!));
}

Phase 4: Real-time with SignalR

// Hub:
public class NotificationHub : Hub
{
    public async Task Notify(string userId, string message)
        => await Clients.User(userId).SendAsync("NewNotification", message);
}

// Register in Program.cs:
builder.Services.AddSignalR();
app.MapHub<NotificationHub>("/hubs/notifications");

Full Stack with Docker Compose

Run all services with a single command:

docker compose up

The stack includes: ASP.NET Core API, PostgreSQL (relational data), Neo4j (graph data), RabbitMQ (background jobs), and Redis (caching/sessions).

Learning Resources

  • Microsoft Learn ASP.NET Core: https://learn.microsoft.com/en-us/aspnet/core/
  • Microsoft Learn EF Core: https://learn.microsoft.com/en-us/ef/core/
  • "C# in a Nutshell" by Joseph Albahari — comprehensive C# reference
Thomas Wunner

Thomas Wunner

Certified IT specialist for application development with an instructor qualification and over 14 years of experience building scalable web applications with Symfony and Shopware. When not coding, Thomas volunteers as a lifeguard with the Wasserwacht, performs as a DJ, and explores the countryside on his motorbike.

Kommentare

Kommentare werden von Remark42 bereitgestellt. Beim Laden werden Daten an unseren Kommentar-Server übertragen.