ASP.NET MVC so với Web Forms Smackdown (p.1)
Bài đăng này đã không được cập nhật trong 9 năm
_Bài viết này được viết khi ASP.NET MVC 2 đã ra khỏi dây chuyền lắp ráp. Kể từ đó MVC 3 (4) đã được phát hành. Một cải tiến là "application/json" kiểu MIME được hỗ trợ đầy đủ. Điều này có nghĩa rằng bạn có thể POST và trả về nội dung JSON. _
ASP.NET MVC là entry mới nhất của Microsoft vào thế giới của phát triển ứng dụng web. Nó được giới thiệu vào năm 2009 như là một thay thế cho ASP.NET Web Forms.
Microsoft đã định vị ASP.NET MVC là bước tiến lớn tiếp theo trong phát triển web. Tuy nhiên, để giữ nó ở góc độ MVC là chỉ một mẫu thiết kế. ASP.NET MVC là thực hiện của Microsoft trong những mẫu thiết kế MVC để phục vụ lên các trang web. MVC là viết tắt của Model View Controller. Một ancronym tốt hơn sẽ như MVC-R và R là một phần thiết yếu để thực hiện của Microsoft.
ASP.NET MVC và ASP.NET Web Forms đưa cách tiếp cận rất khác nhau để đạt được cùng một mục tiêu. Không phải là một thuốc chữa bách bệnh. Trong bài viết này tôi sẽ so sánh và đối cả hai khuôn khổ và cho phép bạn thực hiện một quyết định như mà để sử dụng.
Đầu tiên, chúng ta sẽ đi qua như thế nào ASP.NET Web Forms và ASP.NET MVC xử lý một yêu cầu từ một trình duyệt Web. Tiếp theo, chúng ta sẽ xem xét các mẫu thiết kế chủ yếu được sử dụng bởi mỗi framework. Sau đó chúng tôi sẽ làm việc thông qua một vài ngôn ngữ kịch bản lập trình phổ biến. Cuối cùng, chúng tôi sẽ tổng hợp những ưu và khuyết điểm của từng khuôn khổ.
Được rồi, do đó, hãy bắt đầu ...
Làm thế nào có yêu cầu chế biến
Hãy bắt đầu bằng việc mô tả làm thế nào mỗi framework xử lý một yêu cầu từ trình duyệt Web. Hãy nhớ rằng những gì sau là không có nghĩa là toàn diện và chỉ là một hồ sơ cá nhân của xử lý mặc định gắn liền với mỗi framework ...
ASP.NET MVC
Các ASP.NET MVC xử lý các yêu cầu từ một trình duyệt Web như thế này ...
- Các trình duyệt Web gửi một yêu cầu đến IIS. IIS chuyển yêu cầu đến các đường dẫn ASP.NET, nơi nó được xử lý bởi các Router.
- Các Router diễn giải các yêu cầu và chuyển nó vào các điều khiển thích hợp.
- Bộ điều khiển truy xuất dữ liệu thích hợp cho yêu cầu. Các dữ liệu được gọi là một Model.
- Bộ điều khiển truy xuất View thích hợp cho yêu cầu.
- Các điều khiển liên kết với các View để mô hình để tạo ra một tài liệu HTML. Tài liệu này được gửi lại cho trình duyệt Web.
ASP.NET Web Forms
Trong khi đó, ASP.NET Web Forms xử lý các yêu cầu từ một trình duyệt Web như thế này ...
- Các trình duyệt Web gửi một yêu cầu đến IIS. IIS chuyển yêu cầu đến các đường dẫn ASP.NET.
- Các đường dẫn ASP.NET chuyển yêu cầu tới các trang thích hợp.
- Trang lấy dữ liệu thích hợp cho các yêu cầu và tạo ra một tài liệu HTML. Tài liệu này được gửi lại cho trình duyệt Web.
Những điểm tương đồng và khác biệt
Trong ASP.NET MVC Controller sẽ xác định những gì cần phải được trả lại cho trình duyệt Web. Bộ điều khiển gắn bó với một View và một Model với nhau để tạo ra một tài liệu HTML. Có một mối quan hệ một-nhiều giữa Controller và việc xem và mô hình có sẵn cho nó. Như vậy một Controller có thể sản xuất nhiều loại khác nhau của tài liệu HTML.
Trong khi đó, một ASP.NET Web Forms trang bao gồm các mã phía máy chủ (.aspx.cs) và HTML markup (aspx). Mã liên kết dữ liệu để đánh dấu để tạo ra một tài liệu HTML. Có một mối quan hệ một-một giữa mark-up của một trang và mã code của nó. Một trang chỉ có thể sản xuất một loại tài liệu HTML.
Trong ASP.NET MVC dữ liệu được đóng gói vào một Model. Chỉ có một Model có thể bị ràng buộc vào một View. ASP.NET Web Forms không có hạn chế đó. Một trang có thể được liên kết với nhiều nguồn dữ liệu.
Các mẫu thiết kế
Có ba mẫu thiết kế lõi được dùng bởi ASP.NET Web Forms và ASP.NET MVC. Đây là những mẫu MVC, các mẫu Front Controller, và các mẫu trang Controller. Khi bạn nghĩ "MVC" bạn nên suy nghĩ của Front Controller và các mẫu MVC. Khi bạn nghĩ rằng "Web Forms", bạn nên nghĩ đến những mẫu trang Controller.
Model View Controller
Các mô hình MVC mô tả cách các thực thể của ASP.NET MVC liên quan và tương tác với nhau.
Các Model không biết về các View hoặc Controller. Mô hình chỉ cho thấy nhiều dữ liệu. Các điều khiển biết về các View và Model. Điều này là bởi vì các điều khiển có thể lấy dữ liệu từ Model và trả lại View. Các View chỉ biết về các Model. Điều này là bởi vì các View cần để có thể liên kết với các dữ liệu do các Model. View không bao giờ đưa ra yêu cầu đối với các Controller.
Các yêu cầu luôn được yêu cầu đến các máy chủ Web- chuyển nó vào các Router, và chuyển nó vào các Controller.
Front Controller
ASP.NET MVC sử dụng các mô hình Front Controller để xác định làm thế nào để xử lý các yêu cầu từ một trình duyệt Web.
Trong một Front Controller không có ánh xạ trực tiếp giữa một yêu cầu và tài nguyên. Thay vào đó, yêu cầu được dịch bởi Front Controller và chuyển đến các Resource thích hợp.
Trong ASP.NET MVC các Router hoạt động như một Front Controller. Yêu cầu thực hiện cho nó được dịch và chuyển đến các Controller thích hợp. Controller cũng hoạt động như một Front Controller. Khi một yêu cầu được chuyển đến nó bởi các Router nó quyết định Xem phù hợp để trở về trình duyệt Web.
Trang điều khiển
ASP.NET Web Forms sử dụng các mô hình trang điều khiển để xác định làm thế nào để xử lý các yêu cầu từ một trình duyệt Web.
Trong một điều khiển Trang có một mapping trực tiếp giữa một yêu cầu và tài nguyên. Yêu cầu trình duyệt Web sẽ tương ứng đến một tài nguyên.
Trong ASP.NET Web Forms, trang đang được yêu cầu là các Controller - và nó chỉ biết làm thế nào để trở lại chính nó.
Hãy nhớ rằng một ứng dụng ASP.NET Web Forms sử dụng một cơ chế routing như trong sử dụng MVC. Trong kịch bản này, các ứng dụng sẽ sử dụng các mô hình Front Controller và các mô hình Page Controller.
All rights reserved