If you read my last post, you read all of the things that I'd like to learn this year, starting with ASP.NET Core. I've spent the past week gathering resources from Microsoft's documentation, blogs, forums and internet searches to create myself a 17 module learning plan.
If you're looking to get your feet wet on Microsoft's full stack web framework, then I hope these resources are helpful for you too.
FYI: This learning path assumes that you have a basic knowledge of C# syntax and a general knowledge of the available libraries. If you don't, Codecademy has a free course!
The ASP.NET Core Learning Path
Introduction to ASP.NET
1. dotnet cli
Module Goal: Be able to explain the most common commands with their options and use them throughout the development process.
Resources:
- Microsoft: .NET CLI overview
- Tutorials Teacher: .NET Core Command-Line Interface
-
Andrew Lock - ASP.NET Core in Action
- Reference - 2
- 2.2 Creating your first ASP.NET Core application - p. 32
2. ASP.NET Web Application Starting Template
Module Goal: Be able to explain the purpose and use of each of the files and folders that are generated by the starting template of an ASP.NET application.
Resources:
- Tutorials Teacher: Create ASP.NET Core MVC Application
- Tutorials Teacher: wwwroot Folder
- Microsoft: ASP.NET Core fundamentals overview
-
Andrew Lock - ASP.NET Core in Action
- 2.5 The csproj project file - p. 38
- 2.6 The Program class - p. 41
- 2.7 The Startup class - p. 44
3. Dependency Injection
Module Goal: Describe the purpose of Dependency Injection and be capable of configuring dependencies within ASP.NET's Dependency Injection framework.
Resources:
- Microsoft: Dependency injection in ASP.NET Core
- CodeProject: Exploring the Microsoft.Extensions.DependencyInjection Machinery
- StackOverflow: How can I use Microsoft.Extensions.DependencyInjection
-
Andrew Lock - ASP.NET Core in Action
- 10 Service configuration with dependency injection - p. 267
4. Application Configuration using CreateDefaultBuilder
Module Goal: Explain CreateDefaultBuilder's purpose and uses. Identify common configuration patterns in ASP.NET Core.
Resources:
-
Andrew Lock - ASP.NET Core in Action
- 11 Configuring an ASP.NET Core application - 303
Creating APIs with ASP.NET Core
5. Minimal API
Module Goal: Create an API that responds to requests with at least 4 different endpoints. Create an endpoint that returns multiple status codes based on a condition.
Resources:
- Microsoft: Minimal APIs overview
- Microsoft: Minimal APIs quick reference
- C# Corner: Restful API In ASP.NET
-
Andrew Lock - ASP.NET Core in Action
- 9.1 What is a Web API and when should you use one? - 235
- 9.6 Generating a response from a model - 258
6. Connecting Your API to PostgreSQL using Entity Framework
Module Goal: Connect the fifth module's API to a PostgreSQL database using Entity Framework and create API endpoints to handle CRUD operations.
Resources:
- C# Corner: Building a Robust ASP.NET Core Web API with PostreSQL
- ASP.NET Boilerplate: EF Core PostreSQL Integration
- SuncFusion: Creating an ASP.NET Core CRUD Web API with Dapper and PostgreSQL
-
Andrew Lock - ASP.NET Core in Action
- 12.4 Querying data from and saving data to the database - 355
6a. Connect to PostgreSQL with ADO.NET
Module Goal: Branch the previous module's project and access the PostgreSQL database without using EF. Perform data calls directly on ADO.NET.
Resources:
- Microsoft: ADO.NET Overview
- [Microsft Q&A: ASP.NET Core Web App with SQL (No Entity Framework)](https://learn.microsoft.com/en-us/answers/questions/1123214/asp-net-core-web-app-with-sql-(no-entity-framework)
- Devart: How to connect to PostgreSQL in .NET with C#
7. Controller-Based API
Module Goal: Explain the differences and cost/benefit of a Controller-Based API vs a Minimal API. Refactor your Minimal API into a Controller-Based API.
Resources:
- Microsoft: Choose between controller-based APIs and minimal APIs
- Microsoft: Create web APIs with ASP.NET Core
-
Andrew Lock - ASP.NET Core in Action
- 9.1 Creating your first Web API Controller 238
- 9.2 Applying the MVC design pattern to a Web API
- 9.4 Attribute routing: taking fine-grained control of your URLs - 246
8. Adding Built-In and Custom Middleware
Module Goal: Identify most common ASP.NET middleware and be able to explain what it is used for. Create your own middleware function and mount it to the application.
Resources:
- Microsoft: ASP.NET Core Middleware
- Microsoft: Write custom ASP.NET Core middleware
- Microsoft: Request and response operations in ASP.NET Core
-
Andrew Lock - ASP.NET Core in Action
- 3 Handling requests with the middleware pipeline
The Model-View-Controller Design Pattern
9. ASP.NET MVC Starting Templates & Basic Routing
Module Goal: Create an MVC application that responds to GET and POST requests at at multiple different routes.
Resources:
- Microsoft: ASP.NET Core MVC Tutorial
- TutorialsTeacher: MVC Architecture
-
Andrew Lock - ASP.NET Core in Action
- 2.8 MVC middleware and the home controller - 52
- 4.1 An introduction to MVC - 95
- 4.2 MVC controllers and action methods 113
- 5 Mapping URLs to methods using conventional routing - 120
10. Binding Models to your Views in Razor Syntax
Module Goal: Create a Razor view from scratch. Create a model to attach to that view. Enable CRUD operations on the page model from scratch.
Resources:
- Microsoft: Razor syntax reference for ASP.NET Core
- Microsoft: Layout in ASP.NET Core
- Microsoft: Create reusable UI using the Razor class library project in ASP.NET Core
-
Andrew Lock - ASP.NET Core in Action
- 7 Rendering HTML using Razor views - 175
11. Using Tag Helpers for User Input other Useful Things
Module Goal: Identify and explain the most common ASP.NET tag helpers. Handle different types of user input. Create your own custom tag helper.
Resources:
- Microsoft: Tag Helpers in ASP.NET Core
- Microsoft: ASP.NET Core built-in Tag Helpers
-
Andrew Lock - ASP.NET Core in Action
- 8 Building Forms with Tag Helpers
- 19.4 Creating a custom Razor Tag Helper 591
12. Using DataAnnotations to Validate Your Models
Module Goal: Identify and explain the most common ASP.NET DataAnnotations. Add validation to your model.
Resources:
- ByteHide: Data Annotations in C#: Your Complete Guide
- Microsoft: System.ComponentModel.DataAnnotations Namespace
-
Andrew Lock - ASP.NET Core in Action
- 6.3 Handling user input with model validation
13. Styling your view models
Module Goal: Describe common approaches to styling Views in ASP.NET Core. Implement CSS styles and connect the application to Bootstrap. Create a layout and edit its styles.
Resources:
-
Syncfusion: ASP.NET Core Succinctly
- Using CSS isolation - 36
- Bootstrap: Get started with Bootstrap
- Bootstrapdash: How to Use ASP.NET with Core Bootstrap
- Infragistics: Styling Your Application
14. ASP.NET Core Identity, and Adding Authentication & Authorization
Module Goal: Using ASP.NET Core Identity, add authentication to your application. Describe the common authorization methods used by ASP.NET Core, choose one to implement into your MVC application.
Resources:
-
Andrew Lock - ASP.NET Core in Action
- 14.1 Introducing authentication and authorization - 402
- 14.2 What is ASP.NET Core Identity - 412
- 14.4 Adding ASP.NET Core Identity to an existing project - 423
- 14.5 Managing users: adding new claims to users - 428
- 15 Authorization: securing your application 432
Polish and Deploy Your Application
15. Add unit tests for your action methods using NUnit
Module Goal: Add tests to a controller of your ASP.NET application. Create tests that increase the confidence of the application working. Understand the basic syntax of NUnit as it relates to the form of a unit test.
Resources:
- Microsoft: Unit testing C# with NUnit and .NET Core
- C# Corner: Introduction to NUnit Testing Framework
- testRigor: ASP.NET Testing
-
Andrew Lock - ASP.NET Core in Action
- 20.4 Unit testing MVC controllers
16. Publish your application with IIS Express
Module Goal: Describe the use of IIS Express and the term "publish". Explain the hosting model of ASP.NET Core. Publish your MVC application to IIS Express.
Resources:
- Microsoft: Publish an ASP.NET Core app to IIS
- Microsoft: Native AOT Deployment
-
Andrew Lock - ASP.NET Core in Action
- 16.1 Understanding the ASP.NET Core hosting model - 463
- 16.2 Publishing your app to IIS - 470
16a. Deploy your application to Linux with Nginx
Module Goal: Provision an EC2 instance of Ubuntu. Configure Nginx to serve the application on a domain and point a DNS provider to the address. Bonus points for setting up CI/CD with Github Actions.
Resources:
- Microsoft: Host ASP.NET Core on Linux with Nginx
- nginx: Beginner's Guide
- nginx: Docs
-
Andrew Lock - ASP.NET Core in Action
- 16.3 Hosting an application on Linux
17. Configure Logging to Monitor your application
Module Goal: Add searchable and useful logging to the application using Microsoft-provided logging to monitor the application.
Resources:
- Microsoft: Logging in .NET Core and ASP.NET Core
- Dev.to: Logging in ASP.NET
-
Andrew Lock - ASP.NET Core in Action
- 17.1 Using logging effectively in a production app - 503
- 17.2 Adding log messages to your application - 507
- 17.5 Structured logging: creating searchable, useful logs
Top comments (2)
Thanks for sharing.
Bookmarked!