[ASP.NET] MVC Framework ví d minh ha
Đây là bài dịch từ một s bài blog của tác gi Scott Guthrie về ASP.NET MVC Framework về một
công nghmới ra đời của ASP.NET.
Một hạn chế của framework ASP.NET t tc đến nay là không hỗ trcác lập tnh viên s
dụng kiến tc MVC để phát triển các ng dụng, nhiều người vẫn đang mong chờ s xuất hiện
ca kiến tc lâu năm này trong b framework.
Model View Controller (MVC)
MCV là tên một phương pháp chia nhmột ng dụng thành ba thành phần để cài đt, mỗi thành
phần đóng mt vai trò kc nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers.
1. Models trong cácng dụng dựa trên MVC nhng thành phn có nhim vụ lưu tr thông
tin, trạng thái của các đối ợng, thông thường nó là một lp đưc ánh xạ t một bảng trong
CSDL. Ly ví dụ, chúng ta có lớp Product đưc s dụng đ mô t d liu t bảng Products trong
SQL, bao gồm ProductID, OrderDate
2. Còn đối với Views, chính là c thành phần chịu trách nhim hin thị c thông tin lên
cho người dùng thông qua giao diện. Thông thường, các thông tin cn hin thị đưc ly tthành
phần Models. dụ, đối ợng Product mt “Editview bao gm c textboxes, các
dropdowns và checkboxes để chỉnh sac thuộc tính ca sản phm; có một “Displayview gồm
2 dòng, ct dòng là ProductID, dòng sau là OrderDate đ xem thông tin về sản phẩm.
3. Cuối cùng, Controllers trong các ng dụng kiu MVC chịu trách nhim x lý các tác động
về mt giao diện, các thao tác đối với models, và cuối cùng là chọn một view tch hợp để hin
thị ra màn hình. Trong kiến tc MVC, view chỉ có c dụng hiển thị giao diện mà thôi, còn điều
kin dòng nhập xuất của người dùng vẫn do Controllers đảm trách.
Một li điểm của phương pháp MVC là bắt buc phải to ra một s rành mch trong liên kết
gia 3 thành phần models, views và controllers trong ng dụng. Duy trì đưc mối quan hệ rành
mạch rõ ràng y khiến vic kiểm tra ng dụng tr nên dễ dàng hơn, đồng thời tch nhim của
từng thành phần đưc định nghĩa rõ ràng và c ba đều làm vic ăn ý với nhau.
Pattern MVC cũng cho phép thực hiện red/green test driven development (TDD)
(http://en.wikipedia.org/wiki/Test-driven_development), cài đặt các unit tests tự động, xác định
kiểm tra lại các u cầu trưc khi bắt tay vào viết code.
*** Test-Driven Development (TDD) is a software development technique consisting of short
iterations where new test cases covering the desired improvement or new functionality are
written first, then the production code necessary to pass the tests is implemented, and finally the
software is refactored to accommodate changes.
Một i chi tiết mà tôithhé l vào thời đim hin ti, đó là:
- Cho phép s chia ch rành mch giữa c thành phần, mỗi thành phn đu có khả năng đưc
test riêng bit mc định hỗ trTDD. Tt cả c mối liên hệ cnh yếu trong MVC đều có giao
diện để hiển thị và đều có thể xây dng thành c mônh, và bao gồm interface-based
IHttpRequest/IHttpResponse. Bạn có thể chy unit test cho ng dụng mà không phải chy c
Controllers trong ASP.NET process, điu này làm unit test chy nhanh hơn. Bạn có thể s dụng
unit testing framework nào cũng đưc, kể cả NUnit, MBUnit, MS Test
- Đưc thiết kế để th d mrng và tin dụng, tất cả mọi thứ trong MVC framework đều
thể nhanh chóng đưc thay đổi, tùy chn hóa. dụ bạn có thể viết một View và s dụng cho
nhiều ứng dụng kc nhau, đây là tính pluggable.
- Bao gồm thành phần ánh xURL cho phép bạn xây dngc ng dụng thân thin với bmáy
tìm kiếm vi người ng. Lấy ví dụ tôi th ánh x URL /products/edit/4 là một trang cho
phép chỉnh sa thông tin về các sn phm, hoặc là /Blogs/scottgu/10-10-2007/SomeTopic/ đ
xem các thông tin.
- MVC framework hỗ trs dụng các c tập tin .ASPX, .ASCX và .Master như là thành phn
View, điu đó có nghĩa là bạn vn có th sử dụng các tính năng của ASP.NET như master pages,
<%= %> snippets, server controls, templates, data-binding, localization Tuy nhiên không
sử dụng mô nh post-back từ giao diện gửi đến server na, thay vào đó, bạn có thể chủ động
đưa nhng post-back từ giao diện đó đến thẳng lớp Controller. Tóm lại, không còn viewstate
hay là page lifecycle còn tn ti trong mô nh MVC.
- Vn tiếp tc htrợ c tính năng ASP.NET như là forms/windows authentication, URL
authorization, membership/roles, output and data caching, session/profile state management,
health monitoring, configuration system, the provider architecture…
Nếu bạn đang tìm kiếm một phương pháp xây dng các ng dụng web theo hướng MVC, tôi nghĩ
ASP.NET MVC Framework mi ra này sẽ là một la chọn tt, rt rành mch dễ s dụng. Nó
cho phép bạn dễ dàng bảo trì s phân ch giac thành phần trong ứng dụng, đng thời cũng
rất tt trong công vic testing và TDD.
Tôi sẽ viết nhiều bài hướng dẫn hơn trong nhng tuần sp đến để mô tả cách thức làm vic ca
MVC, đ cho bạn có thể nhận ra nhng ưu điểm thuận lợi khi s dụng công nghnày.
Một ứng dụng ca ng thương mi điện tử đơn giản
Tôi sẽ s dụng một ứng dụng ca hàng tơng mại đin tử đ minh họa cáich mà ASP.NET
MVC Framework làm vic. Bài viết hôm nay tôi s cài đt mt hệ thống lit kê tìm duyệt
c sản phẩm có trong ca hàng.
Cụ thể, chúng đang đang xây dng hệ thống cho phép người dùng cuối tìm duyệt danh sách các
catalog khi họ đến thăm trang /Products/Categories:
Khi người ng click vào mt đường link catalog như nh ở trên, họ sẽ đưc chuyển ti trang
hin thị các sản phẩm có trong một danh mục cth, đó là trang /Products/List/CategoryName: