ASP.NET MVC Framework và ví dụ minh họa

MCV là tên một phương pháp chia nhỏ một ứng dụng thành ba thành phần để cài đặt, mỗi thành

phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers.

1. Models trong các ứng dụng dựa trên MVC là những thành phần có nhiệm vụ lưu trữ thông

tin, trạng thái của các đối tượng, thông thường nó là một lớp được ánh xạ từ một bảng trong

CSDL. Lấy ví dụ, chúng ta có lớp Product được sử dụng để mô tả dữ liệu từ bảng Products trong

SQL, bao gồm ProductID , OrderDate

2. Còn đối với Views, nó chính là các thành phần chịu trách nhiệm hiển thị cá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 cần hiển thị được lấy từ thành

phần Models. Ví dụ, đối tượng Product có một “Edit” view bao gồm các textboxes, các

dropdowns và checkboxes để chỉnh sửa các thuộc tính của sản phẩm; có một “Display” view gồm

2 dòng, cột dòng là ProductID , dòng sau là OrderDate để xem thông tin về sản phẩm.

pdf11 trang | Chuyên mục: ASP.NET | Chia sẻ: dkS00TYs | Lượt xem: 2489 | Lượt tải: 5download
Tóm tắt nội dung ASP.NET MVC Framework và ví dụ minh họa, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 nhập xuất của người dùng vẫn do Controllers đảm trách. 
 Một lợi điểm của phương pháp MVC là nó bắt buộc phải tạo ra một sự rành mạch trong liên kết 
giữa 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 này khiến việc kiểm tra ứng dụng trở nên dễ dàng hơn, đồng thời trách nhiệm của 
từng thành phần được định nghĩa rõ ràng và cả ba đều làm việc ăn ý với nhau. 
Pattern MVC cũng cho phép thực hiện red/green test driven development (TDD) 
( cài đặt các unit tests tự động, xác định 
và kiểm tra lại các yê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 vài chi tiết mà tôi có thể hé lộ vào thời điểm hiện tại, đó là: 
- Cho phép sự chia tách rành mạch giữa các thành phần, mỗi thành phần đều có khả năng được 
test riêng biệt và mặc định hỗ trợ TDD. Tất cả các mối liên hệ chính yếu trong MVC đều có giao 
diện để hiển thị và đều có thể xây dựng thành các mô hình, và bao gồm interface-based 
IHttpRequest/IHttpResponse. Bạn có thể chạy unit test cho ứng dụng mà không phải chạy các 
Controllers trong ASP.NET process, điều này làm unit test chạy 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ế để có thể dễ mở rộng và tiện dụng, tất cả mọi thứ trong MVC framework đều có 
thể nhanh chóng được thay đổi, tùy chọn hóa. Ví dụ bạn có thể viết một View và sử dụng cho 
nhiều ứng dụng khác nhau, đây là tính pluggable. 
- Bao gồm thành phần ánh xạ URL cho phép bạn xây dựng các ứng dụng thân thiện với bộ máy 
tìm kiếm và với người dùng. Lấy ví dụ tôi có thể ánh xạ URL /products/edit/4 là một trang cho 
phép chỉnh sửa thông tin về các sản phẩm, hoặc là /Blogs/scottgu/10-10-2007/SomeTopic/ để 
xem các thông tin. 
- MVC framework hỗ trợ sử dụng các các tập tin .ASPX, .ASCX và .Master như là thành phần 
View, điều đó có nghĩa là bạn vẫn 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 nó không 
sử dụng mô hình post-back từ giao diện gửi đến server nữa, thay vào đó, bạn có thể chủ động 
đưa những 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 tồn tại trong mô hình MVC. 
- Vẫn tiếp tục hỗ trợ cá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 dựng các ứng dụng web theo hướng MVC, tôi nghĩ 
ASP.NET MVC Framework mới ra này sẽ là một lựa chọn tốt, rất rành mạch và dễ sử dụng. Nó 
cho phép bạn dễ dàng bảo trì sự phân tách giữa các thành phần trong ứng dụng, đồng thời cũng 
rất tốt trong công việc testing và TDD. 
Tôi sẽ viết nhiều bài hướng dẫn hơn trong những tuần sắp đến để mô tả cách thức làm việc của 
MVC, để cho bạn có thể nhận ra những ưu điểm và thuận lợi khi sử dụng công nghệ này. 
Một ứng dụng cửa hàng thương mại điện tử đơn giản 
Tôi sẽ sử dụng một ứng dụng cửa hàng thương mại điện tử để minh họa cái cách mà ASP.NET 
MVC Framework làm việc. Bài viết hôm nay tôi sẽ cài đặt một hệ thống liệt kê và tìm duyệt 
các sản phẩm có trong cửa hàng. 
Cụ thể, chúng đang đang xây dựng 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 dùng click vào một đường link catalog như hình ở trên, họ sẽ được chuyển tới trang 
hiển thị các sản phẩm có trong một danh mục cụ thể, đó là trang /Products/List/CategoryName: 
 Khi người dùng click vào một sản phẩm, họ được chuyển đến trang mô tả thông tin chi tiết về 
sản phẩm đó, /Products/Detail/ProductID: 
 Chúng ta sẽ xây dựng tất cả các tính năng trên bằng cách sử dụng ASP.NET MVC framework. 
Xin nhắc lại một lần nữa, sự phân biệt rõ ràng giữa các thành phần trong ứng dụng, khả năng 
unit test và TDD là những điều tạo ra sự khác biệt mà chúng ta đặc biệt nhấn mạnh. 
Tạo mới một ứng dụng ASP.NET MVC 
Visual Studio Project Templates được đi kèm với MVC Framework, cho phép tạo một ứng 
dụng web theo template cho sẵn. Đơn giản, bạn chỉ cần vào File -> New Project và chọn 
template “ASP.NET MVC Web Application” và tạo một web mới. 
Mặc định khi sử dụng template này, Visual Studio sẽ tạo một solution mới bao gồm hai projects 
con. Project đầu tiên là web project nơi mà bạn sẽ cài đặt ứng dụng. Project thứ hai là testing 
project mà bạn dùng để test project thứ nhất: 
 Bạn có thể sử dụng bất kỳ unit testing nào, bao gồm NUnit, MBUnit, MSTest, XUnit… trong 
ASP.NET MVC. Visual Studio 2008 đã cài đặt sẵn testing project hỗ trợ MSTest (trong VS 
2005 chỉ có Visual Studio Team System SKU mới có), và testing project này được tự động tạo 
ra khi bạn sử dụng template MVC project. 
Trong tương lai chúng tôi cũng sẽ thêm vào các testing project dành cho NUnit, MBUnit và các 
testing framework khác, để cho bạn có thêm nhiều lựu chọn khi tạo một ứng dụng web và có 
ngay một testing project mà bạn thích để sử dụng. 
Hiểu rõ cấu trúc thư mục trong Project 
Cấu trúc thư mục mặc định của ứng dụng ASP.NET MVC gồm 3 thư mục chính: 
* /Controllers 
* /Models 
* /Views 
Như bạn thấy, chúng tôi khuyến khích việc đưa những class điều khiển vào bên trong thư mục 
/Controllers, những class thuộc về mô hình dữ liệu vào bên trong thư mục /Models, và những gì 
liên quan đến giao diện vào thư mục /Views. 
Mặc dù ASP.NET MVC framework không bắt buộc bạn phải luôn sử dụng cấu trúc này, nhưng 
đây là cấu trúc mặc định khi bạn tạo một project mới và chúng tôi luôn luôn khuyến khích việc 
sử dụng nó để phân chia ứng dụng. Bạn hãy sử dụng cấu trúc này ngoại trừ trường hợp bạn đề 
ra một lý do đủ thuyết phục để thay đổi nó. 
Ánh xạ các URL vào trong class Controller 
Hầu hết các web framework, như ASP, PHP, JSP, ASP.NET WebForms…, đều ánh xạ các URL 
vào một file template được lưu trên đĩa. Lấy ví dụ URL “/Products.aspx” hay “/Products.php” 
được chuyển đến file template Products.aspx hay Products.php trên đĩa cứng để xử lý. Khi một 
ứng dụng web nhận được HTTP Request đến web server, thì web framework sẽ chạy đoạn một 
code cụ thể tương ứng với nội dung của file template, và đoạn code này đóng vai trò xử lý yêu 
cầu do phía client gửi đến. Thông thường thì đoạn code này sẽ sinh ra HTML và đáp ứng lại phía 
client. 
MVC Framework lại hoạt động theo một cách khác hoàn toàn, thay vì ánh xạ các URL vào các 
file template lưu trên đĩa, nó sẽ đưa thẳng vào các class. Những class được ánh xạ tới được gọi là 
“Controllers“, và chúng sẽ xử lý request đến, kiểm soát dòng nhập xuất và giao diện đối với 
người dùng, thực thi các ứng dụng và data logic tương ứng với request. Cuối cùng, chúng sử 
dụng các thành phần Views để tạo HTML và đáp trả lại request. 
ASP.NET MVC Framework có một bộ máy ánh xạ URL thật sự mạnh mẽ. Bộ máy này cung cấp 
phương pháp rất linh hoạt trong việc ánh xạ URLs sang cho Controller Classes. Bạn có thể dễ 
dàng định ra các quy luật, cài đặt đường đi để ASP.NET dựa vào các quy luật đường đi đó, xác 
định xem phải thực thi Controller nào. ASP.NET còn có khả năng phân tích URL, chuyển các 
thông số trong URL thành các tham số trong lời gọi hàm của Controller. Tôi sẽ viết kỹ hơn về kỹ 
thuật định tuyến nâng cao trong những bài blog sắp đến. 
Đường đi mặc định từ ASP.NET MVC URL đến Controller Classes 
Các projects ASP.NET MVC được định nghĩa sẵn một số quy luật về đường đi để bạn không phải 
hiệu chỉnh thêm điều gì trong khi bắt đầu làm quen với framework mới. Bạn có thể bắt đầu viết 
mã và sử dụng phương pháp ánh xạ URL mặc định được định nghỉa trong file Global.asax - 
ASP.NET Application class. File Global.asax này được tự động tạo ra từ ASP.NET MVC project 
template. 
Phương pháp mặc định đơn giản làm nhiệm vụ ánh xạ một phần URL từ HTTP Request, lấy ví 
dụ /Products/, đến một class có tên theo mẫu UrlPathController, tức là URL /Products/ sẽ được 
chuyển đến class có tên là ProductsController. 
Để xây dựng chức năng tìm duyệt sản phẩm trong ứng dụng thương mại điện tử, chúng ta thêm 
vào class “ProductsController” vào project. Bạn có thể sử dụng menu “Add New Item” để nhanh 
chóng tạo Controller class từ template: 
Class ProductsController được kế thừa từ class cơ sở System.Web.MVC.Controller. Thừa kế từ 
class cơ sở này không phải là điều bắt buộc, tuy nhiên sẽ khá tiện lợi bởi nó có nhiều phương 
thức và chức năng mà ta muốn sử dụng về sau này. 
Một khi chúng ta đã định nghĩa class ProductsController, ASP.NET MVC framework sẽ sử dụng 
nó cho tất cả các URL bắt đầu bằng “/Products/“. ProductsController cũng sẽ được sử dụng bất 
kỳ khi nào có yêu cầu đến “/Products/Categories“, “/Products/List/Beverages” và 
“/Products/Detail/3“, là ba chức năng mà ta sẽ phải cài đặt trong ứng dụng cửa hàng này. 
Trong phần tiếp theo tôi sẽ thêm ShoppingCartController để người dùng có thể quản lí giỏ hàng 
của họ. Thêm vào đó là AccountController cho phép người dùng tạo tài khoản khách hàng, đăng 
nhập và đăng xuất khỏi website. Tất nhiên khi đã có hai controller này rồi, thì mặc định các URL 
bắt đầu bằng /ShoppingCart/ và /Account/ sẽ được tự động chuyển hướng sang controller để xứ 
lý. 
Lưu ý: ASP.NET MVC framework không yêu cầu bạn bắt buộc phải sử dụng cách đặt tên để 
ánh xạ URL theo mẫu như trên. Lý do duy nhất mà ứng dụng tôi đang thực hiện làm như vậy là 
do nó sử dụng các luật ánh xạ mặc định được tạo bởi ASP.NET MVC Project template. Nếu bạn 
muốn thay đổi, bạn có thể chỉnh sửa lại các luật trong class ASP.NET Application - file 
Global.asax. 

File đính kèm:

  • pdfASP.NET MVC Framework và ví dụ minh họa.pdf
Tài liệu liên quan