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

Thảo luận trong 'Tin tức lập trình Website' bắt đầu bởi aspnetit007, 11/10/16.

  1. aspnetit007
    Tham gia ngày:
    12/10/15
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Đối với một lập trình viên mới tiếp cận công nghệ 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, các ứng dụng Web Form được tạo ra. Bởi vậy chúng ta cũng phải quan tâm đến phần "di sản" này.

    Học lập trình web ASP>NET MVC tốt nhất 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ó.

    [​IMG]





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

    Như tôi đã đề cập ở trên, 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ể, bởi vậy không nên có kích thước biến ViewState lớn.

    MVC không có một ViewState. Nó sử dụng model/ViewModels để chuyển dữ liệu qua lại giữa các Views.


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

    Code-Behind là một 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 (hay DLL) để tạo ra chức năng của trang web đó.


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

    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à bởi vì họ đã quen thuộc với cách Web Forms làm việc trên một trang. Các control luôn có sẵn cho họ sử dụng. Cuối cùng, họ bắt đầu xây dựng các custom server control của riêng mình.

    Trong khi Web Forms có một số lượng lớn các server control, thì MVC lại có một cách tiếp cận khác. 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à đòn bẩy bởi JavaScript, nơi họ có thể xây dựng các custom control riêng của họ hoặc thậm chí sử dụng một thư viện của bên thứ ba như Bootstrap cho giao diện người dùng.

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

    Đâ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.

    Trong Web Forms, các lập trình viên đặt các control lên một trang web và có thể thao tác với những control này trên máy chủ trong code-behind. Các server-side control thậm chí 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 làm việc với các controls, dữ liệu được xử lý rồi hiển thị lên View. Cú pháp Razor trong một View là cực kỳ 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 các lập trình viên tạo ra một Web Form, kéo thả control và viết code xử lý sự kiện cho control đó. Và khi viết như vậy thì logic nghiệp vụ đó sẽ không thể sử dụng lại được cho một ứng dụng khác.

    Triết lý của MVC với logic nghiệp vụ là "Thin Controllers, Fat Models", có nghĩa là các model sẽ chứa tất cả các logic nghiệp vụ của bạn trong khi các controller chuyển kết quả dữ liệu từ model 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 nhược điểm của nó. Trong MVC, có một số cách truyền dữ liệu qua lại giữa các View mà không cần phải sử dụng đến session.

    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 vấn đề. Trừ khi các business object của họ được viết cẩn thận, còn nếu không sẽ rất khó viết unit-test.

    Với MVC, bạn có thể xây dựng test đối với các controller, routes, action results...

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

    Các lập trình viên Web Form mới vào nghề đôi khi thường quên thêm một dòng lệnh "if( IsPostBack) return;" ở sự kiện Page_Load trong các trang web. Điều này có vẻ lạ đối với một số lập trình viên web kỳ cựu đến từ PHP hoặc ngôn ngữ web khác.

    Toàn bộ ý tưởng của Web Forms là khi bạn đang request một trang, nó được coi là một GET (truy cập vào trang lần đầu tiên) 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ó các chuẩn HTTP Protocol thông qua các lệnh GET, POST, DELETE, và redirect. Khi bạn bấm vào một nút submit, form (và dữ liệu) sẽ được gửi tới controller và controller sẽ xử lý nó.

    Một lần nữa, cách mà MVC xử lý là tự nhiên hơn so với Web Forms.

    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. Còn MVC cho phép bạn có nhiều thẻ form trên một trang.
     
    Cảm ơn đã xem bài:

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

    Last edited by a moderator: 11/1/17


Chủ để tương tự : Sự khác
Diễn đàn Tiêu đề Date
Tin tức lập trình Website Sửa file Hosts trỏ tên miền DNS test kiểm tra website trên Windows/Mac/Linux 1/10/21
Tin tức lập trình Website Lỗi: Không sử dụng trình nghe bị động để cải thiện hiệu suất cuộn trong wordpress 25/12/20
Tin tức lập trình Website Magento là gì? Tại sao nên sử dụng Magento? 14/8/20
Tin tức lập trình Website Lỗi Part of this page are not secure such as images khi cài xong SSL 14/1/20
Tin tức lập trình Website Cài đặt www cho subdomain trong quản lý DNS domian như thế nào? 4/7/19