Tìm hiểu ASP.NET MVC và sự khác biệt với ASP.NET WebForm

Thời gian gần đây, khi lập trình web trên ngôn ngữ ASP.NET, các bạn thường quan tâm ngay và luôn đến MVC. Bạn cũng có nghe về ASP.NET WebForm truyền thống, cả những điểm yếu và giới hạn của nó. Không lẽ ASP.NET WebForm đã chết, không hoàn toàn như vậy, Microsoft muốn mọi người hiểu rằng có hai nền tảng song song nhau, hỗ trợ cho nhau, và cả hai đều là đối tượng cho việc phát triển hiện tại. Theo đánh giá của bản thân người viết, đã làm việc với 2 nền tảng công nghệ này, thì năng lực của chúng hoàn toàn tương đương nhau. Việc chọn lựa mô hình nào để học, hay làm việc là tùy hoàn cảnh, tùy sở thích người học. 

Trước khi nêu ra sự khác biệt ASP.NET MVC và ASP.NET WebFrom ta cần biết một số khái niệm cơ bản về mô hình MVC.

Để tìm hiểu thêm về MVC 4, MVC 5 bạn có thể tải về 2 cuốn ebook tại đây. Sách nay nên đọc.

Tổng quan về ASP.NET MVC:

 

ASP.NET MVC

Mẫu kiến trúc Model – View – Controller được sử dụng nhằm chi ứng dụng thành ba thành phần chính: model, view và controller. Nền tảng ASP.NET MVC giúp cho chúng ta có thể tạo được các ứng dụng web áp dụng mô hình MVC thay vì tạo ứng dụng theo mẫu ASP.NET Web Forsm. Nền tảng ASP.NET MVC có đặc điểm nổi bật là nhẹ (lighweigt), dễ kiểm thử phần giao diện (so với ứng dụng Web Forms), tích hợp các tính năng có sẵn của ASP.NET. Nền tảng ASP.NET MVC được định nghĩa trong namespace System.Web.Mvc và là một phần của name space System.Web.

MVC là một mẫu thiết kế (design pattern) chuẩn mà nhiều lập trình viên đã quen thuộc. Một số loại ứng dụng web sẽ thích hợp với kiến trúc MVC. Một số khác vẫn thích hợp với ASP.NET Web Forms và cơ chế postbacks. Đôi khi có những ứng dụng kết hợp cả hai kiến trúc trên.

– Model: Được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View để kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận và lưu dữ liệu là một phần của Model.

– View: Hiển thị các thông tin cho người dùng của ứng dụng và được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gởi đi các yêu cầu đến bộ điều khiển, sau đó là nhận lại các phản hồi từ bộ điề khiển và hiển thị kết quả cho người dùng. Các trang HTML, JSP, các thư viện thể và các file nguồn là một phần của View.

– Controller: là tầng trung gian giữa Model và View. Controller được giao nhiệm vụ nhận các yêu cầu từ phía máy khách. Một yêu cầu được nhận từ máy khách được thực hiện bởi một chức năng logic thích hợp từ thành phần Model và sau đó sinh ra các kết quả cho người dùng và được thành phần View hiển thị. ActionServlet, Action, ActionForm, struts-config.xml là các thành phần của Controller.

Lựa chọn áp dụng MVC trong xây dựng ứng dụng

Bạn cần phải xem xét kỹ càng việc áp dụng mô hình ASP.NET MVC hay mô hình ASP.NET Web Forms khi xây dựng một ứng dụng. Mô hình MVC không phải là mô hình thay thế cho Web Forms, bạn có thể dùng một trong hai mô hình.

Trước khi quyết định sử dụng MVC hay Web Forms cho một web site cụ thể, bạn cần phải phân tích lợi ích khi chọn một trong hai hướng.

Lợi ích của ứng dụng web dựa trên mô hình MVC

Nền tảng ASP.NET MVC mang lại những lợi ích sau:

  • Dễ dàng quản lý sự phức tạp của ứng dụng bằng cách chia ứng dụng thành ba thành phần model, view, controller
  • Nó không sử dụng view state hoặc server-based form. Điều này tốt cho những lập trình viên muốn quản lý hết các khía cạnh của một ứng dụng.
  • Nó sử dụng mẫu Front Controller, mẫu này giúp quản lý các requests (yêu cầu) chỉ thông qua một Controller. Nhờ đó bạn có thể thiết kế một hạ tầng quản lý định tuyến.
  • Hỗ trợ tốt hơn cho mô hình phát triển ứng dụng hướng kiểm thử (TDD)
  • Nó hỗ trợ tốt cho các ứng dụng được xây dựng bởi những đội có nhiều lập trình viên và thiết kế mà vẫn quản lý được tính năng của ứng dụng

Lợi ích của ứng dụng được xây dựng trên nền tảng Web Forms

  • Nó hỗ trợ cách lập trình hướng sự kiện, quản lý trạng thái trên giao thức HTTP, tiện dụng cho việc phát triển các ứng dụng Web phục vụ kinh doanh. Các ứng dụng trên nền tảng Web Forms cung cấp hàng tá các sự kiện được hỗ trợ bởi hàng trăm các server controls.
  • Sử dụng mẫu Page Controller.
  • Mô hình này sử dụng view state hoặc server-based form, nhờ đó sẽ giúp cho việc quản lý trạng thái các trang web dễ dàng.
  • Nó rất phù hợp với các nhóm lập trình viên quy mô nhỏ và các thiết kế, những người muốn tận dụng các thành phần giúp xây dựng ứng dụng một cách nhanh chóng.
  • Nói tóm lại, áp dụng Web Forms giúp giảm bớt sự phức tạp trong xây dựng ứng dụng, bởi vì các thành phần (lớp Page, controls,…) được tích hợp chặc chẽ và thường thì giúp bạn viết ít code hơn là áp dụng theo mô hình MVC.

Các tính năng của nền tảng ASP.NET MVC

  • Tách bạch các tác vụ của ứng dụng (logic nhập liệu, business logic, và logic giao diện), dễ dàng kiểm thử và mặc định áp dụng hướng phát triển TDD. Tất cả các tính năng chính của mô hình MVC được cài đặt dựa trên interface và được kiểm thử bằng cách sử dụng các đối tượng mocks, mock object là các đối tượng mô phỏng các tính năng của những đối tượng thực sự trong ứng dụng. Bạn có thể kiểm thử unit-test cho ứng dụng mà không cần chạy controller trong tiến trình ASP.NET, và điều đó giúp unit test được áp dụng nhanh chóng và tiện dụng. Bạn có thể sử dụng bất kỳ nền tảng unit-testing nào tương thích với nền tảng .NET.
  • MVC là một nền tảng khả mở rộng (extensible) & khả nhúng (pluggable). Các thành phần của ASP.NET MVC được thiết kể để chúng có thể được thay thế một cách dễ dàng hoặc dễ dàng tùy chỉnh. Bạn có thể nhúng thêm view engine, cơ chế định tuyến cho URL, cách kết xuất tham số của action-method và các thành phần khác. ASP.NET MVC cũng hỗ trợ việc sử dụng Dependency Injection (DI) và Inversion of Control (IoC). DI cho phép bạn gắn các đối tượng vào một lớp cho lớp đó sử dụng thay vì buộc lớp đó phải tự mình khởi tạo các đối tượng. IoC quy định rằng, nếu một đối tượng yêu cầu một đối tượng khác, đối tượng đầu sẽ lấy đối tượng thứ hai từ một nguồn bên ngoài, ví dụ như từ tập tin cấu hình. Và nhờ vậy, việc sử dụng DI và IoC sẽ giúp kiểm thử dễ dàng hơn.
  • ASP.NET MVC có thành phần ánh xạ URL mạnh mẽ cho phép bạn xây dựng những ứng dụng có các địa chỉ URL xúc tích và dễ tìm kiếm. Các địa chỉ URL không cần phải có phần mở rộng của tên tập tin và được thiết kế để hỗ trợ các mẫu định dạng tên phù hợp với việc tối ưu hóa tìm kiếm (URL) và phù hợp với lập địa chỉ theo kiểu REST.
  • Hỗ trợ sử dụng đặc tả (các thẻ) của các trang ASP.NET(.aspx), điều khiển người dùng (.ascx) và trang master page (.marter). Bạn có thể sử dụng các tính năng có sẵn của ASP.NET như là sử dụng lồng các trang master page, sử dụng in-line expression (<%= %>), sử dụng server controls, mẫu, data-binding, địa phương hóa (localization) và hơn thế nữa.
  • Hỗ trợ các tính năng có sẵn của ASP.NET như cơ chế xác thực người dùng, quản lý thành viên, quyền, output caching và data caching, seession và profile, quản lý tình trạng ứng dụng, hệ thống cấu hình…
  • ASP.NET MVC 3 còn bổ sung một view engine mới là Razor View Engine cho phép thiết lập các view nhanh chóng, dễ dàng và tốn ít công sức hơn so với việc sử dụng Web Forms view engine.

Bảng so sánh giữa ASP.NET Webform và ASP.NET MVC

Các tính năng ASP.NET WebForm ASP.NET MVC
Kiến trúc chương trình Kiến trúc mô hình WebForm –> Bussiness –> Database Kiến trúc sử dụng việc phân chia chương trình thành: Models, Views, Controllers
Cú pháp chương trình Sử dụng cú pháp của WebForm, tất cả các sự kiện và controls do server quản lý Các sự kiện được điều khiển bởi controllers, các controls không do server quản lý.
Truy cập dữ liệu Sử dụng hầu hết các công nghệ truy cập dữ liệu trong ứng dụng Phần lớn dùng LINQ và SQL class để tạo mô hình truy cập đối tượng.
Debug Debug phải thực hiện tất cả bao gồm các lớp truy cập dữ liệu, sự hiển thị, điều khiển các controls. Debug có thể sử dụng các unit test để kiểm tra các phương thức trong controllers.
Tốc độ phân tải Tốc độ phân tải chậm khi trong trang có quá nhiều các controls vì ViewState quá lớn Phân tải nhanh hơn do không phải quản lý ViewState để quản lý các controls trong trang.
Tương tác với JavaScript Tương tác với JavaScript khó khăn vì các controls được điều khiển bởi server Tương tác với JavaScript dễ dàng vì các đối tượng không do server quản lý điều khiển không khó
URL address Cấu trúc địa chỉ URL có dạng:
<filename>.aspx?&<các tham số>
Cấu trúc địa chỉ rành mạch theo dạng Controllers/Action/ID

 

Thêm bình luận

Loading