Sự khác biệt giữa ASP.NET MVC và ASP.NET WebForms là gì?

24 tháng 02, năm nay – 5030 lượt xem

Bài viết được dịch từ trang web Danylkoweb

Học lập trình web ASP>NET MVC tốt nhất” height=”363″ src=”https://media.techmaster.vn/api/fileman/Uploads/ImageBlog/hoc-lap-trinh-asp-net-webforms-mvc-23022016-1.jpg” title=”Sự khác nhau giữa ASP.NET Web Form và ASP.NET MVC là gì?” width=”640″/></p>
<p>Trước khi có ASP.NET, tôi đã sử dụng ASP Classic và sử dụng Delphi 2/3 để build các thư viện liên kết động ISAPI, hay các file DLL. </p>
<div style=

Bạn đang đọc: Sự khác biệt giữa ASP.NET MVC và ASP.NET WebForms là gì?

Sau đó, sự Open của ASP.NET vào năm 2002 đã đổi khác diện mạo phương pháp tăng trưởng web. C # là trọn vẹn mới, những lập trình viên Visual Basic mở màn quy trình quy đổi từ Visual Basic sang VB.NET và thưởng thức phong thái tăng trưởng web mới. Đó là khi Web Forms được trình làng cùng với ASP.NET.Kể từ ngày đó, tôi vẫn gặp nhiều yếu tố với Web Forms. Tôi luôn luôn phải kiểm tra để chắc như đinh rằng đã thêm vào IsPostBack là dòng tiên phong trong sự kiện Page_Load của mình, phải hiểu biết để giữ cho biến ViewState không có kích cỡ quá lớn, giảm thiểu dung tích cho phía client bằng cách không sử dụng quá nhiều những web controls, v.v …Tôi không cảm thấy tự nhiên so với quy trình tiến độ tăng trưởng web bằng công nghệ tiên tiến của Microsoft vào lúc đó. Khoảng 5 năm sau đó ( năm 2007 ), ASP.NET MVC CTP đã được ra mắt. Một lần nữa, phương pháp tăng trưởng ứng dụng web trên công nghệ Microsoft lại biến hóa. Không những biến hóa, mà nó còn tạo ra một chuẩn mới trong việc tăng trưởng web .Một số lập trình viên hét lên rằng ASP.NET MVC là một bước lùi và rằng tất cả chúng ta đã quay trở lại những ngày ASP Classic một lần nữa, nhưng trong mắt tôi, đó là một bước đi trọn vẹn đúng đắn của Microsoft. Nó giúp cho quy trình tăng trưởng web trở nên tự nhiên hơn .Đối với một lập trình viên mới tiếp cận công nghệ tiên tiến Microsoft, tôi sẽ khuyên nên sử dụng ASP.NET MVC. Nhưng kể từ năm 2002, đã có hàng ngàn, nếu không muốn nói là hàng triệu, những ứng dụng Web Form được tạo ra. Bởi vậy tất cả chúng ta cũng phải chăm sóc đến phần ” di sản ” này .

Hiện nay Techmaster cũng đang có khóa học ” Xây dựng mạng xã hội san sẻ ảnh với ASP.NET MVC “. Giảng viên là anh Nguyễn Thanh Tùng, kiến trúc sư giải pháp. NET tại công ty MISA. Anh Tùng còn là chuyên viên công nghệ tiên tiến Microsoft ( Microsoft Most Valuable Professional ) .

Thuật ngữ

Trước khi nói về sự độc lạ giữa WebForms và MVC, tất cả chúng ta cần phải biết sự khác nhau giữa những công nghệ tiên tiến của Microsoft. Trước đây, tôi đã nghe một vài lập trình viên bị nhầm lẫn giữa những công nghệ tiên tiến này .

  • .NET Framework – Một công nghệ được giới thiệu vào năm 2002, bao gồm khả năng tạo ra các file thực thi, các ứng dụng web, và các service sử dụng C#, Visual Basic, và F# (xem thêm wikipedia).
  • ASP.NET – Một server-side web application framework mã nguồn mở, là một tập con của .NET Framework tập trung cụ thể vào việc xây dựng ứng dụng web, các trang web và web services.
  • ASP.NET Web Forms – (2002 – đến nay)  Một kỹ thuật độc quyền được phát triển bởi Microsoft để quản lý state và form data trên nhiều trang. Bản chất của các trang web là stateless nhưng Microsoft đã chuyển thành các trang stateful bằng cách tạo ra kỹ thuật Web Forms.
  • ASP.NET MVC – (2008 – đến nay) Một web application framework mã nguồn mở tuân theo design pattern Model-View-Controller.

Sau khi đã phân biệt những công nghệ tiên tiến này một cách rõ ràng, tất cả chúng ta hãy cùng điểm qua những độc lạ giữa ASP.NET Web Forms và MVC nhé !

Sự khác nhau giữa ASP.NET Web Forms và ASP.NET MVC

Học lập trình web ASP>NET MVC tốt nhất” height=”276″ src=”https://media.techmaster.vn/api/fileman/Uploads/ImageBlog/hoc-lap-trinh-asp-net-webforms-mvc-23022016-2.png” title=”Sự khác nhau giữa ASP.NET Web Form và ASP.NET MVC là gì?” width=”250″/>Mặc dù các công nghệ này đã có tuổi đời trên 5 năm, nhưng chúng đều có những điểm thuận lợi và bất lợi của nó. </p>
<ul>
<li><strong>Web Forms có ViewState, MVC thì không</strong></li>
</ul>
<p>Như tôi đã đề cập ở trên, ViewState là một chính sách quản trị 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 hoàn toàn có thể, thế cho nên không nên có kích cỡ biến ViewState lớn .MVC không có một ViewState. Nó sử dụng Mã Sản Phẩm / ViewModels để chuyển tài liệu qua lại giữa những Views .</p>
<ul>
<li><strong>Web Forms có một Code-Behind Model, MVC chỉ có các model</strong></li>
</ul>
<p>Code-Behind là một cách để đính kèm code C # hoặc VB với một website và hoạt động giải trí dựa trên những hành vi đơn cử khi chúng Open 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 ( hay DLL ) để tạo ra tính năng của website đó .</p>
<ul>
<li><strong>Web Forms có các Web Control, MVC không có</strong></li>
</ul>
<p>Có rất nhiều lập trình viên đã phàn nàn rằng MVC không có bất kể server-side control nào cả. Điều này là chính do họ đã quen thuộc với cách Web Forms thao tác trên một trang. Các control luôn có sẵn cho họ sử dụng. Cuối cùng, họ khởi đầu kiến thiết xây dựng những custom server control của riêng mình .Trong khi Web Forms có một số lượng lớn những server control, thì MVC lại có một cách tiếp cận khác. Sau một thời hạn tăng trưởng, những lập trình viên mở màn hiểu rõ quy mô MVC và đòn kích bẩy bởi JavaScript, nơi họ hoàn toàn có thể kiến thiết xây dựng những custom control riêng của họ hoặc thậm chí còn sử dụng một thư viện của bên thứ ba như Bootstrap cho giao diện người dùng .</p>
<ul>
<li><strong>Web Forms có các thành phần State-aware, MVC sử dụng hướng tiếp cận template</strong></li>
</ul>
<p>Đây là lý do tại sao rất khó để chuyển đổi một ứng dụng Web Forms sang một ứng dụng MVC.</p>
<div style=

Xem thêm: Sử dụng LinearLayout trong Android

Trong Web Forms, những lập trình viên đặt những control lên một website và có thể thao tác với những control này trên sever trong code-behind. Các server-side control thậm chí còn còn giữ được trạng thái của chúng khi ViewState được bật ( turned on ) .Với MVC, bạn không thao tác với những controls, tài liệu được giải quyết và xử lý rồi hiển thị lên View. Cú pháp Razor trong một View là cực kỳ can đảm và mạnh mẽ .

  • Web Forms không có sự tách biệt các mối quan tâm (separation of concerns), MVC thì ngược lại!

Đã rất nhiều lần tôi nhìn thấy những lập trình viên tạo ra một Web Form, kéo thả control và viết code giải quyết và xử lý sự kiện cho control đó. Và khi viết như vậy thì logic nhiệm vụ đó sẽ không hề sử dụng lại được cho một ứng dụng khác .Triết lý của MVC với logic nhiệm vụ là ” Thin Controllers, Fat Models “, có nghĩa là những Mã Sản Phẩm sẽ chứa toàn bộ những logic nhiệm vụ của bạn trong khi những controller chuyển hiệu quả tài liệu từ Mã Sản Phẩm tới view .

  • Web Forms và MVC đều có thể sử dụng Session, nhưng tôi khuyên bạn đừng nên sử dụng

Cũng giống như ViewState, Session cũng có nhiều mặt điểm yếu kém của nó. Trong MVC, có một số ít cách truyền dữ liệu qua lại giữa những View mà không cần phải sử dụng đến session .

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

Các lập trình viên Web Form mới vào nghề nhiều lúc thường quên thêm một dòng lệnh ” if ( IsPostBack ) return ; ” ở sự kiện Page_Load trong những website. Điều này có vẻ như lạ so với một số ít lập trình viên web kỳ cựu đến từ PHP hoặc ngôn từ web khác .Toàn bộ sáng tạo độc đáo của Web Forms là khi bạn đang request một trang, nó được coi là một GET ( truy vấn vào trang lần tiên phong ) và trang được khởi tạo. Khi bạn submit một form, thì Page_Load sẽ phát hiện ra rằng đó là một Postback và sự kiện Page_Load sẽ không được thực thi .MVC có những chuẩn HTTP Protocol trải qua những lệnh GET, POST, DELETE, và redirect. Khi bạn bấm vào một nút submit, form ( và tài liệu ) sẽ được gửi tới controller và controller sẽ giải quyết và xử lý nó .Một lần nữa, cách mà MVC giải quyết và xử lý là tự nhiên hơn so với Web Forms .

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

Các lập trình viên web form thường gặp phải một yếu tố. Trừ khi những business object của họ được viết cẩn trọng, còn nếu không sẽ rất khó viết unit-test .Với MVC, bạn hoàn toàn có thể thiết kế xây dựng test so với những controller, routes, 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ỉ được cho phép có một thẻ form duy nhất ôm lấy tổng thể nội dung trang. Còn MVC được cho phép bạn có nhiều thẻ form trên một trang .

Kết luận

Sau khi đã thưởng thức cả 2 công nghệ tiên tiến trong một khoảng chừng thời hạn 10 năm, tôi rất biết ơn vì sự Open kịp thời của ASP.NET MVC. Tôi ngay lập tức chộp lấy nó và thưởng thức một cách tăng trưởng web tuyệt vời hơn .

Như tôi đã nói ở trên, nó mang lại cảm giác tự nhiên hơn với các lệnh.POST, GET, DELETE, Redirect. Và với phiên bản ASP.NET MVC 6 thì công việc phát triển web của bạn sẽ trở nên dễ dàng và linh hoạt hơn bao giờ hết.

Liệu tôi có bỏ sót một điều gì đó về sự khác biệt giữa Web Forms và MVC? Hãy để lại ý kiến của bạn trong phần bình luận phía dưới nhé!

Về tác giả bài viết:

Học lập trình online ASP.NET MVC xây dựng ứng dụngTác giả bài viết là Jonathan Danylko. Anh là người có trên 30 năm kinh nghiệm lập trình và hiện nay Jonathan đang tập trung vào lĩnh vực ASP.NET MVC Best Practices, Code Exorcisms (refactorings)…