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
Kommentare
Kommentare werden von Remark42 bereitgestellt. Beim Laden werden Daten an unseren Kommentar-Server übertragen.