Khóa luận tốt nghiệp này trình bày một số hiểu biết cơ bản về các nền tảng hỗ trợ lập
trình ứng dụng web (Web application framework) và mô hình MVC (Model View
Controller) cũng như vai trò của các thành phần MVC trong Web framework. Qua đó giới
thiệu một framework tự xây dựng bằng ngôn ngữ PHP với các ưu điểm về cấu trúc và tốc
độ so với các PHP framework hiện nay. Framework được đặt tên là Hiphop framework.
Phần chính của khóa luận tập trung giải thích phương thức vận hành của ứng dụng được
xây dựng bằng Hiphop, bước đầu giúp các nhà phát triển nắm được cách thức xây dựng
ứng dụng trên Hiphop.
Phần cuối của khóa luận giới thiệu các thư viện, hàm tích hợp trong Hiphop hỗ trợ người
lập trình trong quá trình phát triển ứng dụng
46 trang |
Chia sẻ: nhungnt | Lượt xem: 2746 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng nền tảng hỗ trợ lập trình web dựa trên mô hình MVC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Xuân Thăng
XÂY DỰNG NỀN TẢNG HỖ TRỢ LẬP TRÌNH WEB
DỰA TRÊN
MÔ HÌNH MVC
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
HÀ NỘI - 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Xuân Thăng
XÂY DỰNG NỀN TẢNG HỖ TRỢ LẬP TRÌNH WEB
DỰA TRÊN
MÔ HÌNH MVC
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS.Trương Ninh Thuận
HÀ NỘI - 2010
LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn chân thành tới thầy giáo, Tiến sĩ Trương Ninh Thuận,
người đã hướng dẫn và chỉ bảo tận tình cho tôi trong suốt quá trình học tập cũng như thực
hiện khóa luận tốt nghiệp này.
Tôi cũng xin cảm ơn các thầy, cô giáo đã chỉ dạy trong suốt thời gian gian tôi học tập tại
trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội. Cảm ơn các bạn Hoàng Đình
Quang, Nguyễn Văn Vũ, Phan Trọng Khanh, Đàm Thanh Tùng, những người bạn tốt đã
giúp đỡ tôi về mặt kỹ thuật trong quá trình nghiên cứu, xây dựng sản phẩm được trình bày
trong khóa luận tốt nghiệp này.
Ngoài ra, tôi muốn gửi lời cám ơn tới bố mẹ, người thân trong gia đình - những người đã
hết sức ủng hộ, giúp đỡ và động viên tôi trong suốt quá trình học tập đã qua.
Cuối cùng, tôi xin gửi lời cám ơn chân thành và sâu sắc tới Ban Giám đốc công ty TNHH
ISDS đã tạo mọi điều kiện về cơ sở vật chất giúp tôi hoàn thành khóa luận này.
TÓM TẮT KHÓA LUẬN
Khóa luận tốt nghiệp này trình bày một số hiểu biết cơ bản về các nền tảng hỗ trợ lập
trình ứng dụng web (Web application framework) và mô hình MVC (Model View
Controller) cũng như vai trò của các thành phần MVC trong Web framework. Qua đó giới
thiệu một framework tự xây dựng bằng ngôn ngữ PHP với các ưu điểm về cấu trúc và tốc
độ so với các PHP framework hiện nay. Framework được đặt tên là Hiphop framework.
Phần chính của khóa luận tập trung giải thích phương thức vận hành của ứng dụng được
xây dựng bằng Hiphop, bước đầu giúp các nhà phát triển nắm được cách thức xây dựng
ứng dụng trên Hiphop.
Phần cuối của khóa luận giới thiệu các thư viện, hàm tích hợp trong Hiphop hỗ trợ người
lập trình trong quá trình phát triển ứng dụng
5
MỤC LỤC
CHƯƠNG 1: KHÁI NIỆM VỀ WEB APPLICATION FRAMEWORK VÀ MÔ HÌNH MVC.... 8
1.1 Web Application Framework là gì? ................................................................................... 8
1.2. PHP Framework ........................................................................................................... 8
1.3 MVC là gì?.................................................................................................................... 9
1.3.1. Lịch sử MVC............................................................................................................. 9
1.3.2. Vai trò của các thành phần M-V-C trong Web framework ....................................... 10
CHƯƠNG 2. GIỚI THIỆU FRAMEWORK ĐÃ XÂY DỰNG ................................................. 15
2.1. Tổng quan về framework đã xây dựng ............................................................................ 15
2.2. Kiến trúc của Hiphop framework.................................................................................... 18
2.2.1 Tổng quát về hệ thống thư mục trong Hiphop framework ......................................... 18
2.2.2 Các thành phần cốt lõi .............................................................................................. 19
CHƯƠNG 3. CÁC KHÁI NIỆM BAN ĐẦU KHI XÂY DỰNG ỨNG DỤNG WEB BẰNG
HIPHOP FRAMEWORK ......................................................................................................... 25
3.1. Hiphop URLs ............................................................................................................. 25
3.2. Các lớp Controller ...................................................................................................... 25
3.3. View - Template......................................................................................................... 27
3.4. Các lớp Model ............................................................................................................ 30
CHƯƠNG 4: HỆ THỐNG CÁC LỚP THƯ VIỆN VÀ HÀM HỖ TRỢ .................................... 32
4.1 Các lớp thư viện ............................................................................................................. 32
4.1.1. Email library............................................................................................................ 32
4.1.2. Database library....................................................................................................... 33
4.1.3. Phân trang với Pagination class................................................................................ 35
4.1.4. Quản lý Session PHP với session class .................................................................... 35
4.1.5. Tạo hình ảnh Captcha với Captcha class ................................................................. 35
4.1.6. Tải file lên server với Upload class...................................................................... 35
4.1.7. Tải file với giao thức FTP - FTP class................................................................. 35
4.2 Các Helper ..................................................................................................................... 38
4.2.1. Array Helper............................................................................................................ 38
4.2.2. Text Helper.............................................................................................................. 38
4.2.3. URL helper.............................................................................................................. 40
CHƯƠNG 5: ÁP DỤNG HIPHOP FRAMEWORK XÂY DỰNG TRANG BLOG CÁ NHÂN 41
KẾT LUẬN .............................................................................................................................. 45
6
DANH SÁCH CÁC HÌNH ẢNH
Hình 1 1: Mô hình MVC.............................................................................................9
Hình 1 2: Biểu đồ tuần tự một chuỗi MVC đơn giản....Error! Bookmark not defined.
Hình 2 1: Mô hình MVC được áp dụng trong Hiphop frameworkError! Bookmark not
defined.
Hình 2 2: Cấu trúc cây thư mục Hiphop framework .....Error! Bookmark not defined.
Hình 2 3: Quy trình xử lý một HTTP request - Hiphop frameworkError! Bookmark not
defined.
Hình 2 4: Mô phỏng cấu trúc các thành phần cốt lõi trong Hiphop framework....Error!
Bookmark not defined.
Hình 2 5: Lớp Registry ..............................................................................................20
Hình 2 6: Lớp Router.................................................................................................21
Hình 2 7: Lớp Output.................................................................................................21
Hình 2 8: Lớp Loader ................................................................................................21
Hình 2 9: Lớp Controller ...........................................................................................22
Hình 3 1: Ví dụ một URL Hiphop framework..............Error! Bookmark not defined.
Hình 3 2: Minh họa Sơ đồ phân cấp controller trang webError! Bookmark not defined.
Hình 3 3: blogview.php................................................Error! Bookmark not defined.
Hình 3.4: header_view.php ..........................................Error! Bookmark not defined.
Hình 5 1: Giao diện Blog ...........................................................................................41
7
LỜI MỞ ĐẦU
Trong những năm gần đây, các ứng dụng web lớn liên tục được tạo ra, đánh dấu những
bước phát triển nhảy vọt về công nghệ trong thế giới lập trình. Các nền tảng hộ trợ lập
trình cũng được xây dựng hàng loạt nhằm mục đích chính là cải thiện tốc độ thực thi và
nâng cao tính bảo mật cho các ứng dụng web. Các nền tảng hỗ trợ lập trình ứng dụng
(application framework) đều chứa đựng các kinh nghiệm của các nhà kiến trúc phần mềm
sau nhiều năm chiêm nghiệm trong thế giới lập trình.
Với nỗ lực làm giảm thời gian phát triển một ứng dụng web, bằng việc học hỏi và tiếp thu
những ưu điểm của các framework hiện nay, chúng tôi đã xây dựng được một nền tảng hỗ
trợ lập trình các ứng dụng web được viết bằng ngôn ngữ PHP. Khóa luận này trình bày
các khái niệm cần thiết trước khi bắt tay xây dựng một nền tảng lập trình, đồng thời giới
thiệu nền tảng mà chúng tôi đã xây dựng thành công.
8
CHƯƠNG 1: KHÁI NIỆM VỀ WEB APPLICATION
FRAMEWORK VÀ MÔ HÌNH MVC
1.1 Web Application Framework là gì?
“Web application framework” là một nền tảng phần mềm được thiết kế để hỗ trợ việc
phát triển các website động, các ứng dụng web và các dịch vụ web. Mục đích của
Framework là nhắm tới việc giảm bớt các hao phí liên quan tới các hoạt động thực hiện
trong quá trình phát triển web. Ví dụ, nhiều framework cung cấp thư viện để truy cập cơ
sở dữ liệu, khung khuôn mẫu và quản lý phiên làm việc, thêm vào đó làm tăng khả năng
tái sử dụng mã.
1.2. PHP Framework
PHP framework là web framework được viết bằng PHP - một ngôn ngữ lập trình nguồn
mở phổ biến nhất hiện nay. Nội dung khóa luận đề cập tới PHP Framework là do PHP là
ngôn ngữ rất linh hoạt, được các lập trình viên ưa chuộng sử dụng khi tiến hành xây dựng
các ứng dụng web cỡ lớn (Facebook, Flickr, Twitter…). Bên cạnh đó PHP có một cộng
đồng sử dụng lớn, luôn biết hỗ trợ lần nhau. Nhưng chính tính linh hoạt, dễ học, dễ sử
dụng của PHP đôi khi làm các lập trình viên chủ quan, thường chỉ chú ý tới việc ứng dụng
của mình chạy được hay không mà không quan tâm tới tính sáng sủa trong việc tổ chức
mã phục vụ cho mục đích bảo trì dài lâu. Chưa kể tới việc vấn đề an toàn, bảo mật cho
ứng dụng web ngày càng bị xem nhẹ. Đây là lúc họ cần tới một PHP framework.
Sự có mặt của PHP framework làm cho việc phát triển ứng dụng web trở nên trôi chảy
hơn bằng việc cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó. Hay nói
cách khác, PHP Framework giúp đỡ các lập trình viên thúc đẩy nhanh chóng quá trình
phát triển ứng dụng, tiết kiệm được phần lớn thời gian, tăng sự ổn định cho ứng dụng, và
đặc biệt là giảm thiểu số lần phải viết lại mã. Không chỉ thể, các framework còn đặc biệt
hữu ích với những lập trình viên ít kinh nghiệm, giúp họ có thể xây dựng các ứng dụng
mang tính chuẩn hóa hơn nhờ việc tương tác chính xác giữa việc xử lý cơ sở dữ liệu
(database), mã PHP và giao diện (HTML) một cách riêng biệt.
Các PHP framework hiện nay hầu hết đều cung cấp sẵn các module nền tảng cần thiết và
thư viện mã lệnh chuẩn (kết nối database, quản lý session, template engine…) để xây
dựng ứng dụng.
9
Ý tưởng chung đằng sau kiến trúc của một PHP Framework được kể đến là mô hình
MVC. Một mô hình không mới nhưng mang lại nhiều cảm hứng cho các chuyên gia lập
trình trong nhiều năm qua. Chúng ta sẽ cùng tìm hiểu các khái niệm và đặc điểm của mô
hình M-V-C.
1.3 MVC là gì?
MVC là chữ viết tắt của Model-View-Controller, một mẫu kiến trúc (architectural
pattern) được tạo ra nhằm giải quyết các vấn đề phát sinh cũng như các giải pháp tổ chức
mã trong quá trình phát triển phần mềm. Khi sử dụng đúng cách, mẫu MVC giúp cho
người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một
cách rõ ràng hơn. Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo
trì vì các nguyên tắc xử lý nghiệp vụ và giao diện ít có liên quan với nhau.
1.3.1. Lịch sử MVC
Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox 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 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 Model – View – Controller). Kiến trúc MVC đã được ứng
dụng để xây dựng rất nhiều 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 tượng SmallTalk (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). Ngày nay, trong nhiều các nền tảng lập trình
chúng ta thấy sự có mặt của mô hình MVC, có thể kể đến:
+ Swing Components của Java
+ Document View Architecture trong Microsoft Visual C++ (VC++)
+ QT4(KDE)
+ Apple’s Cocoa (Core Data)
10
1.3.2. Vai trò của các thành phần M-V-C trong Web framework
Hình 1. 0.1 Mô hình MVC
a. C - Controller
Controller là các lớp điều khiển luồng ứng dụng, tiếp nhận yêu cầu người dùng thông qua
HTTP header, sau đó chuyển tiếp nó đến các lớp phụ trách trực tiếp xử lý yêu cầu. Tùy
theo cách thiết kế lớp mà chúng ta thường thấy Controller gồm:
+ Front Controller. Là một controller xử lý tất cả các yêu cầu người dùng cho website.
Fron Controller có nhiệm vụ hợp nhất tất cả các xử lý yêu cầu vào một kênh yêu cầu
thông qua một đối tượng.
+ Dispatcher: Lớp điều phối hướng các điều khiển đi mức cao hơn
+ Request: xử lý một phần dữ liệu đầu vào ở mức GET, POST
+ Session: xử lý một phần dữ liệu đầu vào ở mức SESSION
Tùy theo dữ liệu đầu vào, Controller sẽ thực hiện các phép lọc (với dịch vụ lấy từ Model),
các tính toán lựa chọn (Action Mapping) dựa trên kiến trúc và cấu hình nhằm xác định
thành phần lớp chính sẽ thực hiện yêu cầu của người dùng. Hiểu một cách đơn giản,
Controller là thành phần trung gian giữa View và Model. Nó nhận dữ liệu nhập vào qua
View, sau đó gọi Model tương ứng rồi lấy kết quả trả về từ Model này. Tiếp theo, một
View thích hợp sẽ được lựa chọn. Controller sẽ chuyển tiếp dữ liệu vào view để nó xử lý.
Một số hoạt động thường thấy của Controller:
Tạo form, gửi tin nhắn đến form để yêu cầu kiểm tra dữ liệu
11
Tạo các dịch vụ liên quan đến nghiệp vụ ứng dụng, yêu cầu các lớp dịch vụ tương
tác với nguồn dữ liệu để trả về hay thay đổi trạng thái dữ liệu: thực hiện các thao tác
chuyển đổi dữ liệu, kiểm tra quyền truy cập trên một hoạt động cụ thể, tương tác
với database, tương tác với các web services.
Tạo đối tượng view, gán các nguồn dữ liệu lấy được từ đối tượng dịch vụ vào cho
view.
b. M - Model
Model là các lớp cung cấp dữ liệu, dịch vụ liên quan đến dữ liệu và các vấn đề xử lý logic
nghiệp vụ. Model có thể:
Đánh giá tính hợp lệ của dữ liệu.
Ví dụ kiểm tra dữ liệu vào có đúng với nguyên tắc của hệ thống không
Chuyển đổi dữ liệu. Ví dụ chuyển đổi định dạng file, chuyển đổi tỉ giá, chuyển đổi
ngôn ngữ…
Đưa ra quyết định về nghiệp vụ. Ví dụ đưa ra các dữ liệu, lời khuyên tư vấn đầu tư
dựa trên dữ liệu đầu vào của người dùng và các dữ liệu đang có
Thực hiện việc xử lý dữ liệu theo một quy trình
Do có hai vai trò tương đối tách biệt cho nên một Model thường được tách thành các lớp
có các vùng xử lý khác biệt:
Vùng xử lý Logic nghiệp vụ: thường là xử lý rule hay policy của nghiệp vụ cũng
như quy trình nghiệp vụ.
Vùng xử lý dữ liệu: Cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu thành các
dạng khác nhau theo yêu cầu
Trong các tình huống đơn giản, Model chỉ làm vài thao tác đơn giản như lấy dữ liệu từ
database. Trong các tình huống phức tạp, việc xử lý có thể là tổ hợp của hàng trăm lớp
diễn ra trên một hoặc vài máy chủ (server) hoặc thậm chí dữ liệu hay quyết định được đưa
ra từ Model lại là tổng hợp kết quả từ một vài trung tâm dữ liệu nằm rải rác trên vài lục
địa. Do vậy trong Model không chỉ có các thao tác trên database và có còn là file system,
memory, networking I/O ...
Model hoạt động như là một tầng dịch vụ nhằm có thể tái sử dụng giữa các Controller.
12
Khi Controller gọi Model thông qua các giao diện lập trình (API) của Model, nó cần biết
một số ứng xử chung của Model. Ví dụ:
Cách Model đó gửi tín hiệu về quá trình nó xử lý yêu cầu. Có hay không có lỗi
ngoại lệ, kiểu của lỗi ngoại lệ, lỗi trong trường hợp nào.
Kiểu trả veef cần mang tính nhất quán
c. V - View
View là các lớp định nghĩa cách thức trình bày dữ liệu (không cập nhật dữ liệu). Trong
các web framework, View gồm hai phần chính:
Template file: định nghĩa cấu trúc và cách thức trình bày dữ liệu cho người dùng.
Ví dụ như bố cụ, màu sắc, khung nhìn ...
Phần Logic: xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có thể
bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang một
sạng dữ liệu trung gian để có thể hiển thị với cấu trúc template đang có..., kiểm tra
trạng thái và đặc tính của dữ liệu để lựa chọn một cấu trúc hiện thị phù hợp.
Bản thân View cũng là một tổ hợp của nhiều lớp. Và nó cũng có thể có View con để giảm
tải trên một số lớp chính và để sử dụng lại mã. Và do vậy tính logic của View có thể là
logic của một cây phân cấp.
Trong mô hình truyền thống, View có trách nhiệm chuyển đổi dữ liệu hay trạng thái của
Model thành cấu trúc trực quan. Do vậy dữ liệu của Model cần được định nghĩa một cách
hợp lý. Sự tách biệt của hai thành phần này sẽ giúp cho người lập trình phân định được
một biên giới rõ ràng giữa cách thức lưu trữ/lấy dữ liệu và cách trình bày dữ liệu. Do vậy
tính phức tạp của quy trình lấy dữ liệu, xử lý dữ liệu cũng như (sự thay đổi của chúng
theo thời gian) trước khi trả về sẽ không làm ảnh hưởng đến việc trình bày dữ liệu. Rõ
ràng sự khác biệt về công nghệ lấy dữ liệu và công nghệ sinh trang không gây ảnh hưởng
đến ứng dụng. Điều này khá quan trọng trong việc tích hợp các ứng dụng. Ngoài ra, cách
làm này thực sự đảm bảo việc tách biệt vai trò của người thiết kế giao diện với vai trò của
lập trình viên thiên về dữ liệu. Như vậy khi làm việc theo nhóm, người quản trị dự án có
thể tổ chức nhóm phát triển thành các nhóm kĩ năng và phát triển ứng dụng song song với
nhau.
Các công nghệ thường được sử dụng ở View là HTML, CSS và JavaScript.
13
Hình 1. 0.2 Biểu đồ tuần tự một chuỗi MVC đơn giản
Tóm lại, MVC chia trách nhiệm công việc thành ba phần riêng rẽ:
Phát triển (development): Các nhà phát triển làm việc với model. Đặc trưng của phần
này là tận dụng một cách triệt để kiến thức, kỹ năng của các lập trình viên liên quan
tới thuật toán xử lý dữ liệu, quản trị cơ sở dữ liệu...
Thiết kế (design): Các nhà thiết kế làm việc trực tiếp với lớp View, chịu trách nhiệm
tạo ra "cảm quan" cho ứng dụng. Họ cần có kinh nghiệm làm việc với HTML, CSS,
JavaScript và Graphic Design.
Hợp nhất (intergration): phần này tồn tại trong lớp Controller. Mục đích chính là gắn
kết developer và designer với nhau. Người hợp nhất không cần có nhiều kinh nghiệm
làm việc với dữ liệu như lập trình viên nhưng cần nắm rõ cách tổ chức của một ứng
dụng.
Mô hình MVC được áp dụng rất nhiều trong các Web framework hiện nay. Các PHP
framework phổ biến nhất:
Zend framework: là sản phẩm của Zend – công ty “bảo trợ” cho PHP. Với các
tính năng mạnh mẽ, Zend framework thường được sử dụng cho các công ty lớn, và
bạn cần phải có lượng kiến thức khá sâu rộng về PHP để có thể sử dụng được Zend
framework.
CakePHP: là một lựa chọn tốt cho những lập trình viên có kiến thức nâng cao về
PHP. Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails (một framework
dành cho các nhà phát triển các ứng dụng web bằn ngôn ngữ Rail). Với các hệ
14
thống hỗ trợ, tính đơn giản và mỗi trường mở cao đã giúp cho CakePHP trở thành
một trong những framework phổ biến nhất hiện nay.
CodeIgniter: một MVC framework viết bằng PHP4 (gần đây đã tương thích hoàn
toàn với PHP 5.3.0 trong phiên bản 1.7.2). Được biết đến như một framework dễ
hiểu và dễ sử dụng. CodeIgniter được Rasmus Lerdorf – cha đẻ của ngôn ngữ PHP
– đánh giá rất cao vì tính t