Bài 1: Giới thiệu về Trình quản lý quảng cáo
Bài Giảng: Tìm Hiểu Về Cấu Trúc Dự Án ASP.NET Core
1. Giới Thiệu
ASP.NET Core là một framework mã nguồn mở, đa nền tảng dành cho việc phát triển các ứng dụng web hiệu suất cao. Khi tạo một dự án ASP.NET Core, Visual Studio hoặc CLI sẽ tạo một cấu trúc cơ bản gồm nhiều thư mục và tệp quan trọng.
2. Cấu Trúc Cơ Bản Của Dự Án ASP.NET Core
Một dự án ASP.NET Core bao gồm các thư mục và tệp quan trọng như sau:
2.1. Thư mục wwwroot
- Chứa tài nguyên tĩnh như CSS, JavaScript, hình ảnh.
- Các tài nguyên này có thể truy cập trực tiếp từ trình duyệt.
2.2. Tệp Program.cs
- Là điểm khởi động chính của ứng dụng.
- Xây dựng WebApplication và đăng ký các dịch vụ.
2.3. Thư mục Controllers
- Chứa các controller để xử lý logic yêu cầu từ client.
- Các controller kế thừa
ControllerBasehoặcController.
2.4. Thư mục Models
- Chứa các lớp mô hình dữ liệu.
- Kết hợp với Entity Framework Core hoặc các ORM khác.
2.5. Thư mục Views
- Chứa giao diện (View) trong mô hình MVC.
- Sử dụng Razor để kết hợp C# và HTML.
2.6. Thư mục Pages (cho Razor Pages)
- Dành cho các ứng dụng Razor Pages thay vì MVC.
2.7. Thư mục Data
- Chứa các lớp truy vấn dữ liệu (DbContext, Repository).
2.8. Thư mục Services
- Chứa các dịch vụ (được đăng ký trong Dependency Injection).
2.9. Tệp appsettings.json
- Chứa các cài đặt của ứng dụng như chuỗi kết nối database, logging, caching.
2.10. Tệp Startup.cs (trong ASP.NET Core các phiên bản trước .NET 6)
- Cấu hình middleware, routing, DI container.
3. Các Lệnh Cơ Bản Trong Program.cs
Tệp Program.cs là điểm khởi động của ứng dụng ASP.NET Core, nơi thiết lập các dịch vụ và middleware. Dưới đây là bảng giải thích từng lệnh quan trọng trong file này:
| Lệnh | Chức năng |
|---|---|
var builder = WebApplication.CreateBuilder(args); |
- Tạo một ứng dụng web mới. - Đọc cấu hình từ appsettings.json, biến môi trường, tham số dòng lệnh... - Thiết lập Dependency Injection (DI) container. |
builder.Services.AddControllersWithViews(); |
- Đăng ký dịch vụ MVC vào DI container. - Cho phép sử dụng cả Controllers (API) và Views (Razor Pages). - Nếu chỉ cần API (không có View), thay thế bằng AddControllers(). |
var app = builder.Build(); |
- Tạo ứng dụng từ builder, sẵn sàng để cấu hình middleware và xử lý HTTP request. |
if (!app.Environment.IsDevelopment()) |
- Kiểm tra nếu ứng dụng không chạy ở môi trường Development. |
app.UseExceptionHandler("/Home/Error"); |
- Chuyển hướng đến trang /Home/Error khi có lỗi. |
app.UseHsts(); |
- Bật HTTP Strict Transport Security (HSTS), bắt buộc trình duyệt chỉ sử dụng HTTPS. |
app.UseHttpsRedirection(); |
- Tự động chuyển hướng HTTP sang HTTPS để tăng bảo mật. |
app.UseStaticFiles(); |
- Cho phép phục vụ các tệp tĩnh (CSS, JS, hình ảnh) từ thư mục wwwroot. |
app.UseRouting(); |
- Bật hệ thống định tuyến, giúp ứng dụng xác định Controller và Action dựa trên URL. |
app.UseAuthorization(); |
- Bật phân quyền, đảm bảo người dùng chỉ có thể truy cập các phần được phép. |
app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); |
- Cấu hình route mặc định: - Nếu URL rỗng → Mặc định gọi HomeController và Action Index. - Hỗ trợ truyền tham số id (tùy chọn). |
app.Run(); |
- Chạy ứng dụng, bắt đầu lắng nghe và xử lý HTTP requests. |
📌 Tóm tắt:
builder: Khởi tạo ứng dụng, thiết lập dịch vụ.app: Cấu hình middleware, xử lý request.app.Run(): Bắt đầu chạy ứng dụng.
4. Các Lệnh Cơ Bản Trong Controllers
Controller trong ASP.NET Core xử lý yêu cầu từ client và trả về kết quả tương ứng. Dưới đây là một controller cơ bản:
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult About()
{
ViewData["Message"] = "Thông tin về ứng dụng.";
return View();
}
[HttpPost]
public IActionResult SaveData(MyModel model)
{
if (ModelState.IsValid)
{
// Xử lý lưu dữ liệu
return RedirectToAction("Index");
}
return View(model);
}
}
| Lệnh | Chức năng |
|---|---|
public class HomeController : Controller |
- HomeController kế thừa từ Controller, giúp sử dụng các tính năng như Model Binding, View Rendering, Redirect… |
public IActionResult Index() |
- Xử lý yêu cầu GET đến /Home/Index. - Trả về View mặc định Index.cshtml. |
public IActionResult About() |
- Xử lý yêu cầu GET đến /Home/About. - Gửi dữ liệu đến View bằng ViewData["Message"]. |
[HttpPost] |
- Xác định phương thức HTTP POST cho action tiếp theo. |
public IActionResult SaveData(MyModel model) |
- Xử lý yêu cầu POST khi client gửi form dữ liệu lên /Home/SaveData. - ModelState.IsValid kiểm tra dữ liệu hợp lệ. - Nếu hợp lệ: Lưu dữ liệu và chuyển hướng về Index. - Nếu không: Hiển thị lại form với dữ liệu lỗi. |
return View(); |
- Trả về một View tương ứng với Action. - Nếu không chỉ định View, ASP.NET Core mặc định tìm file View có cùng tên với Action (Index.cshtml, About.cshtml…). |
return RedirectToAction("Index"); |
- Chuyển hướng về Index sau khi xử lý thành công. |
📌 Tóm tắt:
- Controller xử lý logic yêu cầu.
- ActionResult trả về View hoặc điều hướng trang.
- ViewData truyền dữ liệu từ Controller đến View.
- ModelState kiểm tra dữ liệu hợp lệ trước khi xử lý.
5. Các Lệnh Cơ Bản Trong appsettings.json
Tệp appsettings.json chứa các thiết lập của ứng dụng như chuỗi kết nối database, logging, caching...
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
"EnableFeatureX": true
}
}
| Thành phần | Chức năng |
|---|---|
"Logging" |
- Cấu hình hệ thống ghi log của ứng dụng. |
"LogLevel" |
- Xác định mức độ log của từng thành phần trong ứng dụng. |
"Default": "Information" |
- Ghi log ở mức Thông tin (Information) trở lên cho tất cả các thành phần. |
"Microsoft.AspNetCore": "Warning" |
- Đối với Microsoft.AspNetCore, chỉ ghi log khi có cảnh báo (Warning) trở lên (không ghi log thông tin bình thường để tránh spam). |
"AllowedHosts": "*" |
- Cho phép ứng dụng chạy trên bất kỳ tên miền nào. - Nếu thay bằng "example.com;sub.example.com", chỉ các domain này mới được phép truy cập. - Không liên quan trực tiếp đến CORS, nhưng nếu kết hợp với CORS có thể giúp kiểm soát truy cập tốt hơn. |
📌 Tóm tắt:
- Logging giúp theo dõi lỗi & hoạt động của ứng dụng.
- AllowedHosts kiểm soát các domain có thể truy cập ứng dụng.
- Không thay thế CORS, nhưng có thể kết hợp với CORS để bảo mật hơn.
Bài tập số 2: Tạo Project WebDaoTao Bằng .NET 8
Yêu Cầu Bài Tập
- Tạo một project ASP.NET Core MVC tên
WebDaoTaosử dụng .NET 8. - Thêm một
HomeControllervà tạo viewIndex. - Chạy ứng dụng và kiểm tra kết quả.
- Nộp bài: Chụp ảnh màn hình cấu trúc project , kết quả chạy trên trình duyệt
Hướng Dẫn Thực Hiện
1. Tạo Project
2. Thêm HomeController
Tạo file HomeController.cs trong thư mục Controllers:
using Microsoft.AspNetCore.Mvc;
namespace WebDaoTao.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
3. Tạo View Index
Trong thư mục Views/Home/, tạo file Index.cshtml với nội dung:
@{
ViewData["Title"] = "Trang Chủ";
}
<h1>Chào mừng đến với WebDaoTao</h1>
<p>Đây là trang chủ.</p>