Tải bản đầy đủ (.doc) (155 trang)

Xây dựng website bán hàng kết hợp hệ thống khuyến nghị cho người dùng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4 MB, 155 trang )

TRƯỜNG ĐẠI HỌC TRÀ VINH
KHOA KỸ THUẬT VÀ CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE BÁN HÀNG
KẾT HỢP HỆ THỐNG KHUYẾN NGHỊ
CHO NGƯỜI DÙNG

Giảng viên hướng dẫn: ThS. NGUYỄN BẢO ÂN
Sinh viên thực hiện: NGUYỄN THỊ MỸ ĐỊNH
Mã số sinh viên: 110108176
Lớp: DA08TTD
Khoá: 2008 - 2012
Trà Vinh, tháng 8 năm 2012
TRƯỜNG ĐẠI HỌC TRÀ VINH
KHOA KỸ THUẬT VÀ CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE BÁN HÀNG
KẾT HỢP HỆ THỐNG KHUYẾN NGHỊ
CHO NGƯỜI DÙNG
Giảng viên hướng dẫn: ThS. NGUYỄN BẢO ÂN
Sinh viên thực hiện: NGUYỄN THỊ MỸ ĐỊNH
Mã số sinh viên: 110108176
Lớp: DA08TTD
Khoá: 2008 - 2012
Trà Vinh, tháng 8 năm 2012
LỜI MỞ ĐẦU
Việc kinh doanh, mua bán thông qua Internet hiện nay ngày càng phổ biến. Đồng
thời, các website không ngừng đưa ra nhiều cách thức để giữ được mối quan hệ với
khách hàng cũng như ngày càng hoàn thiện chất lượng website của mình. Có nhiều
phương án để thực hiện như thăm dò ý kiến khách hàng, cho khách hàng để lại ý kiến
hay xây dựng một hệ thống tìm kiếm thật hoàn hảo giúp khách hàng dễ dàng tìm được


những món hàng thật vừa ý. Thời gian gần đây, một cách thức khá mới mẻ vừa mới
xuất hiện đó là hệ thống khuyến nghị cho người dùng. Khi khách hàng chọn một sản
phẩm bất kỳ, hệ thống sẽ tự động tìm ra những sản phẩm khác phù hợp để khuyến nghị
cho khách hàng có thể mua cùng lúc với sản phẩm vừa chọn. Lúc đó, hệ thống này
đóng vai trò như một nhân viên tư vấn cho khách hàng, để khách hàng dễ dàng hơn
trong quá trình chọn hàng. Chính những điều này sẽ làm khách hàng hài lòng hơn khi
mua hàng ở website của mình.
Thấy được lợi ích của mô hình hệ thống như trên. Tôi quyết định tìm hiểu và xây
dựng hệ thống khuyến nghị áp dụng vào khóa luận tốt nghiệp của mình với đề tài là:
“Xây dựng website bán hàng kết hợp hệ thống khuyến nghị cho người dùng” dựa trên
nền tảng sử dụng công nghệ ASP.NET MVC.
Có nhiều cách thức để xây dựng hệ thống này. Ở đây chúng tôi sử dụng lịch sử
mua hàng của khách hàng để làm tài nguyên đầu vào cho quá trình khai thác. Bằng
cách khai thác các luật kết hợp tiềm ẩn trong các hóa đơn mua hàng của khách, chúng
tôi thực hiện trích lọc những sản phẩm có độ tin cậy phù hợp và sao lưu những sản
phẩm này vào cơ sở dữ liệu làm tài nguyên cho quá trình khuyến nghị sau này.
Sau quá trình nghiên cứu và phát triển, tôi đã xây dựng thành công một hệ thống
website giới thiệu, quảng bá sản phẩm và cho phép khách hàng đặt hàng online. Hơn
nữa, tôi cũng đã xây dựng thành công hệ thống khuyến nghị cho người dùng, đảm bảo
yêu cầu đặt ra với kết quả chấp nhận được.
LỜI CẢM ƠN
Trước tiên, em muốn gửi lời cảm ơn sâu sắc nhất đến thầy ThS. Nguyễn Bảo Ân đã
tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm khóa luận
tốt nghiệp. Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều
kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa học
nghiêm túc, hiệu quả. Đây là những điều rất cần thiết cho em trong quá trình học tập
và công tác sau này.
Em xin chân thành cảm ơn các thầy, cô giáo trong và ngoài trường đã truyền đạt
cho em kiến thức để em tích lũy kiến thức thực hiện khóa luận tốt nghiệp và làm vốn
kiến thức, hành trang cho em xây dựng sự nghiệp sau này.

Tôi xin gửi lời cảm ơn đến những người bạn thân thương đã luôn nhiệt tình giúp đỡ
tôi trong suốt quá trình thực hiện khóa luận.
Đặc biệt, em xin chân thành cảm ơn những người thân trong gia đình, con cảm ơn
Mẹ, người đã luôn quan tâm động viên con trong những lúc khó khăn nhất và luôn tạo
điều kiện tốt nhất cho con trong suốt thời gian qua để con có điều kiện thuận lợi nhất
hoàn thành tốt khóa luận tốt nghiệp.
Trong quá trình thực hiện khóa luận tốt nghiệp em đã vận dụng những kiến thức
mình học, tìm hiểu, nghiên cứu để tìm ra những phương pháp hiệu quả nhằm hoàn
thành tốt đồ án. Tuy nhiên, do thời gian thực hiện khóa luận có giới hạn nên còn nhiều
mặt còn hạn chế, mong quý thầy cô góp ý để khóa luận ngày càng hoàn thiện hơn.
Em xin chân thành cảm ơn!
Sinh viên
Nguyễn Thị Mỹ Định
NHẬN XÉT
(Của giảng viên hướng dẫn trong đồ án, khoá luận của sinh viên)





















Giảng viên hướng dẫn
(ký và ghi rõ họ tên)
Nguyễn Bảo Ân
NHẬN XÉT
(Của giảng viên phản biện trong đồ án, khoá luận của sinh viên)





















Giảng viên phản biện
(ký và ghi rõ họ tên)
MỤC LỤC
Chương 1. ĐẶT VẤN ĐỀ 1
1.1. Phân tích tình hình phát triển các hệ thống website hiện nay 1
1.2. Bài toán đặt ra 2
1.3. Mục tiêu của đề tài 2
1.4. Các bước thực hiện 3
Chương 2. CƠ SỞ LÝ THUYẾT 4
2.1. Mô hình MVC 4
2.2. Hiện thực hóa mô hình MVC trên ASP.NET 8
2.3. Khai thác dữ liệu và hệ thống khuyến nghị 15
Chương 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG WEBSITE BÁN HÀNG 25
3.1. Đặc tả yêu cầu 25
3.2. Phân tích use case 25
3.3. Phân tích lĩnh vực 32
3.4. Hiện thực hóa các use case 41
Chương 4. NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG KHUYẾN NGHỊ CHO
NGƯỜI DÙNG 108
4.1. Kiến trúc tổng thể 108
4.2. Tiền xử lý 109
4.3. Khai thác 111
4.4. Hậu xử lý để tạo tri thức khuyến nghị 112
Chương 5. CÀI ĐẶT THỬ NGHIỆM 114
5.1. Cài đặt 114
5.2. Thử nghiệm 114
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 135
6.1. Kết luận 135
6.2. Hướng phát triển 135
DANH MỤC BẢNG

Bảng 2.1. So sánh sự khác nhau giữa ASP.NET WebForm và ASP.NET MVC [6] 14
Bảng 2.2. Dữ liệu cho mẫu cho thuật toán Apriori 20
Bảng 2.3. Dữ liệu L1 20
Bảng 2.4. Dữ liệu C1 20
Bảng 2.5. Bảng dữ liệu C2 21
Bảng 2.6. Bảng dữ liệu L2 21
Bảng 2.7. Bảng dữ liệu C3 22
Bảng 2.8. Bảng dữ liệu thường xuyên 22
Bảng 2.9. Kết quả khai thác luật kết hợp 23
Bảng 3.10. Thực thể nhóm sản phẩm - TypeOfProduct 34
Bảng 3.11. Thực thể loại sản phẩm – Category 35
Bảng 3.12. Thực thể thuộc tính của loại sản phẩm – DescriptionOfCategory 35
Bảng 3.13. Thực thể thuộc tính sản phẩm – Property 35
Bảng 3.14. Thực thể Khuyến mãi - Promotion 36
Bảng 3.15. Thực thể Sản phẩm – Product 36
Bảng 3.16. Thực thể thông tin chi tiết thuộc tính của sản phẩm – Description 37
Bảng 3.17. Thực thể thông tin nhập hàng - AddQuantity 37
Bảng 3.18. Thực thể quyền đăng nhập - Role 37
Bảng 3.19. Thực thể Khách hàng/ User - Customer 38
Bảng 3.20. Thực thể hóa đơn - Bill 39
Bảng 3.21. Thực thể chi tiết hóa đơn - BillDetail 39
Bảng 3.22. Thực thể tin tức - News 39
Bảng 4.23. Bảng dữ liệu mẫu cho quá trình khai thác 110
Bảng 4.24. Thực hiện gom nhóm các đơn đặt hàng của một khách hàng lại gần nhau 111
Bảng 4.25. Dữ liệu sau bước tiền xử lý 111
Bảng 4.26. Dữ liệu sau khi khai thác 113

DANH MỤC HÌNH
Hình 2.1. Các thành phần trong mô hình MVC 4
Hình 2.2. Sơ đồ làm việc của mô hình MVC 5

Hình 2.3: Sơ đồ làm việc của mô hình ba lớp 6
Hình 2.4. Cơ chế ánh xạ địa chỉ tự phát sinh trong file Global.ascx 11
Hình 2.5. Các quá trình KTDL 17
Hình 2.6. Mô hình tổng quát của hệ thống khuyến nghị 24
Hình 3.7. Mô hình use case tổng quát 27
Hình 3.8. Use case đăng nhập 27
Hình 3.9. Use case quản lý giỏ hàng 28
Hình 3.10. Use case quản lý nhóm hàng 29
Hình 3.11. Use case quản lý thuộc tính 29
Hình 3.12. Use case quản lý loại hàng 30
Hình 3.13. Use case quản lý sản phẩm 30
Hình 3.14. Use case quản lý khách hàng /User 31
Hình 3.15. Use case quản lý hóa đơn 31
Hình 3.16. Use case quản lý tin tức 32
Hình 3.17. Sơ đồ lớp tổng quát 34
Hình 3.18. Lược đồ CSDL 40
Hình 3.19. Mô hình hoạt động của hệ thống 41
Hình 3.20. Sơ đồ lớp đăng nhập 42
Hình 3.21. Sơ đồ hoạt động của use case đăng nhập 43
Hình 3.22. Sơ đồ tuần tự của use case đăng nhập 44
Hình 3.23. Giao diện đăng nhập 45
Hình 3.24. Giao diện hỗ trợ người dùng lấy mật khẩu mới 45
Hình 3.25. Mật khẩu mới được gởi đến email của người dùng 45
Hình 3.26. Sơ đồ lớp của use case đăng xuất 46
Hình 3.27. Sơ đồ hoạt động của use case đăng xuất 47
Hình 3.28. Sơ đồ tuần tự của use case đăng xuất 48
Hình 3.29. Đường dẫn chỉ đến địa chỉ đăng xuất 48
Hình 3.30. Sơ đồ lớp của use case khách hàng đăng ký thành viên 49
Hình 3.31. Sơ đồ hoạt động của use case khách hàng đăng ký thành viên 49
Hình 3.32. Sơ đồ tuần tự của use case khách hàng đăng ký thành viên 50

Hình 3.33. Giao diện đăng ký thành viên 51
Hình 3.34. Mã kích hoạt tài khoản được gởi đến email của người dùng 52
Hình 3.35. Sơ đồ lớp của use case kích hoạt tài khoản 52
Hình 3.36. Sơ đồ hoạt động của use case kích hoạt tài khoản 53
Hình 3.37. Sơ đồ tuần tự của use case kích hoạt tài khoản 53
Hình 3.38. Link liên kết đến địa chỉ kích hoạt tài khoản 54
Hình 3.39. Giao diện kích hoạt tài khoản 54
Hình 3.40. Sơ đồ lớp của use case người dùng cập nhật thông tin tài khoản 55
Hình 3.41. Sơ đồ hoạt động của use case người dùng cập nhật thông tin tài khoản 56
Hình 3.42. Sơ đồ tuần tự của use case người dùng cập nhật thông tin tài khoản 57
Hình 3.43. Địa chỉ liên kết xem thông tin tài khoản 57
Hình 3.44. Thông tin khách hàng 58
Hình 3.45. Người dùng đổi thông tin mật khẩu 58
Hình 3.46. Thông tin chi tiết của thành viên quản trị 59
Hình 3.47. Thành viên quản trị cập nhật thông tin cá nhân 59
Hình 3.48. Sơ đồ lớp của use case khách hàng lựa chọn hình thức xem hàng 60
Hình 3.49. Sơ đồ hoạt động của use case khách hàng lựa chọn hình thức xem hàng 60
Hình 3.50. Sơ đồ tuần tự của use case khách hàng lựa chọn hình thức xem hàng 61
Hình 3.51. Giao diện hiển thị sản phẩm (theo nhóm sản phẩm) 61
Hình 3.52. Giao diện hiển thị sản phẩm (theo loại sản phẩm) 62
Hình 3.53. Giao diện hiển thị sản phẩm (theo nhóm khuyến mãi) 62
Hình 3.54. Sơ đồ lớp của use case quản lý giỏ hàng 63
Hình 3.55. Sơ đồ hoạt động của use case quản lý giỏ hàng 64
Hình 3.56. Sơ đồ tuần tự của use case quản lý giỏ hàng 65
Hình 3.57. Thiết kế giao diện giỏ hàng 66
Hình 3.58. Khách hàng chọn mua thêm 3 sản phẩm có mã số “147” 66
Hình 3.59. Thông tin giỏ hàng được cập nhật lại 67
Hình 3.60. Sơ đồ lớp của use case tìm kiếm 67
Hình 3.61. Sơ đồ hoạt động của use case tìm kiếm 68
Hình 3.62. Sơ đồ tuần tự của use case tìm kiếm 68

Hình 3.63. Tìm kiếm theo tên sản phẩm 69
Hình 3.64. Kết quả tìm kiếm theo tên sản phẩm 69
Hình 3.65. Giao diện tìm kiếm nâng cao và kết quả tìm kiếm 69
Hình 3.66. Sơ đồ lớp của use case khách hàng xem tin tức 70
Hình 3.67. Sơ đồ hoạt động của use case khách hàng xem tin tức 70
Hình 3.68. Sơ đồ tuần tự của use case khách hàng xem tin tức 71
Hình 3.69. Giao diện chi tiết tin tức 71
Hình 3.70. Sơ đồ lớp của use case quản lý nhóm sản phẩm 72
Hình 3.71. Sơ đồ hoạt động của use case quản lý nhóm sản phẩm 73
Hình 3.72. Sơ đồ tuần tự của use case quản lý nhóm sản phẩm 74
Hình 3.73. Giao diện thêm mới nhóm sản phẩm 75
Hình 3.74. Giao diện cập nhật thông tin nhóm sản phẩm 75
Hình 3.75. Giao diện xóa nhóm sản phẩm 76
Hình 3.76. Sơ đồ lớp của use case quản lý thuộc tính sản phẩm 76
Hình 3.77. Sơ đồ hoạt động của use case quản lý thuộc tính sản phẩm 77
Hình 3.78. Sơ đồ tuần tự của use case quản lý thuộc tính sản phẩm 78
Hình 3.79. Giao diện thêm mới thuộc tính 79
Hình 3.80. Giao diện cập nhật thông tin thuộc tính 79
Hình 3.81. Giao diện xóa thông tin thuộc tính 79
Hình 3.82. Sơ đồ lớp quản lý loại sản phẩm 80
Hình 3.83. Sơ đồ hoạt động của use case quản lý loại sản phẩm 80
Hình 3.84. Sơ đồ tuần tự của use case quản lý loại sản phẩm 81
Hình 3.85. Thiết kế giao diện thêm mới loại sản phẩm 82
Hình 3.86. Thiết kế giao diện cập nhật loại sản phẩm 83
Hình 3.87. Giao diện xóa một loại sản phẩm 83
Hình 3.88. Sơ đồ lớp của use case quản lý sản phẩm 84
Hình 3.89. Sơ đồ hoạt động của use case quản lý sản phẩm 85
Hình 3.90. Sơ đồ tuần tự của use case quản lý sản phẩm 86
Hình 3.91. Chọn một loại sản phẩm cho sản phẩm cần tạo 87
Hình 3.92. Giao diện thêm mới sản phẩm 88

Hình 3.93. Giao diện cập nhật thông tin sản phẩm 89
Hình 3.94. Giao diện xem chi tiết sản phẩm (quản lý) 90
Hình 3.95. Giao diện xóa sản phẩm 91
Hình 3.96. Sơ đồ lớp của use case quản lý khách hàng/User 92
Hình 3.97. Sơ đồ hoạt động của use case quản lý khách hàng/User 93
Hình 3.98. Sơ đồ tuần tự của use case quản lý khách hàng/User 94
Hình 3.99. Giao diện thêm mới người dùng quản trị 95
Hình 3.100. Một số thông tin của thành viên sẽ được gán giá trị mặc định tương ứng 95
Hình 3.101. Giao diện cập nhật thông tin tài khoản 96
Hình 3.102. Giao diện thông tin chi tiết thành viên 97
Hình 3.103. Giao diện xóa thành viên ra khỏi hệ thống 97
Hình 3.104. Sơ đồ lớp của use case quản lý đơn đặt hàng 98
Hình 3.105. Sơ đồ hoạt động của use case quản lý đơn đặt hàng 99
Hình 3.106. Sơ đồ tuần tự của use case quản lý đơn đặt hàng 100
Hình 3.107. Giao diện thông tin đơn đặt hàng 101
Hình 3.108. Giao diện cập nhật tình trạng đơn đặt hàng 101
Hình 3.109. Giao diện xóa đơn đặt hàng 102
Hình 3.110. Sơ đồ lớp của use case quản lý tin tức 102
Hình 3.111. Sơ đồ hoạt động của use case quản lý tin tức 103
Hình 3.112. Sơ đồ tuần tự use case quản lý tin tức 104
Hình 3.113. Giao diện trang thêm mới tin tức 105
Hình 3.114. Giao diện trang cập nhật tin tức 106
Hình 3.115. Giao diện xóa tin tức 107
Hình 4.116. Kiến trúc tổng thể xây dựng hệ thống khuyến nghị 108
Hình 4.117. Dữ liệu sau khi tiền xử lý - Dữ liệu đầu vào để tiến hành khai thác 112
Hình 5.118. Giao diện trang chủ 116
Hình 5.119. Giao diện hiển thị sản phẩm theo nhóm hàng 117
Hình 5.120. Giao diện hiển thị sản phẩm theo loại sản phẩm 118
Hình 5.121. Giao diện hiển thị chi tiết sản phẩm 119
Hình 5.122. Thông tin giỏ hàng 119

Hình 5.123. Biểu tượng liên kết đến giỏ hàng 120
Hình 5.124. Giao diện đặt hàng 120
Hình 5.125. Kết quả thử nghiệm giao diện đăng nhập 121
Hình 5.126. Giao diện đăng ký thành viên 121
Hình 5.127. Giao diện kích hoạt tài khoản 122
Hình 5.128. Giao diện quản lý hệ thống 123
Hình 5.129. Giao diện quản lý nhóm hàng 124
Hình 5.130. Giao diện quản lý loại sản phẩm 125
Hình 5.131. Giao diện quản lý thuộc tính sản phẩm 125
Hình 5.132. Giao diện quản lý sản phẩm 126
Hình 5.133. Chọn xem sản phẩm theo loại sản phẩm 127
Hình 5.134. Giao diện danh sách sản phẩm theo loại sản phẩm 127
Hình 5.135. Giao diện quản lý người dùng 128
Hình 5.136. Giao diện quản lý người dùng (thành viên quản trị website) 128
Hình 5.137. Giao diện quản lý khai thác dữ liệu 129
Hình 5.138. Kết quả khai thác được theo từng lần mua hàng 130
Hình 5.139. Kết quả thử nghiệm hệ thống khuyến nghị theo từng đơn hàng 131
Hình 5.140. Kết quả khai thác theo toàn bộ lịch sử mua hàng 131
Hình 5.141. Kết quả khuyến nghị dựa trên toàn bộ lịch sử mua hàng của khách hàng132
Hình 5.142. Giỏ hàng có sản phẩm nằm trong danh sách khuyến nghị 133
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT
CSDL Cơ sở dữ liệu
HTML Hyper Text Markup Language
HTTP HyperText Transfer Protocol
MVC Models – Views – Controllers
KTDL Khai thác dữ liệu

Chương 1. ĐẶT VẤN ĐỀ
1.1. Phân tích tình hình phát triển các hệ thống website hiện nay
Ngày nay, cùng với sự tiến bộ của khoa học kỹ thuật, công nghệ thông tin hiện

đang phát triển mạnh mẽ với tốc độ ngày càng tăng cao do nhu cầu trao đổi thông tin
và tiếp thu các tri thức mới của con người. Song song đó, công nghệ thông tin được
con người vận dụng không ngừng vào mọi lĩnh vực của đời sống nhằm phục vụ nhu
cầu cho mình như giáo dục, kinh doanh, giao thông, các hệ thống ngân hàng, … và
thương mại điện tử là một trong những lĩnh vực được quan tâm và ứng dụng nhiều
nhất. Thương mại điện tử qua Internet/web giúp người tiêu dùng và doanh nghiệp
giảm đáng kể thời gian và chi phí giao dịch [6]. Ở Việt Nam, hình thức bán hàng trực
tuyến còn khá mới mẻ như: vatgia.com, sieuthinhanh.com, enbac.com, … vì vậy đây
là thị trường đầy tiềm năng.
Để tận dụng triệt để thị trường kinh doanh này ngày càng nhiều các doanh nghiệp
công ty, cửa hàng thành lập website với mục đích quảng bá sản phẩm và mở rộng
phạm vi kinh doanh, mua bán hàng hóa thông qua Internet. Trong bối cảnh ngày càng
có nhiều website ra đời, để không ngừng cạnh tranh với nhau ngoài việc cung cấp
thông tin quảng bá sản phẩm thì việc không ngừng cải tạo nâng cấp chất lượng website
là một điều hết sức cần thiết. Với yêu cầu trên, website bán hàng trực tuyến không chỉ
đơn thuần là việc quảng bá sản phẩm, mua bán hàng hóa trực tuyến nữa mà nó đòi hỏi
cần có nhiều yếu tố khác như sự dễ dàng, lưu loát trong các nghiệp vụ mua hàng. Một
điều cũng khá quan trọng và thường được quan tâm là tạo được sự hài lòng và chú ý
cho khách hàng khi mua hàng tại website…
Để cải thiện được điều đó và để giữ được mối quan hệ với khách hàng cũng như
ngày càng hoàn thiện chất lượng, các website không ngừng đưa ra nhiều cách thức cải
thiện như thăm dò ý kiến khách hàng, cho khách hàng để lại comment, … hay xây
dựng một hệ thống tìm kiếm thật hoàn hảo giúp khách hàng dễ dàng tìm được những
món hàng thật vừa ý. Thời gian gần đây, một cách thức khá mới mẻ vừa mới xuất hiện
đó là hệ thống khuyến nghị người dùng. Khi khách hàng chọn một sản phẩm bất kỳ, hệ
thống website sẽ tự động tìm ra những sản phẩm khác phù hợp với sản phẩm vừa chọn
và khuyến nghị trở lại cho khách hàng. Với cách thức làm việc như thế việc tìm hiểu
thông tin và mua hàng của khách hàng có thể có nhiều điều rất bất ngờ và thú vị, nhờ
đó làm tăng thêm mức độ hài lòng của khách hàng. Tuy hệ thống này còn tương đối
GVHD: Nguyễn Bảo Ân 1 SVTH: Nguyễn Thị Mỹ Định

mới nhưng hiệu quả của nó mang lại rất đáng kể. Hiện nay, hình thức khuyến nghị này
đang được nhiều hệ thống mua bán trực tuyến áp dụng và rất hiệu quả như Amazon,
eBay, …
1.2. Bài toán đặt ra
Với mục đích tìm hiểu kỹ thuật và xây dựng website bán hàng trực tuyến có vận
dụng hệ thống khuyến nghị cho người dùng, em quyết định xây dựng một hệ thống
website bán hàng được trình bày như sau:
Đến với website, khi một người nào đó có nhu cầu mua hàng, xem hàng người đó
sẽ tìm kiếm, lựa chọn tùy thích những sản phẩm thấy vừa ý. Trong quá trình này, hệ
thống sẽ liên tục cập nhật và đưa ra những sản phẩm khuyến nghị cho khách hàng
xuyên suốt quá trình chọn lựa, xem và mua hàng. Để có thể mua hàng khách hàng cần
phải có tài khoản bằng cách cung cấp các thông tin như tên đăng nhập, mật khẩu và
các thông tin cá nhân khác như số điện thoại, địa chỉ, email…
Ngoài ra, khách hàng có thể đọc tin tức tại website.
Người dùng có thể được giải đáp thắc mắc thông qua mục hỗ trợ trực tuyến của
website.
Trong các quá trình khách hàng tìm hiểu về thông tin của một sản phẩm nào đó, hệ
thống sẽ căn cứ vào sản phẩm đó đưa ra những sản phẩm khác (sản phẩm khuyến
nghị) phù hợp với sản phẩm vừa chọn cho khách hàng có thể chọn xem tiếp các sản
phẩm đó.
1.3. Mục tiêu của đề tài
- Xây dựng thành công website “Bán hàng” bao gồm các chức năng:
+ Xem thông tin sản phẩm theo nhiều cách như theo loại sản phẩm, theo nhóm
hàng, …
+ Khách hàng có thể tìm kiếm sản phẩm theo tên sản phẩm, giá cả, loại sản
phẩm.
+ Xem tin tức theo từng lĩnh vực hàng hóa được đăng trên website.
+ Cho phép khách hàng mua sản phẩm và thanh toán ở mức độ thanh toán ảo.
+ Cho phép khách hàng đăng ký thành viên và lấy mã kích hoạt tài khoản thông
qua email.

GVHD: Nguyễn Bảo Ân 2 SVTH: Nguyễn Thị Mỹ Định
+ Admin phải quản lý được người dùng, sản phẩm, thông tin các tin tức liên
quan
- Xây dựng thành công hệ thống khuyến nghị cho người dùng
+ Khuyến nghị trên cơ sở tận dụng toàn bộ lịch sử mua hàng của từng khách
hàng.
+ Khuyến nghị trên cơ sở tận dụng lịch sử mua hàng theo từng hóa đơn.
1.4. Các bước thực hiện
- Tìm hiểu các hoạt động trong một website bán hàng trực tuyến.
- Tìm hiểu về lĩnh vực khai thác dữ liệu (Data Mining) và hệ thống khuyến nghị.
- Phân tích và thiết kế hệ thống thông tin.
- Nghiên cứu việc sử dụng SQL Server 2008 để xây dựng cơ sở dữ liệu.
- Tìm hiểu, nghiên cứu việc xây dựng web theo mô hình MVC.
- Nghiên cứu công cụ thiết kế và lập trình web là Visual Studio 2010 và viết bằng
ngôn ngữ C#.
GVHD: Nguyễn Bảo Ân 3 SVTH: Nguyễn Thị Mỹ Định
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Mô hình MVC
2.1.1. Tổng quan về mô hình MVC
MVC được hiểu là ba từ viết tắt của: Models (M) – Views (V) – Controllers (C).
Như ta đã biết, trong lập trình JSP, PHP hay ASP chúng ta thường đan xen HTML
và mã JSP, PHP hay ASP với nhau, điều đó tạo nên nhiều khó khăn trong quá trình
xây dựng ứng dụng cũng như bảo trì ứng dụng.
Sự đan xen mã HTML và mã JSP, PHP hay ASP với nhau tạo cho lập trình viên
không ít khó khăn khi chương trình xuất hiện lỗi. Người lập trình phải thực hiện rà
soát tất cả các module để tìm lỗi và khắc phục, công việc đó tốn rất nhiều thời gian và
công sức.
Vì vậy, để khắc phục những khó khăn trên người ta đưa ra mô hình MVC (Models
- Views - Controllers) với ba tầng hoạt động riêng biệt, mỗi tầng giữ một nhiệm vụ
nhưng luôn có mối liên hệ mật thiết hỗ trợ lẫn nhau.

Nói tóm lại, đây là 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.
2.1.2. Các thành phần trong mô hình MVC và nhiệm vụ, chức năng của từng
thành phần
Hình 2.1. Các thành phần trong mô hình MVC
Trong kiến trúc này, hệ thống được chia thành 3 tầng tương ứng đúng với tên gọi
của nó (Models – Views – Controllers). Ở đó nhiệm vụ cụ thể của các tầng được phân
chia rõ ràng và luôn hỗ trợ cho nhau.
GVHD: Nguyễn Bảo Ân 4 SVTH: Nguyễn Thị Mỹ Định
Models (Mô hình) trong ứng dụng 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. Đây là một đối tượng hoặc một tập hợp các đối tượng biểu diễn cho
phần dữ liệu của chương trình. Nó được giao nhiệm vụ cung cấp dữ liệu cho CSDL và
lưu dữ liệu vào các kho chứa dữ liệu [8]. Dữ liệu vào từ người dùng sẽ thông qua
Views đến Controllers và được kiểm tra ở Models trước khi lưu vào CSDL. Việc truy
xuất, xác nhận và lưu dữ liệu cũng là một phần nhiệm vụ của Models.
Views (Khung nhìn) là phần giao diện với người dùng. Nó bao gồm việc hiển thị dữ
liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa …, để người
dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ
thống. Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models.
Controllers (Bộ điều khiển) chịu trách nhiệm xử lý các tác động về mặt giao diện,
các thao tác đối với Models và cuối cùng là chọn một view thích hợp để hiển thị ra
màn hình. Trong kiến trúc MVC, Views chỉ có tác dụng hiển thị giao diện mà thôi, còn
điều khiển dòng nhập xuất của người dùng vẫn do Controllers đảm trách.
Theo mô hình này, dữ liệu/yêu cầu của người dùng sẽ được nhận bởi Views sau đó
Views sẽ chuyển đến cho Controllers cập nhật vào Models, tiếp theo dữ liệu trong
Models sẽ được đưa lại cho Views mà không thông qua Controllers, do vậy luồng xử
lý này có hình tam giác như hình sau:
Hình 2.2. Sơ đồ làm việc của mô hình MVC

2.1.3. Tìm hiểu sơ lược về mô hình ba lớp và cách làm việc của mô hình ba lớp
Mô hình ba lớp là mô hình được cấu thành từ 3 thành phần: Presentation
Layers, Business Logic Layers, và Data Layers. Các lớp này sẽ giao tiếp với nhau
thông qua các dịch vụ (services) mà mỗi lớp cung cấp để tạo nên ứng dụng. Trong mô
hình này, lớp này cũng không cần biết bên trong lớp kia làm những gì mà chỉ cần biết
lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
GVHD: Nguyễn Bảo Ân 5 SVTH: Nguyễn Thị Mỹ Định
Thành phần đầu tiên trong mô hình này là Presentation Layers, lớp này làm nhiệm
vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông
qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do
Business Logic cung cấp.
Thành phần thứ hai là Business Logic Layer. Đây là lớp giữ nhiệm vụ thực hiện
các nghiệp vụ chính của hệ thống. Nó sử dụng các dịch vụ do Data Layer cung cấp, và
cung cấp các dịch vụ cho Presentation Layer. Lớp này cũng có thể sử dụng các dịch vụ
của các nhà cung cấp thứ ba để thực hiện công việc của mình.
Thành phần thứ ba là Data Layer giữ nhiệm vụ thực hiện các nghiệp vụ liên quan
đến lưu trữ và truy xuất dữ liệu của ứng dụng.
Đối với những ứng dụng được tổ chức thiết kế theo mô hình ba lớp thì yêu cầu từ
người dùng sẽ được thông qua lớp Presentation Layer. Sau đó, yêu cầu sẽ được chuyển
đến lớp hai - Business Logic Layer. Tại đây, nó sẽ xem xét các yêu cầu, kiểm tra tính
đúng đắn và thực hiện các thao tác cần thiết để lấy được dữ liệu phù hợp để cung cấp
lên cho lớp Presentation Layer hiển thị ra cho người dùng. Quá trình đó được biểu diễn
như hình sau:
Hình 2.3: Sơ đồ làm việc của mô hình ba lớp
2.1.4. Những điểm giống nhau và khác nhau giữa mô hình ba lớp và mô hình
MVC
 Những điểm giống nhau giữa mô hình ba lớp và mô hình MVC
GVHD: Nguyễn Bảo Ân 6 SVTH: Nguyễn Thị Mỹ Định
Từ những tìm hiểu trên ta có thể thấy được một số điểm tương đối giống nhau giữa
mô hình MVC và mô hình ba lớp.

Ta thấy rằng, mỗi thành phần trong mỗi mô hình đều được phân công và giữ một
nhiệm vụ cụ thể và những thành phần này không chịu sự ảnh hưởng hay hạn chế bởi
thành phần kia. Tuy vậy, những thành phần này luôn có mối quan hệ mật thiết với
nhau và sẵn sàng hỗ trợ cho nhau khi cần thiết.
 Những điểm khác nhau giữa mô hình ba lớp và mô hình MVC
Từ những phân tích trên ta cũng thấy được rằng đối với mô hình ba lớp dữ liệu/yêu
cầu đi từ Presentation Layer đến Business Logic Layer. Tại đây Business Logic Layer
sẽ truy vấn và lấy kết quả về từ Data Layer. Quy trình hoạt động này đều thông qua
lớp 2 – Business Logic Layer. Ta có thể ví cách thức hoạt động của mô hình này hoạt
động tương tự như một hệ thống hỏi đáp tự động mà người hỏi là lớp 1 – Presentation
Layer và hệ thống tư vấn là lớp 2 – lớp Business Logic và lớp Data đóng vai trò là kho
dữ liệu. Khi người hỏi gởi câu hỏi đến hệ thống sẽ tìm câu trả lời thích hợp trong kho
dữ liệu và cuối cùng là hệ thống sẽ phản hồi kết quả về cho người hỏi. Quá trình thực
hiện cứ lặp đi lặp lại theo vòng lặp như thế. Dòng dữ liệu sẽ đi theo một con đường hai
chiều nhưng thông qua một trạm trung chuyển.
Khác với cách hoạt động của mô hình ba lớp, cách hoạt động của mô hình MVC
tương đối đơn giản. Dữ liệu/yêu cầu của người dùng sẽ được lấy thông qua Views và
truyền đến Controllers; tại đây Controllers sẽ xem xét tùy theo yêu cầu như thế nào sẽ
chuyển yêu cầu đến Models thích hợp. Models bắt đầu lựa chọn, trích lọc dữ liệu phù
hợp với yêu cầu. Cuối cùng nó gửi kết quả trực tiếp đến cho người dùng thông qua
Views mà không phải trả lại kết quả cho Controllers.
2.1.5. Ưu điểm, nhược điểm của mô hình MVC
2.1.5.1. Ưu điểm
Do các nhiệm vụ được phân vạch rõ ràng nên ứng dụng được xây dựng dựa trên
mô hình MVC có thể dễ dàng kiểm tra lỗi. Biết được lỗi do dữ liệu không hợp lệ ta
tiến hành kiểm tra trên Models. Trường hợp sai do trình điều khiển có vấn đề ta tiến
hành kiểm tra trên Controllers. Nếu lỗi do có vấn đề về giao diện ta kiểm tra trên
GVHD: Nguyễn Bảo Ân 7 SVTH: Nguyễn Thị Mỹ Định
Views mà không cần phải xem và kiểm tra lại toàn bộ module như đa số các ngôn ngữ
lập trình khác.

Khi đó, việc xây dựng hay phát triển phần mềm cũng trở nên dễ dàng và mang tính
chuyên nghiệp hơn. Chúng ta có thể chia cho nhiều nhóm được đào tạo nhiều kỹ năng
khác nhau, từ thiết kế mỹ thuật, lập trình đến tổ chức cơ sở dữ liệu. Điều này giúp phát
triển ứng dụng nhanh, đơn giản, dễ nâng cấp, …
Với việc phân chia hệ thống thành ba tầng riêng biệt có nhiệm vụ khác nhau, việc
thêm chức năng cho hệ thống sẽ dễ dàng hơn là phân chia theo cách khác.
Từ những ưu điểm trên cho thấy việc bảo trì cũng trở nên đơn giản và dễ dàng hơn.
Với các lớp được phân chia theo như đã nói, thì các thành phần của một hệ thống dễ
được thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp hoặc chỉ ảnh
hưởng đến lớp ngay gần kề của nó, chứ không phát tán náo loạn trong cả chương trình.
So với mô hình ba lớp ta thấy quy trình hoạt động của mô hình MVC tương đối
đơn giản và ngắn gọn hơn.
Từ đó, ta có thể nói phương pháp MVC là sự phân đoạn rõ ràng giữa Models,
Views, Controllers bên trong ứng dụng. Một cấu trúc giúp cho việc kiểm tra ứng dụng
của lập trình viên dễ dàng hơn.
2.1.5.2. Nhược điểm
Tuy mang nhiều ưu điểm nhưng mô hình này cũng mang trong nó nhược điểm.
Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong
quá trình phát triển. Vì không gian dự án không quá lớn, lúc đó ta còn dễ dàng kiểm
soát được chương trình nên không cần thiết tổ chức xây dựng từng thành phần theo
MVC. Hơn nữa, việc tốn thời gian trung chuyển dữ liệu của các tầng trong các dự án
nhỏ là không cần thiết. Nó chỉ phù hợp đối với các dự án lớn khi khối lượng dữ liệu và
số lượng công việc quá lớn.
Vì vậy, tùy theo mức độ rộng của dự án mà ta nên lựa chọn những mô hình phù
hợp để xây dựng và phát triển ứng dụng.
2.2. Hiện thực hóa mô hình MVC trên ASP.NET
2.2.1. Tổng quan về ASP.NET
GVHD: Nguyễn Bảo Ân 8 SVTH: Nguyễn Thị Mỹ Định
2.2.1.1. Một vài điểm về ASP.NET
ASP.NET đã là một bước nhảy vọt khi lần đầu tiên xuất hiện. Nó nhằm thu hẹp

khoảng cách giữa phát triển Window Form hướng đối tượng (có trạng thái) và
phát triển web hướng HTML (không có trạng thái).
Microsoft đã cố gắng che dấu HTTP (không trạng thái) và HTML (vào thời điểm
đó không thân thiện với nhiều nhân viên phát triển lập trình) bằng cách dùng mô hình
giao diện như một đối tượng control có cấu trúc hoạt động phía server. [7]
Mỗi control lưu giữ trạng thái qua các request (sử dụng tính năng ViewState) tự
động tạo ra mã HTML khi cần thiết và tự động kết nối với các sự kiện phía client (ví
dụ như click) với mã hồi đáp phía server. Kết quả WebForm là một lớp trừu tượng lớn
nhằm chuyển giao diện có xử lý sự kiện thông qua Web. [7]
2.2.1.2. Nhược điểm của ASP.NET truyền thống
ASP.NET truyền thống đã từng là một ý tưởng hay nhưng thực tế cũng tồn tại
nhiều vấn đề rắc rối. Qua nhiều năm, sử dụng WebForm cho thấy có một số nhược
điểm:
ViewState: kỹ thuật lưu giữ trạng thái qua các request (ViewState) thường mang lại
kết quả là những khối dữ liệu lớn được chuyển qua lại giữa client và server. Nó có thể
đạt hàng trăm kilobytes trong nhiều dữ liệu thực và nó được chuyển qua lại với mỗi
lần request. Điều đó làm những người truy cập vào trang web phải chờ một thời gian
dài khi họ chọn một button hoặc cố gắng di chuyển đến trang kế tiếp [7]. Chính vì vậy
Ajax là một trong các giải pháp được đưa ra để giải quyết vấn đề này.
Page life cycle: kỹ thuật kết nối sự kiện phía client với mã xử lý sự kiện phía server
là một phần của page life cycle. Chỉ có một số ít lập trình viên thành công trong việc
xử lý hệ thống control trong thời gian thực mà không bị lỗi ViewState hoặc hiểu được
rằng một số trình xử lý sự kiện không được kích hoạt hay phải kích hoạt rất khó khăn.
[7]
Limited control over HTML: Server control tự tạo mã HTML tương tứng nhưng
không phải là mã HTML mà ta mong muốn. Mã HTML của chúng thường không tuân
theo tiêu chuẩn web hoặc không sử dụng tốt CSS. Hơn nữa, các server control còn tạo
ra các giá trị ID phức tạp và không đoán trước được, điều đó làm khó khăn trong việc
sử dụng JavaScript. [7]
GVHD: Nguyễn Bảo Ân 9 SVTH: Nguyễn Thị Mỹ Định

Ý thức sai về sự tách biệt các thành phần: Mô hình code - behind của ASP.NET
cung cấp một giải pháp cho phép ứng dụng đưa mã ra khỏi các dòng HTML vào thành
một lớp code – behind riêng biệt, điều này đã được ca ngợi là đã làm tách biệt giữa
giao diện với mã xử lý. Nhưng thực tế người lập trình lại thường xuyên pha trộn mã xử
lý giao diện (xử lý control phía server) với mã xử lý chương trình (xử lý CSDL) trong
cùng những lớp code behind khổng lồ [7]. Nếu không có sự tách biệt rõ ràng giữa các
thành phần kết quả cuối cùng là rất khó để tiếp cận với mã lập trình gây khó khăn cho
quá trình nâng cấp và phát triển.
Untestable: Khi những người thiết kế của ASP.NET lần đầu tiên giới thiệu nền
tảng này họ có thể đã không lường trước được là việc test tự động sẽ trở thành một
công đoạn chính của việc phát triển phần mềm ngày nay. Cấu trúc mà họ đã thiết kế
hoàn toàn không thích hợp với việc test tự động [7].
Vì vậy, ASP.NET không ngừng bổ sung thêm các tính năng. Phiên bản 2.0 thêm
nhiều component chuẩn có thể giảm khá nhiều code mà lập trình viên cần phải tự viết.
AJAX release năm 2007 đã là phản hồi của Microsoft với phong trào Web 2.0/Ajax.
Nó hỗ trợ tương tác phía client, điều đó làm cho công việc của nhân viên phát triển
web đơn giản hơn. Tiếp sau đó là phiên bản 3.5. Đây là một bản nâng cấp nhỏ hơn. Nó
hỗ trợ thêm một số tính năng và control mới. Tính năng ASP.NET Dynamic Data tạo
ra các trang cho phép chỉnh sửa/liệt kê cơ sở dữ liệu một cách tự động [7].
2.2.2. Sơ lược về ASP.NET MVC
ASP.NET MVC là một framework phát triển ứng dụng web mới của Microsoft.
Nó kết hợp giữa tính hiệu quả và nhỏ gọn của mô hình MVC, những ý tưởng và công
nghệ hiện đại nhất, cùng với những thành phần tốt nhất của nền tảng ASP.NET hiện
thời. Là một lựa chọn khác bên cạnh nền tảng WebForm khi phát triển một ứng dụng
web sử dụng ASP.NET [7].
2.2.3. Một vài đặc tính trong ASP.NET MVC
2.2.3.1. Khả năng ánh xạ các URL vào trong class Controllers của ASP.NET
MVC
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. Ví dụ URL "/Products.aspx"

GVHD: Nguyễn Bảo Ân 10 SVTH: Nguyễn Thị Mỹ Định
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 một đoạn code cụ thể tương ứng với nội dung của
file template. Lúc này, đ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.
Đối với 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” . Các controller chịu trách nhiệm xử lý
những yêu cầu được gửi đến (request).
2.2.3.2. Cơ chế ánh xạ theo bảng định tuyến URL (URL Routing)
Browser yêu cầu một địa chỉ từ cotroller action trong ASP.NET MVC Framework
được gọi là định tuyến URL (URL Routing). URL Routing sẽ chỉ định request (yêu
cầu) đến controller action. Nó sử dụng một bảng định tuyến để điều khiển các yêu cầu
(request). Bảng định tuyến được tạo khi ứng dụng được chạy lần đầu tiên. Bảng này
được thiết lập trong file Global.asax.
Framework này có một bộ máy ánh xạ URL thật sự mạnh mẽ [6]. Bộ máy này cung
cấp phương pháp rất linh hoạt trong việc ánh xạ URL sang cho Controllers Classes.
Chúng ta 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 Controllers nào. Ngoài ra nó 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. Ví dụ, ta có một URL là: “/Product/Details/5” lúc này tự
động hệ thống sẽ biết tách tham số “5” ra khỏi URL để thực thi trong controller
“Product” với action là “Details”.
Hình 2.4. Cơ chế ánh xạ địa chỉ tự phát sinh trong file Global.ascx
GVHD: Nguyễn Bảo Ân 11 SVTH: Nguyễn Thị Mỹ Định
Cơ chế ánh xạ các URL được thực hiện theo quy luật sau
{controller}/{action}/{id}
Trong đó:
• controller là địa chỉ của lớp controller được chỉ định đi tới.

• action là phương thức (method) cần truy xuất trong controller.
• id là từ khóa cung cấp cho action để truy vấn.
Ví dụ: Giả sử project của chúng ta có một controller có tên là Product bao gồm các
phương thức như : thêm mới sản phẩm (Insert), chỉnh sửa cập nhật thông tin sản phẩm
(Edit), …
Bây giờ, chúng ta muốn chỉnh sửa thông tin của một sản phẩm có mã sản phẩm là “5”
thì ta sẽ cung cấp địa chỉ truy vấn như sau:
/Product/Edit/5
Trong ASP.NET MVC, các project được định nghĩa sẵn một số quy luật về đường
đi để người dùng không phải hiệu chỉnh thêm điều gì khi bắt đầu làm quen với
framework mới. Chúng ta 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.
Phương pháp mặc định này làm nhiệm vụ ánh xạ một phần URL từ HTTP Request.
Do ứng dụng hoạt động theo cơ chế ánh xạ URL mạnh mẽ nên cho phép xây dựng
ứng dụng với những URL không cần cs mở rộng.
2.2.3.3. Khả năng test không hạn chế – Test Driven Developer
Trong ASP.NET MVC có sự tách rõ ràng các mối liên quan, vì vậy mở rộng khả
năng test TDD ( Test Driven Developer). Chúng ta có thể test unit trong ứng dụng mà
không cần phải chạy Controllers cùng với tiến trình của ASP.NET và có thể dùng bất
kỳ một unit testing framework như NUnit, MBUnit, MS Test… để test ứng dụng [6].
2.2.3.4. Dễ nâng cấp, mở rộng và phát triển ứng dụng
Trong ASP.NET MVC mọi thứ được thiết kế riêng rẽ theo từng Controllers,
Models và Views nên ta có thể dễ dàng thay thế/ tùy biến các lớp (ví dụ có thể lựa
chọn engine view riêng routing policy, parameter serialization, …) [6].
GVHD: Nguyễn Bảo Ân 12 SVTH: Nguyễn Thị Mỹ Định
2.2.3.5. Kế thừa những tính năng của ASP.NET WebForm
Bên cạnh đó, ASP.NET MVC Framework cũng hỗ trợ file ASP.NET như .ASPX .
ASCX và .Master đánh dấu các tập tin này như một “view template” (có thể dễ dàng
sử dụng các tính năng của ASP.net như lồng các trang Master, <%=%> snippets, mô tả
server controls, template, data-binding, localization…). Tuy nhiên sẽ không còn

postback và interactive back server và thay vào đó là interactive end-user với một
controller class (không còn viewstate, page lifecycle) [6].
ASP.NET MVC Framework cũng hỗ trợ đầy đủ các tính năng bảo mật của
ASP.NET như: Form/ Windows authenticate, URL authorization, membership/roles,
output và data caching, section/ profile state, configuration system, provider
architecture, …[6]
Vì vậy, không quá khó khăn khi người lập trình ASP.NET làm quen ASP.NET
MVC.
2.2.4. Sự khác biệt giữa ASP.MVC và ASP.NET WebForm
ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều có
lifecycle, postback và dùng các web controls, các event để thực hiện các hành động
cho UI (User Interface) khi có sự tương tác với người dùng nên hầu hết ASP.NET
WebForm xử lý chậm. Đối với ASP.NET MVC chia ra làm 3 phần: Models, Views,
Controllers. Mọi tương tác của người dùng với Views sẽ được thực hiện hành động
trong Controllers, không còn postback, lifecycel và events nữa [6].
Việc kiểm tra (test), gỡ lỗi (debug) với ASP.NET WebForm đều phải chạy tất cả
các tiến trình của ASP.NET và sự thay đổi ID của bất kỳ Controls nào cũng ảnh hưởng
đến ứng dụng. Đối với MVC thì việc đó có thể sử dụng các unit test có thể thẩm định
rất dễ dàng các Controllers thực hiện như thế nào mà không cần thay đổi các thành
phần liên quan.
Sau đây là bảng so sánh các tính năng của ASP.NET WebForm với ASP.NET
MVC
Các tính năng ASP.NET WebForm ASP.NET MVC
GVHD: Nguyễn Bảo Ân 13 SVTH: Nguyễn Thị Mỹ Định

×