Đăng ký Đăng nhập
Trang chủ Xây dựng framework hỗ trợ lập trình Web Luận văn ThS. Công nghệ thông tin...

Tài liệu Xây dựng framework hỗ trợ lập trình Web Luận văn ThS. Công nghệ thông tin

.PDF
51
324
50

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG HẢI AN XÂY DỰNG FRAMEWORK HỖ TRỢ LẬP TRÌNH WEB LUẬN VĂN THẠC SĨ NGÀNH: CÔNG NGHỆ THÔNG TIN Hà Nội – 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG HẢI AN XÂY DỰNG FRAMEWORK HỖ TRỢ LẬP TRÌNH WEB Ngành Chuyên ngành Mã số : Công nghệ thông tin : Kỹ thuật phần mềm : 60480103 LUẬN VĂN THẠC SĨ NGÀNH: CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. TRƢƠNG NINH THUẬN Hà Nội - 2015 3 LỜI CẢM ƠN Trước hết, tôi xin gửi lời biết ơn sâu sắc đến người thầy PGS.TS. Trương Ninh Thuận, thầy đã dành rất nhiều thời gian, tâm huyết hướng dẫn nghiên cứu và giúp tôi hoàn thành tốt luận văn tốt nghiệp này. Thầy đã có những hướng mở rất hay và những định hướng nghiên cứu thiết thực, bổ ích, đồng thời tạo điều kiện thuận lợi nhất cho tôi nghiên cứu. Tôi cũng xin được bày tỏ lòng biết ơn tới các thầy cô trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã tham gia giảng dạy và chia sẻ những kinh nghiệm quý báu cho tập thể học viên trong khóa nói chung và cá nhân tôi nói riêng. Tôi xin cảm ơn tới các thầy và các anh chị đã thường xuyên giúp đỡ, trao đổi, góp ý về những vấn đề khoa học liên quan tới luận văn. Trên tất cả, tôi xin gửi lời biết ơn tới bố mẹ, gia đình người thân. Bố mẹ đã phải làm việc vất vả tạo cơ hội và điều kiện thuận nhất giúp tôi toàn tâm toàn ý thực hiện luận văn và chọn con đường đi của mình. Một lần nữa, tôi xin chân thành cảm ơn! Hà Nội, tháng 6 năm 2015 Học viên Đặng Hải An 4 LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình của riêng tôi. Các số liệu, kết quả nêu trong Luận văn là vô cùng trung thực, và chưa ai công bố trong bất kỳ công trình nào khác. Tôi xin cam đoan các thông tin trích dẫn trong Luận văn đã được chỉ rõ nguồn gốc. Học viên thực hiện Luận văn ĐẶNG HẢI AN 5 MỤC LỤC LỜI CẢM ƠN ...................................................................................................... 2 LỜI CAM ĐOAN ................................................................................................ 3 MỤC LỤC ............................................................................................................ 4 Danh mục các ký hiệu và chữ viết tắt ................................................................ 6 Danh mục các bảng ............................................................................................. 7 Danh mục hình vẽ, đồ thị .................................................................................... 8 MỞ ĐẦU ............................................................................................................ 10 CHƢƠNG 1. TỔNG QUAN VỀ NỀN TẢNG HỖ TRỢ LẬP TRÌNH ỨNG DỤNG WEB (WEB APPLICATION FRAMEWORK)................................ 12 1.1. Framework ................................................................................................ 12 1.2. Web Application Framework ................................................................... 12 1.3. PHP Framework ....................................................................................... 14 1.4. Mô hình Model - View - Controller (MVC) ............................................ 14 1.4.1. Lịch sử mô hình MVC ........................................................................ 14 1.4.2. Khái niệm mô hình MVC ................................................................... 15 1.4.3. Các thành phần trong Web Framework ............................................ 16 1.4.3.1. Model .......................................................................................... 16 1.4.3.2. View ............................................................................................ 17 1.4.3.3. Controller .................................................................................... 18 CHƢƠNG 2. XÂY DỰNG THỬ NGHIỆM FRAMEWORK BẰNG NGÔN NGỮ PHP ........................................................................................................... 20 2.1. Tổng quan về một PHP Framework ......................................................... 20 2.2. Kiến trúc của Framework thử nghiệm ...................................................... 24 2.2.1. Tổng quát về hệ thống thư mục trong Framework thử nghiệm ......... 24 2.2.2. Các thành phần trong Framework thử nghiệm ................................. 26 2.2.2.1. Quy trình xử lý yêu cầu............................................................... 26 2.2.2.2. Các thành phần ............................................................................ 26 2.2.2.3. Các khái niệm khi sử dụng framework thử nghiệm.................... 28 2.3. Hệ thống các lớp thư viện và hàm hỗ trợ trong Framework thử nghiệm . 34 2.3.1. Các lớp thư viện ................................................................................. 34 2.3.1.1. Email (System/Lib/Email.php) ................................................... 34 2.3.1.2. Database library (system/Database/mysql.php).......................... 35 2.3.1.3. Pagination(System/Lib/Pagination.php) ..................................... 36 2.3.1.4. Session class (System/Lib/Session.php) ..................................... 36 2.3.1.5. Upload class (System/Lib/upload.php) ....................................... 36 2.3.1.6. ExportDataExcel class (System/Lib/ExportDataExcel.php) ...... 37 6 2.3.2. Các hàm hỗ trợ .................................................................................. 37 2.3.2.1. Array Helper ............................................................................... 37 2.3.2.2. Text Helper ................................................................................. 38 2.3.2.3. exporttoexcel helper .................................................................... 38 CHƢƠNG 3. XÂY DỰNG ỨNG DỤNG “QUẢN LÝ ĐĂNG KÝ SỬ DỤNG PHÒNG THỰC HÀNH MÁY TÍNH TRƢỜNG ĐẠI HỌC HẢI DƢƠNG” SỬ DỤNG FRAMEWORK THỬ NGHIỆM.................................................. 40 3.1. Giới thiệu về quy trình quản lý và sử dụng phòng thực hành. ................. 40 3.2 Phân tích nhu cầu....................................................................................... 40 3.3. Thiết kế hệ thống ...................................................................................... 41 3.3.1. Biểu đồ Use Case ............................................................................... 41 3.3.2. Biểu đồ chi tiết lớp ............................................................................. 43 3.4. Ứng dụng quản lý phòng thực hành ......................................................... 45 KẾT LUẬN ........................................................................................................ 49 TÀI LIỆU THAM KHẢO ................................................................................ 51 7 DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT STT 1 2 3 4 5 6 7 8 9 10 11 Từ viết tắt CSS HTTP MVC HTML UI KDE SQL URL XHTML I/O PHP Ý nghĩa Cascading Style Sheet HyperText Transfer Protocol Model View Controller HyperText Markup Language User Interface K Desktop Environment Structured Query Language Uniform Resource Locator Extensible HyperText Markup Language Input/Output Personal Home Page 8 DANH MỤC CÁC BẢNG Bảng 1.1. Vai trò hệ thống thư mục trong Framework thử nghiệm.................... 24 Bảng 3.1. Danh mục Lớp, phòng ban ................................................................. 43 Bảng 3.2. Danh mục phòng thực hành ................................................................ 44 Bảng 3.3. Danh mục máy/thiết bị trong phòng thực hành .................................. 44 Bảng 3.4. Đăng ký phòng thực hành ................................................................... 45 9 DANH MỤC HÌNH VẼ, ĐỒ THỊ Hình 1.1. Mô hình MVC ..................................................................................... 15 Hình 1.2. Biểu đồ tuần tự một chuỗi MVC đơn giản.......................................... 17 Hình 2.1. Mô hình Model – View – Controller trong Zend Framework ............ 20 Hình 2.2. Cấu trúc thư mục của Zend Framework.............................................. 21 Hình 2.3. Cấu trúc hệ thống thư mục Framework thử nghiệm ........................... 25 Hình 2.4. Quy trình xử lý một HTTP Request của Framework thử nghiệm ...... 26 Hình 3.1. Biểu đồ Use Case các tác nhân và mối quan hệ giữa các tác nhân ..... 41 Hình 3.2. Biểu đồ Use Case theo hướng chức năng của tác nhân Admin .......... 42 Hình 3.3. Biểu đồ Use Case theo hướng chức năng của tác nhân Giảng viên.... 42 Hình 3.4. Biểu đồ Use Case theo hướng chức năng của tác nhân Sinh viên ...... 42 Hình 3.5. Biểu đồ Use Case khi tích hợp hệ thống phụ ...................................... 43 Hình 3.6.Giao diện đăng nhập hệ thống.............................................................. 45 Hình 3.7. Giao diện khi đăng nhập thành công với quyền Admin ..................... 46 Hình 3.8. Giao diện cập nhật lớp học trong trường ............................................ 46 Hình 3.9. Giao diện cập nhật thiết bị trong phòng máy ...................................... 47 Hình 3.10. Giao diện cập nhật phòng thực hành trong trường ........................... 47 Hình 3.11. Giao diện đăng ký lịch thực hành phòng máy .................................. 48 Hình 3.12. Giao diện xem lịch thực hành phòng máy ........................................ 48 10 MỞ ĐẦU 1. Lý do chọn đề tài 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. Framework hỗ trợ lập trình làm cho sự phát triển của các ứng dụng trở nên trôi chảy hơn, bằng cách 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 framework giúp chúng ta thúc đẩy nhanh chóng quá trình phát triển ứng dụng, giúp tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và có thể tái sử dụng lại được các thành phần. Ngoài ra framework còn giúp những người mới bắt đầu có thể xây dựng các ứng dụng ổn định nhờ việc tương tác chính xác giữa các Database, mã và giao diện một cách riêng biệt. Điều này cho phép chúng ta có thể dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian viết các đoạn mã lặp lại trong một project. Vì vậy với mong muốn làm giảm thời gian phát triển một ứng dụng web, tôi đã chọn đề tài “Xây dựng framework hỗ trợ lập trình web” 2. Nội dung của đề tài, các vấn đề cần giải quyết Nghiên cứu cơ sở lý luận về nền tảng hỗ trợ lập trình ứng dụng web (Web application framework). Khái niệm, mục đích tạo ra Framework, và những đặc điểm chung của các Framework phổ biến hiện nay. Từ đó đưa ra kết luận thực tế về việc xây dựng một Framework. Tìm hiểu khái niệm và tính phổ biến của ứng dụng web, so sánh các ưu điểm và nhược điểm giữa web tĩnh và web động để đưa ra những ưu điểm vượt trội của web động. Rút ra khái niệm và đặc điểm của Web application Framework, Ngoài ra luận văn đưa ra ứng dụng của mô hình MVC, giới thiệu một số PHP Framework phổ biến hiện nay cũng sử dụng mô hình MVC như CakeFramework, Zend Framework, CodeIgniter hay Symfony. Xây dựng thử nghiệm một framework bằng ngôn ngữ PHP dựa trên mã nguồn mở. Trước khi giới thiệu về Framework thử nghiệm xây dựng được tác giả luận văn đưa ra Zend Framework, phân tích các chức năng và thành phần của nó. Dựa trên kiến thức thu được khi phân tích Zend Framework, tác giả xây dựng PHP Framework thử nghiệm, và đưa ra kiến trúc của Framework thử nghiệm, với hệ thống thư mục và các thành phần trong Framework thử nghiệm. 11 Ngoài ra luận văn cũng giới thiệu các lớp thư viện, và hàm hỗ trợ tự xây dựng được khi làm Framework thử nghiệm. Xây dựng ứng dụng Web “Quản lý đăng ký sử dụng phòng thực hành máy tính trường Đại học Hải Dương” dựa trên Framework thử nghiệm, chỉ ra phương thức vận hành của ứng dụng. Trước khi xây dựng ứng dụng, tác giả đã tìm hiểu về quy trình quản lý và sử dụng thực tế phòng thực hành máy tính trường Đại học Hải Dương. Từ đó đi phân tích các nhu cầu và xây dựng các chức năng chính trong ứng dụng Web “Quản lý đăng ký sử dụng phòng thực hành máy tính trường Đại học Hải Dương”. Luận văn cũng trình bày bản thiết kế hệ thống ứng dụng. Và tác giả viết ứng dụng với Framework thử nghiệm. Cuối cùng trong luận văn tác giả cũng mô tả về cách thức hoạt động của ứng dụng Web “Quản lý đăng ký sử dụng phòng thực hành máy tính trường Đại học Hải Dương”. 3. Bố cục luận văn Luận văn được thiết kế bao gồm 3 chương: Chƣơng 1. Tổng quan về nền tảng hỗ trợ lập trình Web (Web Application Framework) Chương này giới thiệu tổng quan về framework, ứng dụng web, so sánh web tĩnh và web động. Lợi ích khi sử dụng web application framework để xây dựng ứng dụng web, web động, các dịch vụ web…. Ngoài ra chương 1 còn giới thiệu về PHP Framework với ý tưởng làm việc chung của PHP Framework hiện nay qua mô hình kiến trúc MVC, và giới thiệu sơ qua về lịch sử và đặc điểm của một số PHP Framework hay được sử dụng nhất hiện nay. Chƣơng 2. Xây dựng Framework thử nghiệm bằng ngôn ngữ PHP Chương này giới thiệu tổng quan, các thành phần và chức năng của Framework, từ đó tự xây dựng một Framework khác, đó là Framework thử nghiệm. Chương 2 cũng cung cấp kiến trúc của Framework thử nghiệm, cách thức vận hành và các thư viện hỗ trợ của Framework thử nghiệm. Chƣơng 3. Xây dựng ứng dụng “Quản lý đăng ký sử dụng phòng thực hành máy tính trƣờng Đại học Hải Dƣơng” sử dụng Framework thử nghiệm Giới thiệu về quy trình quản lý và sử dụng phòng thực hành trường Đại học Hải Dương. Từ đó phân tích được nhu cầu của người dùng, và đưa ra các chức năng cho ứng dụng Web. Sau đó, chương 3 đưa ra bản thiết kế hệ thống với các biểu đồ Use Case và chi tiết lớp. Cuối cùng mô tả về ứng dụng xây dựng được thông qua hình ảnh một số giao diện chính. 12 CHƢƠNG 1. TỔNG QUAN VỀ NỀN TẢNG HỖ TRỢ LẬP TRÌNH ỨNG DỤNG WEB (WEB APPLICATION FRAMEWORK) 1.1. Framework Framework là một bộ mã nguồn được xây dựng, phát triển và đóng gói phân phối bởi các chuyên gia lập trình hoặc bởi các công ty lập trình. Framework được tạo ra nhằm giải quyết 2 vấn đề: Tổ chức thư viện và khái quát cấu trúc cho ứng dụng. Framework cung cấp một cấu trúc phát triển chuẩn để các nhà phát triển ứng dụng dựa vào đó xây dựng và phát triển các dự án; đi kèm theo nó là một kho thư viện gồm nhiều lớp/ hàm xử lý được đặt trong các packages hoặc namespace riêng. Các lớp trong một framework sẽ làm việc tốt nhất với cấu trúc chuẩn mà framework đó cung cấp. Đặc điểm chung của các Framework: - Framework đóng gói các thư viện: Trong Framework có chứa các thư viện hỗ trợ cho các nhà phát triển ứng dụng sử dụng. - Framework hoạt động chủ động: Bản thân Framework có thể tự đưa ra các quyết định gọi (hoặc bị gọi bởi) một cái gì đó, có thể là thư viện hoặc ứng dụng. - Framework đưa ra một phương pháp luận để viết ứng dụng và thư viện trên nó. Như vậy có thể nói, người lập trình ra Framework thực tế là viết ra một phần mềm ứng dụng khái quát, tạo ra một thư viện và một bộ gọi - tải - nạp ứng dụng. Người lập trình ứng dụng sẽ dựa vào ứng dụng khái quát để phát triển ứng dụng trên Framework. 1.2. Web Application Framework Ứng dụng Web là một chương trình ứng dụng có thể tiếp cận web thông qua mạng như Internet hoặc mạng nội bộ. Để thiết kế website có 2 phương thức chính để có thể thiết kế lên ứng dụng web đó là thiết kế web tĩnh và thiết kế web động: - Web tĩnh: là các website chỉ bao gồm các trang web tĩnh, nội dung ít thay đổi và người sử dụng không tương tác được với nó, muốn thay đổi nội dung của nó người ta phải thay đổi trong mã nguồn. Thiết kế web tĩnh người ta thường sử dụng ngôn ngữ HTML, và thường không có cơ sở dữ liệu đi kèm. Như vậy với web tĩnh ta có thể thấy nó có ưu điểm là thiết kế đẹp (vì có thể trình bày ý tưởng về đồ họa và mỹ thuật trên từng diện tích trang web), tốc độ truy cập nhanh (vì không mất thời gian truy cập cơ sở dữ liệu), chi phí đầu tư thấp (vì không mất phí cho việc lập trình web, thiết kế cơ sở dữ liệu và thuê chỗ cho cơ sở dữ liệu,…). Nhưng sử dụng web tĩnh gặp khó khăn ở chỗ: khó thay đổi và 13 cập nhật thông tin (muốn thay đổi phải biết ngôn ngữ html, sử dụng được chương trình thiết kế đồ họa và thiết kế web), thông tin không có tính linh hoạt và không thân thiện với người dùng (người dùng muốn tăng lượng thông tin thì website không đáp ứng được), và đặc biệt khó tích hợp, nâng cấp, mở rộng (muốn nâng cấp một website phải làm mới gần như toàn bộ website) - Web động: là website có cơ sở dữ liệu đi kèm và được hỗ trợ bởi các phần mềm phát triển web. Với web động, thông tin hiển thị được gọi ra từ một cơ sở dữ liệu khi người dùng truy vấn tới một trang web. Web động thường được phát triển bằng các ngôn ngữ lập trình tiên tiến như PHP, ASP, ASP.NET, Java, CGI, Perl, và sử dụng các cơ sở dữ liệu quan hệ mạnh như Access, MySQL, MS SQL, Oracle, DB2.Thông tin trên web động luôn được cập nhật trong một cơ sở dữ liệu thông qua các công cụ cập nhật của phần mềm quản trị web và người dùng Internet có thể xem những chỉnh sửa đó ngay lập tức. Tuy nhiên với web động thì chi phí đầu tư sẽ rất lớn. Trước đây, mỗi ứng dụng chạy với mô hình chủ - khách có chương trình riêng chạy trên máy khách phục vụ người sử dụng (ví dụ như giao diện người dùng) và phải được cài đặt trên từng máy cá nhân. Khi ứng dụng tại máy chủ được nâng cấp thì tất cả các máy khách cũng phải được nâng cấp theo. Ngược lại, ứng dụng web linh hoạt tạo ra một loạt các tài liệu Web ở định dạng chuẩn được hỗ trợ bởi những trình duyệt phổ biến như HTML/XHTML. Ngôn ngữ kịch bản phía người dùng ở dạng ngôn ngữ chuẩn như JavaScript thường được thêm vào để có thêm những yếu tố động trong giao diện người dùng. Nói chung, mỗi trang Web đơn lẻ được gửi tới người dùng như một tài liệu ổn định, nhưng thứ tự các trang có thể cung cấp cảm giác trực quan, khi những gì người dùng nhập vào sẽ được trả về thông qua thành phần mẫu Web được nhúng vào trong đánh dấu trang. Trong quá trình giao dịch đó, trình duyệt Web sẽ thông dịch và hiển thị trang, và hoạt động như một người dùng chung cho bất kỳ ứng dụng Web nào. Ứng dụng Web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một chương trình. Khả năng cập nhật và bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó. Ứng dụng Web được dùng để hiện thực Webmail, Bán hàng trực tuyến, Đấu giá trực tuyến, Diễn đàn thảo luận, Weblog, Hệ quản trị nội dung, Phần mềm quản lý nguồn nhân lực và nhiều chức năng khác. Web Application Framework là một Framework đượ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. 14 1.3. 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. PHP framework làm cho sự phát triển của những ứng dụng web viết bằng ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách 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 đỡ chúng ta thúc đẩy nhanh chóng quá trình phát triển ứng dụng, tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại mã cho lập trình viên. Ngoài ra PHP Framework còn giúp những người mới bắt đầu có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa các Database, mã (PHP) và giao diện (HTML) một cách riêng biệt. Điều này cho phép chúng ta dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian để viết các đoạn mã lặp lại trong một project. PHP là một ngôn ngữ script khá mạnh mẽ dùng để xây dựng website, và hiện nay nó cũng đang có rất nhiều framework tốt như: zend framework, symfony, yii framework, codeigniter… được rất nhiều nhà phát triển ưa thích và sử dụng. Các PHP Framework đều được xây dựng theo chuẩn mô hình Model View - Controller (MVC) và cung cấp rất nhiều lớp hỗ trợ xử lý về bảo mật, phân quyền, captcha, view helper, module manager, database, service… khi đó các lập trình viên sẽ xây dựng, phát triển website một cách dễ dàng và nhanh chóng. Ý tưởng chung đằng sau cách thức làm việc của một PHP framework được kể đến là Model - View - Controller (MVC). MVC là một mô hình (kiến trúc) trong lập trình, cho phép tách biệt các mã nghiệp vụ (business logic) và giao diện (UI) thành các phần riêng biệt, điều này đồng nghĩa với việc ta có thể chỉnh sửa chúng một cách riêng lẻ. 1.4. Mô hình Model - View - Controller (MVC) 1.4.1. Lịch sử mô hình MVC 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) vào những năm 70 của thế kỷ 20, 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 ở phòng thí nghiệm 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 15 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 (3): - Swing Components của Java - Document View Architecture trong Microsoft Visual C++ (VC++) - QT4 (KDE) - Apple’s Cocoa (Core Data) 1.4.2. Khái niệm mô hình MVC Mô hình MVC (Model-View-Controller) là một kiến trúc phần mềm, đây là mô hình tổ chức code một cách hợp lý và có hệ thống. Mô hình MVC tách biệt phần xử lý dữ liệu ra khỏi phần giao diện, cho phép phát triển, kiểm tra và làm việc theo dự án. Hình 1.1. Mô hình MVC Trong đó [3, 4]: - Model: Cách thức cung cấp dữ liệu và xử lý dữ liệu (đóng vai trò Phát triển). Các lớp thuộc thành phần Model thường thực hiện các tác vụ như truy vấn, thêm, xoá, cập nhật dữ liệu. Khi dữ liệu trong Model thay đổi, thành phần View sẽ được cập nhật lại. Nói đơn giản hơn, Model là lớp thao tác với cơ sở dữ liệu là chính. - View: là thành phần thể hiện dữ liệu trong Model thành các giao diện tương tác với người sử dụng (đóng vai trò thiết kế). Một mô hình có thể có nhiều View phụ thuộc vào các mục đích khác nhau. Nói đơn giản hơn, View là lớp hiển thị dữ liệu ra bên ngoài cho người dùng xem. - Controller: đóng vai trò trung gian giữa Model và View. Thông tin người dùng từ View được gửi cho Controller xử lý, sau đó Controller tương tác với Model để lấy dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu này về 16 cho View. Nói đơn giản hơn, Controller là lớp điều khiển, có chức năng điều khiển các hành vi, yêu cầu. Mô hình MVC thường được sử dụng trong các ứng dụng web, vì thành phần View (mã HTML/XHTML) được sinh ra từ các ngôn ngữ thiết kế website. Thành phần Controller sẽ nhận các dữ liệu GET/POST, xử lý những dữ liệu này, sau đó chuyển sang Model xử lý. Model sẽ trả dữ liệu về phía Controller, sau đó Controller sinh mã HTML/XHTML để thể hiện trên View. Cách thức làm việc của MVC: - Khi user tương tác với View bằng cách click vào button, user gửi yêu cầu đi. - Controller nhận và điều hướng chúng đến phương thức xử lý ở Model. - Cotroller nhận thông tin và thực thi yêu cầu - Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả và hiển thị lại cho người dùng [3, 4]. 1.4.3. Các thành phần trong Web Framework 1.4.3.1. Model Gồm 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ý nghiệp vụ. Vì vậy model có thể [2, 4]: - Đá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ụ; - Thực hiện việc xử lý dữ liệu theo một quy trình nghiệp vụ. Do có hai vai trò tương đối tách biệt cho nên 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ý về nguyên tắc 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 mà nó còn với file system, memory, networking I/O ... Model hoạt động như là một tầng dịch vụ có thể tái sử dụng các lớp Controller. 17 1.4.3.2. 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). View bao gồm 2 phần chính [2, 4]: - Template file: định nghĩa giao diện cho người dùng. Ví dụ như bố cụ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. Phần này có thể kiểm tra dữ liệu để có thể hiển thị dữ liệu 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à để tái sử dụng mã. 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 biệt 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 (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. Hình 1.2. Biểu đồ tuần tự một chuỗi MVC đơn giản 18 1.4.3.3. 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. Như vậy Controller đóng vai trò là trung tâm điều khiển, nhưng Model không biết Controller nào sẽ lựa chọn nó, nó bị động. Tương tự, View không biết Controller nào sẽ gọi nó ra và cung cấp cho nó dữ liệu gì, nó cũng bị động. Bằng cách đó, View và Model không hề biết nhau.Tùy theo cách thiết kế lớp mà chúng ta thường thấy Controller gồm [2, 4]: - Front Controller: Là một controller xử lý tất cả các yêu cầu người dùng cho website. Front 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 và PUT - 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. Đây chính là chức năng điều khiến luồng ứng dụng của Controller. Vì là nơi đón nhận dữ liệu đầu vào cho nên thường thì các thành phần xử lý form (ví dụ ActionForm trong Struts) sẽ thuộc về Controller. Controller cũng sẽ có chức năng xác nhận đơn giản nhằm thực hiện chức năng điều khiển luồng của mình. Controller 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 - 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. 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, kiểu trả về cần mang tính nhất quán. Mô hình Model - View - Controller được áp dụng chủ yếu trong các Web framework hiện nay. Các PHP framework phổ biến nhất có thể kể đến: 19 - 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. Mục đích của nó là cung cấp một framework cho người sử dụng php phát triển những ứng dụng web nhanh, mạnh mẽ, linh hoạt, và điều quan trọng là CakePHP là một OpenSource (miễn phí). Để sử dụng nó, yêu cầu người làm phải biết những kiến thức như: Cơ bản về PHP và HTML, kiến trúc Model - View - Controller, Lập trình hướng đối tượng. Với các hệ 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. Điểm nổi bật của CakePHP là được cộng đồng mạng tích cực chia sẻ, cấu trúc khung rất dễ hiểu và đặc biệt là Cake Bakerry là nơi các nhà phát triển bên thứ ba có thể thêm mã riêng của họ và chia sẻ với cộng đồng. CakePHP là khung framework không có sự ủng hộ của công ty, nhưng đó cũng có thể coi là một thuận lợi của nó vì như vậy nó được cộng đồng lựa chọn và phát triển nhiều hơn [9,10]. - CodeIgniter: một MVC framework viết bằng PHP4 (đã 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, dễ sử dụng và rất nhẹ nên nó có tốc độ rất nhanh. Đặc biệt là bạn có thể thêm phần mềm của bên thứ ba nào khác mà chạy vẫn không cảm thấy chậm đi. CodeIgniter được Rasmus Lerdorf - cha đẻ của ngôn ngữ PHP - đánh giá rất cao vì tính tinh giản về cấu trúc, đạt hiệu năng cao khi vận hành. Nó cung cấp các giải pháp đơn giản, và có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ, và cung cấp sẵn một hướng dẫn sử dụng cho người mới bắt đầu. PHP framework này rất phù hợp cho một người mới làm quen với framework [4]. - 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 [2, 6]. - Symfony: được ra đời nhằm mục đích giúp đỡ nâng cao hơn cho những lập trình viên muốn tạo ra các ứng dụng website doanh nghiệp. Đây là một PHP framework mã nguồn mở với đầy đủ các tính năng cần thiết, nhưng nó có vẻ chạy chậm hơn các framework khác [10]. Như vậy: PHP framework là một giải pháp có thể giúp cho các lập trình viên phát triển các kỹ năng như: giảm thiểu việc viết lại mã, tăng tốc quá trình phát triển ứng dụng, và chuẩn hóa mã lệnh khi xây dựng các ứng dụng web. Không chỉ giúp các bạn cải thiện tốc độ phát triển ứng dụng, nó còn giúp bạn giảm thiểu các lỗ hổng bảo mật một cách triệt để. PHP framework phù hợp cho cả những người mới làm quen hay những bạn đã có kiến thức vững về PHP. 20 CHƢƠNG 2. XÂY DỰNG THỬ NGHIỆM FRAMEWORK BẰNG NGÔN NGỮ PHP 2.1. Tổng quan về một PHP Framework Hầu hết các PHP framework đều có sẵn rất nhiều thành phần mở rộng (extensive), và cũng có rất nhiều framework khác nhau để lựa chọn. Ví dụ Zend Framework là một PHP framework được lập trình bằng ngôn ngữ PHP và dựa trên mô hình Model - View - Controller, giúp tách các thành phần xử lý ra một cách rõ ràng, giúp code dễ dàng được quản lý, chỉnh sửa và nâng cấp. Các đặc điểm của Zend Framework [1, 6]: - Tạo ứng dụng web theo mô hình chuẩn Model - View - Controller. - URL tiêu chuẩn, ngắn gọn. - Hỗ trợ phân quyền tới từng Action. - Có các thành phần thư viện hỗ trợ API của các nhà cung cấp như Yahoo, Google, Flick. - Có rất nhiều thư viện được hỗ trợ sẵn. - Được xây dựng trên nền tảng lập trình hướng đối tượng nên có thể thừa kế, nâng cấp ứng dụng một cách dễ dàng. - Dễ dàng phát triển thêm các ứng dụng nhúng, sử dụng các plugins. - Ta đi tìm hiểu cấu trúc và chức năng của các thành phần trong Zend Framework, trước khi phân tích PHP Framework thử nghiệm, để thấy được sự khác nhau giữa chúng. Mô hình Model - View - Controller trong Zend Framework (Xem hình 2.1) Hình 2.1. Mô hình Model – View – Controller trong Zend Framework Model: Thành phần model được xây dựng thành các lớp kế thừa từ lớp Zend_Db_Table hoặc Zend_Db_table_Abstract được đặt trong thư mục application/models của ứng dụng. Mỗi lớp sẽ đảm nhận việc kết nối và thao tác đến table trong cơ sở dữ liệu.
- Xem thêm -

Tài liệu liên quan