ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA HỆ THỐNG THÔNG TIN KINH TẾ
tế
H
uế
cK
in
h
KHÓA LUẬN TỐT NGHIỆP
CỔ KIM NGUYÊN PHƯƠNG
Tr
ườ
ng
Đ
ại
họ
NGHIÊN CỨU MÔ HÌNH MVC VÀ ỨNG
DỤNG XÂY DỰNG WEBSITE BÁN
HÀNG CHO CÔNG TY CỔ PHẦN HTL
Khóa học: 2009 – 2013
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA HỆ THỐNG THÔNG TIN KINH TẾ
tế
H
uế
in
h
KHÓA LUẬN TỐT NGHIỆP
Đ
ại
họ
cK
NGHIÊN CỨU MÔ HÌNH MVC VÀ ỨNG
DỤNG XÂY DỰNG WEBSITE BÁN
HÀNG CHO CÔNG TY CỔ PHẦN HTL
Sinh viên thực hiện:
Giáo viên hướng dẫn:
Cổ Kim Nguyên Phương
Th.S Trần Thái Hòa
ng
Lớp: K43 - Tin Học Kinh Tế
Tr
ườ
Niên khóa: 2009 - 2013
Huế, 05/2013
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
LỜI CẢM ƠN
Được sự phân công của các thầy cô khoa Hệ Thống Thông Tin Kinh tế và
trường Đại học Kinh Tế Huế, sau gần 4 tháng thực tập nghề nghiệp, em đã hoàn
uế
thành bài Khóa Luận với đề tài “Nghiên cứu mô hình MVC và ứng dụng xây
tế
H
dựng Website bán hàng cho Công ty cổ phần HTL”.
Để thực hiện nhiệm vụ của bài Khóa Luận, ngoài sự nỗ lực của bản thân
còn có sự giúp đỡ và hướng dẫn tận tình của các thầy cô trong Khoa cùng các
nhân viên của đơn vị thực tập.
h
Em xin chân thành cảm ơn các thầy cô trong Khoa đã giúp đỡ, hướng dẫn
in
và luôn động viên, khích lệ em trong suốt quá trình thực tập. Đồng thời cho phép
cK
em gửi lời cám ơn đến các nhân viên tại đơn vị thực tập của Công ty cổ phần
HTL, đã trao đổi và truyền đạt cho em nhiều kinh nghiệm quý báu trong quá
họ
trình thực tập cũng như trong công việc sau này.
Tuy nhiên, do kiến thức chuyên môn còn hạn chế cũng như việc thiếu
Đ
ại
kinh nghiệm thực tiễn nên nội dung đề tài không tránh khỏi những thiếu sót. Vì
vậy, em kính mong nhận được sự góp ý, chỉ của quý thầy cô trong Khoa cùng
giáo viên hướng dẫn là Thạc sĩ Trần Thái Hòa để đề tài được hoàn thiện hơn.
ng
Cuối cùng em xin cảm ơn đến tất cả các thầy cô giáo trong Khoa Hệ
Thống Thông Tin Kinh tế, đến gia đình người thân và tất cả bạn bè đã đóng góp
ườ
ý kiến và giúp đỡ cho đề tài của em được hoàn thành.
Tr
Em xin chân thành cảm ơn !
Huế, tháng 05 năm 2013
Sinh viên thực hiện
Cổ Kim Nguyên Phương
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 1
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
MỤC LỤC
DANH MỤC THUẬT NGỮ ...........................................................................................5
DANH MỤC CÁC BẢNG ..............................................................................................6
uế
DANH MỤC CÁC HÌNH ...............................................................................................6
tế
H
PHẦN A – MỞ ĐẦU .....................................................................................................9
1. Lý do chọn đề tài .........................................................................................................9
2. Mục tiêu nghiên cứu ..................................................................................................10
h
3. Đối tượng và phạm vi nghiên cứu .............................................................................10
in
4. Phương pháp nghiên cứu ...........................................................................................11
cK
5. Kết cấu của đề tài.......................................................................................................11
PHẦN B – NỘI DUNG................................................................................................12
họ
CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH MVC ......................................................12
1.1. Xuất xứ của mô hình MVC ....................................................................................12
Đ
ại
1.2. Khái niệm mô hình MVC .......................................................................................12
1.3. Kiến trúc của mô hình MVC ..................................................................................13
1.4. Đặc điểm của mô hình MVC..................................................................................15
ng
1.5. Mô hình MVC trong ASP.NET..............................................................................15
ườ
1.5.1. Lịch sử phát triển của ASP.NET .........................................................................16
1.5.2. Nhược điểm của ASP.NET .................................................................................18
Tr
1.5.3. Sự ra đời của ASP.NET MVC.............................................................................19
1.5.4. Đặc tính trong ASP.NET MVC...........................................................................20
1.5.5. Lợi ích của mô hình ASP.NET MVC .................................................................21
1.5.6. So sánh ASP.NET MVC với ASP.NET ..............................................................22
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 2
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
CHƯƠNG 2: PHÂN TÍCH TÌNH HÌNH CÔNG TY ...................................................24
2.1. Tổng quan về công ty cổ phần HTL.......................................................................24
2.1.1. Lịch sử hình thành ...............................................................................................24
uế
2.1.2. Quan điểm kinh doanh.........................................................................................25
2.1.3. Lĩnh vực hoạt động..............................................................................................26
tế
H
2.1.4. Năng lực công ty..................................................................................................27
2.2. Cơ cấu tổ chức công ty cổ phần HTL.....................................................................27
h
2.3. Mô tả chương trình ứng dụng.................................................................................28
in
2.3.1. Khảo sát hiện trạng ..............................................................................................28
cK
2.3.2. Xác lập dự án .......................................................................................................29
2.3.3. Quy trình hoạt động của Website ........................................................................29
họ
2.3.4. Quy trình nghiệp vụ.............................................................................................29
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG .....................................30
Đ
ại
3.1. Cài đặt mô hình MVC ............................................................................................30
3.1.1. Cài đặt chương trình ............................................................................................30
3.1.2. Tạo một Project với ASP.NET MVC..................................................................31
ng
3.1.3. Tạo mới cơ sở dữ liệu..........................................................................................35
ườ
3.2. Xây dựng ứng dụng với ASP.NET MVC...............................................................36
3.2.1. Phân tích thiết kế hệ thống ..................................................................................36
Tr
3.2.1.1. Xác định yêu cầu hệ thống ...............................................................................36
3.2.1.2. Phân tích hệ thống ............................................................................................37
3.2.2. Phân tích thiết kế cơ sở dữ liệu ...........................................................................42
3.2.2.1. Liệt kê tất cả các danh từ liên quan đến bài toán..............................................42
3.2.2.2. Loại bỏ những danh từ đồng nghĩa...................................................................42
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 3
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
3.2.2.3. Xác định các thực thể và những thuộc tính tương ứng.....................................43
3.2.2.4 Mối quan hệ giữa các thực thể...........................................................................44
3.2.2.5. Xác định khoá chính cho từng thực thể............................................................45
uế
3.2.2.6. Sơ đồ thực thể mối quan hệ ..............................................................................45
3.2.2.7. Mô hình cơ sở dữ liệu.......................................................................................46
tế
H
3.2.3. Xây dựng Controllers ..........................................................................................46
3.2.4. Xây dựng Models ................................................................................................52
h
3.2.5. Xây dựng Views ..................................................................................................54
in
3.3. Tìm hiểu định tuyến URL.......................................................................................58
cK
3.3.1. Đường đi mặc định của ASP.NET MVC URL ...................................................58
3.3.2. Hệ thống định tuyến trong ASP.NET MVC........................................................60
họ
3.3.3. Các quy tắc định tuyến ........................................................................................60
3.4. Truy cập dữ liệu với LINQ.....................................................................................67
Đ
ại
3.5. Bảo mật với ASP.NET MVC APPLICATION ......................................................68
3.6. Hình ảnh chức năng chính của Website .................................................................72
PHẦN C – KẾT LUẬN ...............................................................................................78
ng
1. Kết quả đạt được........................................................................................................78
ườ
2. Hạn chế của đề tài......................................................................................................79
3. Hướng phát triển........................................................................................................80
Tr
TÀI LIỆU THAM KHẢO .............................................................................................81
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 4
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
DANH MỤC THUẬT NGỮ
Class: Lớp.
Graphical User Interface (GUI): Giao diện đồ họa người dùng.
uế
GUI Component: Thành phần đồ họa người dùng.
Framework: Nền tảng.
tế
H
Request: Yêu cầu.
Server: Máy chủ.
in
Control: Đối tượng điều khiển.
h
Client: Máy trạm.
cK
Test Driven Development (TDD): Phát triển điều hướng.
Unit Test: Kiểm thử đơn vị.
Test: Kiểm thử.
họ
Postback: Phản hồi.
Đ
ại
Code: Mã lệnh.
Language Integrate Query (LINQ): Ngôn ngữ truy vấn tích hợp.
ng
Solution: Các giải pháp cho dự án.
Project: Dự án.
ườ
Browser : Trình duyệt.
Tr
Businness Logic: Lớp xử lý.
Application Programming Interface (API): Giao diện lập trình ứng dụng.
Render: Trả lại.
Override: Nạp chồng.
Redirect: Chuyển hướng.
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 5
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
DANH MỤC CÁC BẢNG
Tên bảng
Trang
Quá trình phát triển của ASP.NET
17
1.2
So sánh giữa ASP.NET Webform và ASP.NET MVC
3.1
Các loại Action Result
3.2
Action Method theo URL
23
50
63
h
tế
H
1.1
uế
Số bảng
cK
in
DANH MỤC CÁC HÌNH
Tên hình
Trang
1.2
Mô hình tuần tự của MVC
14
1.3
Mô hình MVC
16
1.4
Mô hình ASP.NET Webform
18
1.5
Nền tảng ASP.NET MVC Framwork
20
2.1
Logo Công ty cổ phần HTL
24
2.2
Cơ cấu tổ chức công ty
27
2.3
Quy trình nghiệp vụ
29
3.1
Cài đặt ASP.NET MVC 3
30
3.2
Giao diện tạo Project mới
31
Tr
Đ
ại
họ
Các thành phần chính của mô hình MVC
ườ
1.1
ng
Số hình
SVTH: Cổ Kim Nguyên Phương – K43THKT
13
Trang 6
GVHD: Th.S Trần Thái Hòa
32
3.4
Giao diện Solution của MVC
32
3.5
Giao diện mẫu mô hình MVC
33
3.6
Tạo mới cơ sở dữ liệu
3.7
Biểu đồ phân rã chức năng
3.8
Mức ngữ cảnh
3.9
Mức 0 – Sơ đồ luồng dữ liệu
3.10
Mức 1 - Chức năng quản lý người dùng
3.11
Mức 1 - Chức năng quản lý bán hàng
38
3.12
Mức 1 - Chức năng quản lý sản phẩm
39
3.13
Mức 1 - Chức năng quản lý tin tức
40
3.14
Mức 1 - Chức năng thống kê
40
3.15
Mối quan hệ giữa các thực thể
43
3.16
Sơ đồ thực thể mối quan hệ
44
3.17
Mô hình cơ sở dữ liệu
45
3.18
Liên kết cơ sở dữ liệu
51
3.19
Mô hình hoạt động của MVC
52
3.20
Các MasterPage của Views
53
3.21
Giao diện trang LayoutSite.Master
54
Tr
uế
Khởi tạo dự án
ườ
3.3
ng
Khóa Luận Tốt Nghiệp
Đ
ại
họ
cK
in
h
tế
H
34
SVTH: Cổ Kim Nguyên Phương – K43THKT
36
36
37
38
Trang 7
GVHD: Th.S Trần Thái Hòa
3.22
Giao diện trang Layoutadmin.Master
54
3.23
Trang quản lý Website
67
3.24
Trang đăng kí thành viên
69
3.25
Trang đăng nhập Website
uế
Khóa Luận Tốt Nghiệp
3.26
Trang chủ Website
3.27
Trang giới thiệu
3.28
Trang tin tức
3.29
Trang hướng dẫn
3.30
Trang giỏ hàng
3.31
Trang đăng ký
3.32
Trang đăng nhập
74
3.33
Trang quản lý
75
3.34
Trang thêm sản phẩm
75
3.35
Trang sửa sản phẩm
76
3.36
Trang quản lý đơn hàng
76
tế
H
h
in
cK
họ
Đ
ại
ng
71
72
72
73
73
74
Tr
ườ
71
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 8
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
PHẦN A – MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, việc giới thiệu sản phẩm ngày càng giữ một vai trò quan trọng trong
uế
hoạt động kinh doanh của Công ty, đặc biệt là các Công ty vừa và nhỏ. Và khi công
nghệ thông tin ra đời, thì hoạt động giới thiệu nói chung và quản lý sản phẩm nói riêng
tế
H
đã chuyển sang một phương pháp giới thiệu mới. Thay vì giới thiệu bằng một số cách
phổ thông như trước đây, các Công ty đã đầu tư mạnh mẽ vào việc xây dựng trang
Web để giới thiệu sản phẩm. Hiện nay việc thiết kế một trang Web ASP.NET rất dễ
dàng, chúng ta có thể tìm tài liệu trên mạng, tham khảo các Project để nghiên cứu và
h
xây dựng. Bởi vì do Microsoft muốn tạo ra một công cụ để người sử dụng có thể dễ
cK
được thiết kế để thực hiện những điều đó.
in
dàng làm việc và xây dựng một trang Web nhanh chóng nhất, ASP.NET Webform
ASP.NET Webform được thiết kế để người dùng cảm thấy như mình đang
thiết kế một chương trình Windows Form vậy, bằng cách kéo thả các Button, tự sinh
họ
Code HTML đơn giản, dễ hiểu… Chính vì thế nền tảng ASP.NET Webform dù đã ra
đời cách đây hơn 10 năm nhưng hiện nay vẫn đang sử dụng rộng rãi .
Đ
ại
Tuy nhiên ưu điểm của ASP.NET WebForm đôi khi lại chính là nhược điểm
của nó, chính là không có sự phân chia rõ ràng giữa giao diện và Code xử lý, nên ngay
trong giao diện lại có câu lệnh truy vấn SQL. Đến khi chúng ta cần thay thế hoặc nâng
ng
cấp một chức năng nào đó thì rất rắc rối. Để khắc phục những nhược điểm của
ASP.NET Webform, năm 2007 Microsoft đã cho ra đời nền tảng ASP.NET MVC.
ườ
ASP.NET MVC là một lựa chọn thay thế cho ASP.NET Webform, được xây
dựng với 3 lớp chính: lớp dữ liệu (Models), lớp giao diện (Views) và lớp điều khiển
Tr
(Controllers). Việc chia một trang Web thành nhiều lớp như thế này giúp cho những
lập trình viên có kinh nghiệm có thể xây dựng một Website với cấu trúc chặt chẽ, rõ
ràng. Với cấu trúc 3 lớp như thế này, việc nâng cấp hoặc thay thế một chức năng nào
đó trở nên hết sức dễ dàng, đồng thời việc kiểm thử cũng trở nên đơn giản hơn.
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 9
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
Với những ưu điểm trên, trong tương lai chắc chắn ASP.NET MVC sẽ là một
nền tảng chính trong việc xây dựng và phát triển một Website ASP.NET. Tuy nhiên vì
đây là một công nghệ mới , nên tại Việt Nam hầu như chưa được áp dụng nhiều, cũng
có rất ít bạn sinh viên biết tới mô hình này. Chính vì thế, em đã mạnh dạn chọn đề tài
uế
“Nghiên cứu mô hình MVC và ứng dụng xây dựng website bán hàng cho Công ty cổ
phần HTL” để làm khóa luận tốt nghiệp cho mình.
tế
H
2. Mục tiêu nghiên cứu
Nghiên cứu mô hình MVC để ứng dụng vào việc xây dựng Website bán hàng
+ Nghiên cứu ASP.NET MVC 3.
cK
+ Các ứng dụng của mô hình MVC.
in
+ Nghiên cứu mô hình MVC của Microsoft.
h
cho Công ty cổ phần HTL dựa trên ngôn ngữ ASP.NET MVC:
+ Thực trạng bán hàng của Công ty cổ phần HTL.
họ
+ Xây dựng Website bán hàng cho Công ty cổ phần HTL.
3. Đối tượng và phạm vi nghiên cứu
Đ
ại
Đối tượng nghiên cứu
+ Nghiên cứu ASP.NET MVC 3.
ng
+ Các ngôn ngữ lập trình Web như: ASP, HTML,CSS...
+ Kiến thức về mô hình MVC.
ườ
+ Ứng dụng của mô hình MVC.
Tr
+ Quy mô hoạt động của Công ty cổ phần HTL.
+ Quy trình hoạt động bán hàng của Công ty cổ phần HTL.
Phạm vi nghiên cứu
+ Không gian: Công ty cổ phần HTL (25 Hai Bà Trưng – TP.Huế).
+ Thời gian: Trong khoảng 4 tháng (21/01/2013 - 12/05/2013).
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 10
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
4. Phương pháp nghiên cứu
+ Phương pháp quan sát, tổng hợp.
+ Phương pháp nghiên cứu tài liệu.
uế
+ Phương pháp phân tích, thiết kế.
5. Kết cấu của đề tài
tế
H
Ngoài phần Mở Đầu và phần Kết Luận ra, đề tài này còn được chia thành 3
chương, trong đó:
Chương 1: Tổng quan về mô hình MVC
cK
Kiến trúc của mô hình MVC
in
Khái niệm mô hình MVC
h
Xuất sứ của mô hình MVC
Đặc điểm của mô hình MVC
họ
Mô hình MVC trong ASP.NET
Chương 2: Phân tích tình hình công ty
Đ
ại
Tổng quan về tình hình công ty cổ phần HTL
Cơ cấu tổ chức công ty cổ phần HTL
ng
Mô tả chương trình ứng dụng
Tr
ườ
Chương 3: Xây dựng chương trình ứng dụng
Cài đặt mô hình MVC
Xây dựng ứng dụng với ASP.NET MVC
Tìm hiểu định tuyến URL
Truy cập dữ liệu với LINQ
Bảo mật với ASP.NET MVC
Hình ảnh chức năng của Website
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 11
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
PHẦN B – NỘI DUNG
CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH MVC
1.1. Xuất xứ của mô hình MVC
uế
Tất cả bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox
tế
H
Parc ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập
trình hướng đối tượng (Object Oriented Programming) cho phép lập trình viên làm
việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và
phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox Parc
h
còn đi xa hơn khi cho ra đời cái gọi là kiến trúc MVC (viết tắt của Models – Views –
in
Controllers).
cK
MVC được phát minh tại Xerox Parc vào những năm 70, bởi Trygve
Reenskaug. MVC lần đầu tiên xuất hiện công khai là trong Smalltalk-80. Sau đó trong
một thời gian dài hầu như không có thông tin nào về MVC, ngay cả trong tài liệu 80
họ
Smalltalk. Các giấy tờ quan trọng đầu tiên được công bố trên MVC là “A Cookbook
for Using the Models -Views - Controllers User Interface Paradigm in Smalltalk-80”,
Đ
ại
bởi Glenn Krasner và Stephen Pope, xuất bản trong tháng 8 đến tháng 9 năm 1988.
1.2. Khái niệm mô hình MVC
Kiến trúc MVC là việc chia tất cả mục của một ứng dụng ra làm ba thành phần
ng
(Component) khác nhau: Models, Views và Controllers.
ườ
Models: Models đượ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 ở Models.
Tr
Dữ liệu vào từ người dùng sẽ thông qua Views được kiểm tra ở Models 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 Models.
Views: Views 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ều khiển và hiển thị kết quả cho người
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 12
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
dùng. Các trang HTML, JSP, các thư viện và các file nguồn là một phần của thành
phần Views.
Controllers: Controllers là tầng trung gian giữa Models và Views. Controllers
đượ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ừ
uế
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 Models
tế
H
và sau đó sinh ra các kết quả cho người dùng và được thành phần Views hiển thị.
1.3. Kiến trúc của mô hình MVC
Trong kiến trúc MVC, một đối tượng đồ họa người dùng (GUI Component) bao
gồm 3 thành phần cơ bản: Models, Views, và Controllers. Model có trách nhiệm đối
h
với toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa. Views chính là thể hiện
in
trực quan của Models, hay nói cách khác chính là giao diện của đối tượng đồ họa. Và
Tr
ườ
ng
Đ
ại
họ
như những đối tượng khác.
cK
Controllers điều khiển việc tương tác giữa đối tượng đồ họa với người sử dụng cũng
Hình 1.1: Các thành phần chính của mô hình MVC
Khi người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái của đối
tượng đồ họa, nó sẽ tương tác thông qua Controllers của đối tượng đồ họa. Controllers
sẽ thực hiện việc thay đổi trên Models. Khi có bất kỳ sự thay đổi nào ở xảy ra ở
Models, nó sẽ phát thông điệp (Broadcast Message) thông báo cho Views và
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 13
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
Controllers biết. Nhận được thông điệp từ Models, Views sẽ cập nhật lại thể hiện của
mình, đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Models. Còn
Controllers, khi nhận được thông điệp từ Models, sẽ có những tương tác cần thiết phản
Đ
ại
họ
cK
in
h
tế
H
uế
hồi lại người sử dụng hoặc các đối tượng khác.
Hình 1.2: Mô hình tuần tự của MVC
Lấy ví dụ một GUI Component (thành phần đồ họa người dùng) đơn giản là
ng
Checkbox. Checkbox có thành phần Models để quản lý trạng thái của nó là Check hay
Uncheck, thành phần Views để thể hiện nó với trạng thái tương ứng lên màn hình, và
ườ
thành phần Controllers để xử lý những sự kiện khi có sự tương tác của người sử dụng
hoặc các đối tượng khác lên Checkbox.
Tr
Khi người sử dụng nhấn chuột vào Checkbox, thành phần Controllers của
Checkbox sẽ xử lý sự kiện này, yêu cầu thành phần Models thay đổi dữ liệu trạng thái.
Sau khi thay đổi trạng thái, thành phần Models phát thông điệp đến thành phần Views
và Controllers. Thành phần Views của Checkbox nhận được thông điệp sẽ cập nhật lại
thể hiện của Checkbox, phản ánh chính xác trạng thái Checkbox do Models lưu giữ.
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 14
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
Thành phần Controllers nhận được thông điệp do Models gởi tới sẽ có những tương
tác phản hồi với người sử dụng nếu cần thiết.
1.4. Đặc điểm của mô hình MVC
Cái lợi ích quan trọng nhất của mô hình MVC là nó giúp cho ứng dụng dễ bảo
uế
trì, Module hóa các chức năng, và được xây dựng nhanh chóng. MVC tách các tác vụ
tế
H
của ứng dụng thành các phần riêng lẽ Models, Views, Controllers giúp cho việc xây
dựng ứng dụng nhẹ nhàng hơn. Dễ dàng thêm các tính năng mới, và các tính năng cũ
có thể dễ dàng thay đổi. MVC cho phép các nhà phát triển và các nhà thiết kế có thể
mà không ảnh hưởng đến các phần khác.
h
làm việc đồng thời với nhau. MVC cho phép thay đổi trong một phần của ứng dụng
in
Sở dĩ như vậy vì kiến trúc MVC đã tách biệt (Decoupling) sự phụ thuộc giữa
cK
các thành phần trong một đối tượng đồ họa, làm tăng tính linh động (Flexibility) và
tính tái sử dụng (Reusebility) của đối tượng đồ họa đó. Một đối tượng đồ họa bấy giờ
có thể dễ dàng thay đổi giao diện bằng cách thay đổi thành phần Views của nó trong
họ
khi cách thức lưu trữ (Models) cũng như xử lý (Controllers) không hề t hay đổi.
Tương tự, ta có thể thay đổi cách thức lưu trữ (Models) hoặc xử lý (Controllers)
Đ
ại
của đối tượng đồ họa mà những thành phần còn lại vẫn giữ nguyên. Chính vì vậy mà
kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều Framework và thư viện đồ
họa khác nhau. Tiêu biểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối
ng
tượng Small Talk (cũng do Xerox Parc nghiên cứu và phát triển vào thập niên 70 của
thế kỷ 20). Các Swing Components của Java cũng được xây dựng dựa trên kiến trúc
ườ
MVC.
Tr
1.5. Mô hình MVC trong ASP.NET
Như đã nói ở trên, mô hình MVC với những ưu điểm đã được ứng dụng nhiều
trên các nền tảng (Framework) khác nhau, trong đó có một nền tảng (Framework) nổi
tiếng được nhiều người biết đến và sử dụng đó là nền tảng (Framework) ASP.NET
MVC. Vậy ASP.NET MVC là gì?
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 15
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
ASP.NET MVC là một nền tảng (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 Models – Views
- Controllers (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
uế
nền tảng Webform khi phát triển 1 ứng dụng Web sử dụng ASP .NET.
Trong phần này em sẽ trình bày lý do tại sao ASP.NET MVC được tạo ra, nó có
tế
H
gì khác so với ASP.NET Webform, và cuối cùng là những cái mới trong ASP.NET
ườ
ng
Đ
ại
họ
cK
in
h
MVC.
Hình 1.3: Mô hình MVC
Tr
1.5.1. Lịch sử phát triển của ASP.NET
Để hiểu được những đặc điểm nổi bật và mục tiêu thiết kế của ASP.NET
MVC, trước tiên cần coi lại lịch sử phát triển của Website ASP. Trong số những nền
tảng phát triển Web của Microsoft, chúng ta sẽ thấy sức mạnh và sự phức tạp tăng lên
theo từng năm. Như trong bảng ta thấy mỗi nền tảng mới đều giải quyết những thiếu
sót đặc trưng của nền tảng trước đó. Tương tự, ASP.NET MVC được thiết kế để giải
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 16
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
quyết những thiếu sót của ASP.NET Webform truyền thống, nhưng lại bằng cách nhấn
mạnh sự đơn giản.
Bảng 1.1: Quá trình phát triển của ASP.NET
Công nghệ
Sức mạnh
Điểm yếu
Thời kỳ đầu Common Gateway Đơn giản, linh hoạt.
Chạy ngoài Web
server, nên cần
tế
H
Interface (CGI). Lựa chọn duy nhất vào
thời điểm này.
uế
Thời kì
nhiều tài nguyên
(Cần các tiến trình
riêng lẻ trên hệ điều
in
h
hàng cho mỗi lời
yêu cầu).
theo
Database
cK
Thời kỳ tiếp Microsoft Internet Chạy trong Web Server. Chỉ là đóng gói cho
1996
Đ
ại
họ
Connector (IDC).
Active Server
ườ
ng
ASP.NET 1.0/1.1.
Tr
2004
SQL và Template
cho các kết quả có
định dạng.
Mục đích chung.
Pages
2002/03
những câu truy vấn
Thông dịch thời gian
thực hiện.
Đã được biên dịch.
Nặng nề trên băng
Giao diện có trạng thái.
thông HTML khó
nhìn.
ASP.NET 2.0.
Cấu trúc lớn. Xu hướng
Không thể Test.
lập trình hướng đối
tượng.
ASP.NET truyền thống đã là một bước nhảy vọt khi lần đầu tiên xuất hiện,
nhằm thu hẹp khoảng cách giữa phát triển WindowForm 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). Hình sau minh họa công
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 17
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
in
h
tế
H
uế
nghệ ASP.NET Webform trong lần đầu xuất hiện năm 2002 .
Hình 1.4: Mô hình ASP.NET Webform
cK
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 người lập trình) bằng cách dùng mô hình giao diện
họ
như một đối tượng điều khiển (Control) có cấu trúc hoạt động phía Server.
Mỗi đối tượng điều khiển (Control) lưu giữ trạng thái qua các yêu cầu
Đ
ại
(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
ng
thông qua Web.
1.5.2. Nhược điểm của ASP.NET
ườ
ASP.NET truyền thống đã từng là một ý tưởng hay, nhưng thực tế lại trở nên
Tr
rắc rối. Qua nhiều năm, sử dụng ASP.NET Webform cho thấy có một số nhược điểm:
- ViewState (trạng thái hiển thị): Kĩ thuật lưu giữ trạng thái qua các yêu cầu
(Request) 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ó đi
qua đi lại với mỗi lần yêu cầu (Request), 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ọ Click một Button hoặc cố gắng di chuyển đến trang
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 18
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
kế tiếp. ASP.NET bị tình trạng này rất tồi tệ, 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 (chu kỳ sống của một trang Web): 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, có thể
uế
cực kì rắc rối và mỏng manh. Chỉ có một số ít lập trình viên thành công trong việc xử
lý hệ thống đối tượng điều khiển (Control) trong thời gian thực mà không bị lỗi
tế
H
ViewState hoặc hiểu được rằng một số trình xử lý sự kiện không được kích họat một
cách bí hiểm.
- Limited Control Over HTML (giới hạn kiểm soát HTML): Server Control tự
h
tạo ra nó như là mã HTML, nhưng không phải là mã HTML mà bạn muốn. Ngoài việc
in
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
cK
Css mà hệ thống các Server Control còn tạo ra các giá trị ID phức tạp.
- Untestable (kiểm chứng): 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 kiểm thử (Test)
họ
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.
Không quá ngạc nhiên, cấu trúc mà họ đã thiết kế hoàn toàn không thích hợp với việc
Đ
ại
kiểm thử (Test) tự động.
ASP.NET tiếp tục bổ sung thêm các tính năng. Phiên bản 2.0 thêm nhiều thành
phần (Component) chuẩn có thể giảm khá nhiều lệnh mà bạn cần phải tự viết. Ajax
ng
Release năm 2007 đã là phản hồi của Microsoft với phong trào Web 2.0/Ajax hồi đó,
hỗ trợ tương tác phía Client trong khi làm cho công việc của người lập trình đơn giản
ườ
hơn. Phiên bản 3.5 là một bản nâng cấp nhỏ hơn, thêm hỗ trợ cho các tính năng của
.NET 3.5 và các đối tượng điều khiển (Control) mới. Tính năng ASP.NET Dynamic
Tr
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 .
1.5.3. Sự ra đời của ASP.NET MVC
Vào tháng 11 năm 2007, ở hội thảo ALT.NET tại Austine - Texas, giám đốc
điều hành Scott Guthrie của Microsoft đã công bố và mô tả về nền tảng phát triển Web
MVC mới, xây dựng trên ASP.NET, rõ ràng được thiết kế như là một lời hồi đáp thẳng
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 19
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
vào các lời chỉ trích trước đây.
ASP.NET MVC cung cấp sự tách biệt rõ ràng giữa các thành phần bất chấp
việc sử dụng lại mô hình MVC mặc dù nó không có gì mới – MVC lần đầu được công
như là một kiến trúc cho các ứng dụng Web bởi vì các lý do sau:
uế
bố vào năm 1978 trong dự án Smalltalk của Xerox Parc. Nhưng ngày nay nó phổ biến
tế
H
- Người dùng tương tác với ứng dụng MVC tự nhiên sẽ theo một chu trình :
người dùng thực hiện một hành động, và để hồi đáp lại , ứng dụng thay đổi mô hình dữ
liệu của nó và chuyển một trang đã được cập nhật cho người dùng, và sau đó vòng
xoay lập lại. Điều này là thích hợp cho một ứng dụng Web phải luân chuyển hàng loạt
h
các lời yêu cầu cũng như hồi đáp.
in
- Những ứng dụng Web luôn cần phải kết hợp một số công nghệ (về cơ sở dữ
cK
liệu, HTML và mã xử lý), luôn chia thành nhiều lớp, và những mẫu đề ra đã nảy sinh
thành các khái niệm trong MVC. ASP.NET MVC thực thi một biến thể hiện đại trên
MVC mà đặc biệt thích hợp với các ứng dụng Web.
Tr
ườ
ng
Đ
ại
họ
1.5.4. Đặc tính trong ASP.NET MVC
Hình 1.5: Nền tảng ASP.NET MVC Framwork
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 20
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
Tách rõ ràng các mối liên quan, mở khả năng Test-TDD (Test Driven
Developer). 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
nào như NUnit, MBUnit, MSTest, v.v…
uế
Có khả năng mở rộng mọi thứ trong MVC được thiết kế cho phép dễ dàng thay
thế/tùy biến. Bao gồm một ánh xạ URL mạnh mẽ cho phép xây dựng ứng dụng với
tế
H
những URL sạch, các URL không cần CS phần mở.
ASP.NET MVC Framework cũng hỗ trợ những 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
h
dùng các tính năng của ASP.NET như lồng các trang Master, <%= %> Snippets, mô tả
in
Server Controls, Template, Data-Binding, Localization, v.v… ). Tuy nhiên sẽ không
cK
còn Postback và Interactive Back Server và thay vào đó là Interactive End User tới
một Controller Class (không còn Viewstate, Page Life Cycle).
ASP.NET MVC Framework hỗ trợ đầy đủ các tính năng bảo mật của ASP.NET
họ
như Forms / WindowsAuthenticate, URL Authorization, v.v…
1.5.5. Lợi ích của mô hình ASP.NET MVC
Đ
ại
ASP.NET MVC có nhiều lợi ích giúp cho người lập trình tiện sử dụng:
- Có tính mở rộng do có thể thay thế từng thành phần một cách dễ dàng.
ng
- Không sử dụng ViewState, điều này làm các nhà phát triển dễ dàng điều khiển
ứng dụng của mình.
ườ
- Hệ thống định tuyến mạnh mẽ.
- Hỗ trợ tốt hơn cho Test-Driven Development (TDD – mô hình phát triển kiểm
Tr
thử) cài đặt các kiểm thử đơn vị (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.
- Hỗ trợ kết hợp rất tốt giữa người lập trình và người thiết kế giao diện.
- Sử dụng các tính năng tốt nhất đã có của ASP.NET.
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 21
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
1.5.6. So sánh ASP.NET MVC với ASP.NET
Bạn đã được nghe qua về điểm yếu và giới hạn của ASP.NET Webform truyền
thống, và làm thế nào mà ASP.NET MVC vượt qua những vấn đề này. Điều đó không
có nghĩa là ASP.NET Webform đã chết mà chỉ là Microsoft muốn mọi người hiểu
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. Nói chung, việc bạn chọn lựa giữa hai mô hình còn tùy vào
tế
H
hoàn cảnh.
ASP.NET WebForm mang tới một trang Web mà giao diện có thể lưu giữ trạng
thái , và cuối cùng thêm vào một lớp trừu tượng tinh vi nằm trên HTTP và HTML, sử
h
dụng ViewState và Postback để tạo ra hiệu ứng của việc có trạng thái. Điều này thích
in
hợp với phong cách phát triển kéo và thả của WindowForm, tức là bạn đặt các đối
cK
tượng có giao diện lên trang và mã xử lý vào trình xử lý sự kiện của chúng.
MVC hòa vào bản chất không trạng thái của HTTP , làm việc chung với nó hơn
là chống lại. Điều này yêu cầu bạn phải hiểu thật sự cách làm việc của một ứng dụng
họ
Web, để đạt được điều đó, MVC cung cấp một cách tiếp cận đơn giản, mạnh mẽ và
hiện đại cho việc viết các ứng dụng Web với mã có trật tự mà dễ dàng để kiểm thử
đáng có.
Đ
ại
(Test) và bảo trì sau này, giải phóng những phức tạp khó chịu và các giới hạn không
Điều đặc biệt là ASP .NET MVC có mã nguồ n mở, không giống các nền
ng
tảng trước đó, bạn có thể dễ dàng tải mã nguồn gốc của ASP.NET MVC, thậm
chí bạn có thể sửa đổi và tạo ra phiên bản của riêng bạn.
ườ
Có những tình huống mà ASP.NET Webform khá tốt thậm chí còn tốt hơn
ASP.NET MVC. Ví dụ như các ứng dụng nhỏ, nội bộ mà trực tiếp kết nối thẳng vào
Tr
các bảng cơ sở dữ liệu hoặc dẫn người sử dụng thông qua các trình hướng dẫn tự động
(Wizard). Vì thế sẽ không cần phải lo lắng về băng thông do ViewState, không dính
dáng tới vấn đề tối ưu hóa hệ thống tìm kiếm, và không bị làm phiền về việc kiểm thử
(Test) và bảo trì lâu dài.
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 22
Khóa Luận Tốt Nghiệp
GVHD: Th.S Trần Thái Hòa
Nhưng mặt khác, nếu bạn viết một ứng dụng trên Internet, hoặc các ứng dụng
nội bộ lớn hơn, bạn sẽ hướng tới tốc độ Download nhanh và tương thích trình duyệt
chéo, được xây dựng với chất lượng cao hơn, mã kiến trúc tốt thích hợp cho việc Test
tế
H
uế
tự động, trong trường hợp đó ASP.NET MVC sẽ mang lại những ưu điểm quan trọng.
Bảng 1.2: So sánh giữa ASP .NET Webform và ASP.NET MVC
Kiến trúc
Kiến trúc mô hình
ASP.NET MVC
h
ASP.NET
Kiến trúc sử dụng việc phân
in
Tính năng
Controllers, Models, Views
Sử dụng cú pháp Webform, tất cả Các sự kiện được điều khiển
họ
Cú pháp
chia chương trình thành
cK
chương trình Webform>Business-> Database
chương trình các sự kiện và Control do Server bởi Controllers, các Control
Đ
ại
quản lý
Truy cập dữ
Tr
ườ
Debug
Phần lớn dùng LINQ to SQL
truy cập dữ liệu trong ứng dụng Class để tạo mô hình truy cập
ng
liệu
Sử dụng hầu hết các công nghệ
không do Server quản lý
đối tượng
Debug chương trình phải thực Debug có thể sử dụng các Unit
hiện tất cả bao gồm các lớp truy Test kiểm tra các phương thức
cập dữ liệu, sự hiển thị, điều
trong Controller
khiển các Controls
Tốc độ phân Tốc độ phân tải chậm trong khi Phân tải nhanh hơn do không
tải
trang có quá nhiều các Controls
phải quản lý ViewState để
vì ViewState quá lớn
quản lý các Control
SVTH: Cổ Kim Nguyên Phương – K43THKT
Trang 23