Tài liệu

Sự Khác Biệt Giữa ASP.NET Web Forms và ASP.NET MVC

Huy Erick

Dù đã tồn tại trên 5 năm, cả ASP.NET Web Forms và ASP.NET MVC đều có những ưu điểm và nhược điểm riêng. Trên các diễn đàn và cộng đồng tin học, lập trình, chúng...

Dù đã tồn tại trên 5 năm, cả ASP.NET Web Forms và ASP.NET MVC đều có những ưu điểm và nhược điểm riêng. Trên các diễn đàn và cộng đồng tin học, lập trình , chúng ta thường nghe những câu hỏi như: "Sự khác biệt giữa ASP.NET MVC và ASP.NET WebForms là gì?" hoặc "ASP.NET MVC có thể thay thế ASP.NET WebForms trong tương lai không?". Bài viết này sẽ giúp bạn hiểu rõ hơn về hai mô hình này.

Web Forms có ViewState, MVC thì không

ViewState là một cơ chế quản lý trạng thái cấp trang. Nếu bạn có nhiều server-side web control trên một trang, ViewState của bạn sẽ trở nên cực kỳ lớn. Phần mã HTML trả về cho client nên nhỏ nhất có thể, vì vậy không nên có kích thước biến ViewState lớn. Trong khi đó, MVC không có ViewState và sử dụng model/ViewModels để truyền dữ liệu giữa các Views.

WebForms có ViewState trong khi MVC không có.

Web Forms có một Code-Behind Model, MVC chỉ có các model

Code-Behind là cách để đính kèm code C# hoặc VB với một trang web và hoạt động dựa trên những hành động cụ thể khi chúng xuất hiện trên trang. Khi bạn biên dịch một Web Form có chứa code-behind, nó trở thành một phần của assembly để tạo ra chức năng của trang web đó. Trong khi đó, MVC chỉ có các model và không có Code-Behind model.

Web Forms có các Web Control, MVC không có

MVC không có bất kỳ server-side control nào, điều này khiến nhiều lập trình viên phàn nàn. Tuy nhiên, sau một thời gian phát triển, các lập trình viên bắt đầu hiểu rõ mô hình MVC và có thể xây dựng các control tùy chỉnh của riêng họ hoặc sử dụng các thư viện như Bootstrap.

Web Forms có các thành phần State-aware, MVC sử dụng hướng tiếp cận template

Web Forms cho phép lập trình viên đặt các control trên một trang web và thao tác với chúng trong code-behind. Các server-side control có thể giữ trạng thái của chúng khi ViewState được bật. Trái lại, MVC không sử dụng các control, mà trạng thái và dữ liệu được xử lý và hiển thị trên View.

Web Forms không tách biệt các mối quan tâm, MVC thì ngược lại

Việc quản lý logic nghiệp vụ trong Web Forms thường không tách biệt và không thể sử dụng lại được cho các ứng dụng khác. Trái lại, triết lý của MVC là "Thin Controllers, Fat Models", nghĩa là các model sẽ chứa logic nghiệp vụ trong khi các controller chuyển dữ liệu từ model tới view.

Web Forms và MVC đều có thể sử dụng Session

Cả Web Forms và MVC đều có thể sử dụng Session để truyền dữ liệu giữa các View. Tuy nhiên, trong MVC có nhiều cách khác để truyền dữ liệu mà không cần phải sử dụng Session.

Web Forms có IsPostBack, MVC có GET và POST

lập trình viên web Forms thường gặp vấn đề khi quên thêm dòng lệnh "if(IsPostBack) return;" trong sự kiện Page_Load của trang web. Điều này có vẻ lạ với những lập trình viên kinh nghiệm từ PHP hoặc các ngôn ngữ web khác. Trái lại, MVC sử dụng các chuẩn HTTP Protocol như GET, POST, DELETE và redirect để xử lý dữ liệu.

Web Forms không dễ để sử dụng unit-test, MVC được xây dựng để hỗ trợ test

Việc viết unit-test cho các ứng dụng Web Forms thường khó khăn, trừ khi các business object được viết cẩn thận. Với MVC, bạn có thể xây dựng các test cho các controller, routes và action results.

Web Forms có một thẻ Form lớn, MVC có thể có nhiều thẻ form trên một trang

Web Forms chỉ cho phép có một thẻ form duy nhất ôm lấy tất cả nội dung trang. Trong khi đó, MVC cho phép bạn có nhiều thẻ form trên một trang.

Nhìn chung, thông qua so sánh trên, bạn đã có cái nhìn tổng quan về 2 mô hình này. Tuy nhiên, sự lựa chọn giữa Web Forms và MVC phụ thuộc vào kịch bản và yêu cầu của dự án. Nếu bạn muốn trở thành một lập trình viên chuyên nghiệp trên ngôn ngữ ASP.NET, khóa học "ASP.NET for Developer" của Stanford - dạy kinh nghiệm lập trình là sự lựa chọn số 1.

Hãy đăng ký khóa học tại đây để có những trải nghiệm thú vị nhé!

Sưu tầm và Tổng hợp: Nhật Lệ (Stanford - Nâng tầm tri thức)

1