1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng framework hỗ trợ lập trình web

51 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 2,83 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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 : Công nghệ thông tin

Chuyên ngành : Kỹ thuật phần mềm

Mã số : 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

Trang 3

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

Trang 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

Trang 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

Trang 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

Trang 7

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

K Desktop Environment Structured Query Language Uniform Resource Locator Extensible HyperText Markup Language Input/Output

Personal Home Page

Trang 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

Trang 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

Trang 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

Trang 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

Trang 12

Đặ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à

Trang 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

Trang 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

Trang 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ề

Trang 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

Trang 17

- 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

Trang 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:

Trang 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

Trang 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

Trang 21

View: Thành phần của view được đặt trong thư mục application/views Trong thư mục views có 3 thành phần:

- Scripts: chứa các thư mục gồm các file ánh xạ đến các controller/action

để hiển thị trang giao diện tương ứng

- Helpers: trong thư mục này chứa các lớp mà chúng ta tạo ra và các lớp này sẽ được nạp tự động cho đối tượng Zend_View thông qua Zend_View_Helper để giúp chúng ta dễ dàng gọi đến hàm được xây dựng trong lớp này mà không cần phải khai báo trước vì nó được xem là một thành phần trong thư viện của Zend

- Filers: tương tự như helpers, thành phần filters chứa các lớp giúp cho chúng ta có thể thay đổi hoặc xóa những dữ liệu không mong muốn trong quá trình nhập liệu thông qua bộ lọc này

Controller: có nhiệm vụ điều hành trang web của bạn Một trang web có thể có nhiều module, một module có thể có nhiều controller, một controller gồm

có nhiều action Zend Framework sử dụng đối tượng Front Controller để quản lý các Request được gửi tới Web Server Và dựa trên Request đó nó sẽ gọi các lớp

xử lý Model và trả về kết quả trình bày với các lớp View.index.php là một file rất quan trọng trong website, nó có nhiệm vụ đón đầu tất cả các request vào, sau

đó khởi tạo controller và dispatch request đến controller tương ứng bootstrap.php có nhiệm vụ khởi tạo các đối tượng toàn cục sử dụng cho website, bẫy lỗi của ứng dụng và đưa về cho errorController xử lý

Cấu trúc thư mục của Zend Framework (Xem hình 2.2)

Hình 2.2 Cấu trúc thư mục của Zend Framework

Trang 22

Ý nghĩa và chức năng của các thành phần trong Zend Framework (6):

- Thư mục Config: là nơi chứa những cấu hình của toàn bộ dự án đang

được xây dựng; nó gồm tập tin cấu hình application.config.php nơi khai báo các

module sẽ được sử dụng, các thiết lập cấu hình cho toàn bộ dự án… và một thư

mục autoload là những tập tin cấu hình tự động được load vào dự án có đuôi mở

rộng (*.local.php hoặc *.global.php) Những tập tin cấu hình có đuôi mở rộng là (*.local.php) sẽ bị bỏ qua khi các bạn commit dự án lên Git, nên những thông tin nhạy cảm như tài khoản kết nối database cũng thường được đặt vào trong các tập tin này

- Thư mục Data: thư mục chứa những dữ liệu được cached từ database, hoặc cache những toàn bộ cấu hình của dự án… Chúng ta lưu trữ các tập tin dữ liệu trong thư mục này để dễ dàng quản lý và xử lý

- Thư mục Module: nơi chứa những module mở rộng, bạn có thể xây dựng những module mới dành riêng cho dự án của bạn giúp bạn xây dựng dự án một cách nhanh chóng và hiệu quả nhất

- Thư mục public: là nơi những tập tin như css, js, font, hình ảnh,… để

hỗ trợ cho việc hiển thị website trên trình duyệt, nó chứa những tài nguyên công khai và dễ dàng truy nhập

- Thư mục vendor: nơi chứa bộ thư viện Zend Framework 2 và những module mở rộng khác Bạn có thể đặt module mở rộng ở cả trong 2 thư

mực module hoặc vendor

PHP Framework thử nghiệm được chúng tôi xây dựng và phát triển, có nhiều ưu điểm khác so với các PHP framework hiện nay:

- Tạo ứng dụng web theo mô hình chuẩn Model – View – Controller,

nhưng với nguyên tắc đặt tên của các thành phần View, Controller là View_ini,

Controller_ini Với giá trị biến ini được lấy từ yêu cầu người dùng (địa chỉ

URL), như vậy với việc triệu gọi lớp join_path nó sẽ thực hiện việc ghép các

thành phần Model – View – Control có liên quan lại với nhau Thành phần

Model được thừa kế từ lớp mysql (system/Database) chủ yếu tương tác với cơ sở

dữ liệu, thành phần Controller sử dụng lớp Model tương tác với cơ sở dữ liệu để thực hiện các thao tác xử lý yêu cầu người dùng, thành phần View tạo giao diện tương tác với người dùng sử dụng lớp Controller tương ứng để nhận kết quả của trang ứng dụng

- Có thể sử dụng ngay hàm trong thư viện (thư mục system\Lib) với các

lớp Registry (system\CoreAc) và autoload (system\Lib) mà không cần khai báo

Vì với lớp Registry Framework thử nghiệm sẽ tiến hành đăng ký với hệ thống,

Trang 23

và với lớp autoload nó sẽ tiến hành dò tìm trong thư viện và tự khai báo các lớp

để có thể sử dụng

- Trong thư viện Framework thử nghiệm xây dựng sẵn lớp ExportDataExcel, sử dụng để xuất báo cáo ra các file có định dạng khác (Ví dụ xls, tsv, csv) Các Framework khác nếu muốn có chức năng này thì phải cài thêm plugin, trừ những Framework chuyên về phần mềm tài chính và bán hàng trực tuyến

- Ngoài ra trong thư viện Framework thử nghiệm có xây dựng lớp

password_en_de quy định việc mã hóa và giải mã riêng, mặt khác cùng với hàm session được dùng để lưu các phiên làm việc, các máy khác nhau sẽ có phiên

làm việc khác nhau, Framework thử nghiệm cũng quy định việc bảo mật khác với các loại Framework khác Có thể dễ dàng phát triển thêm các lớp trong thư viện theo yêu cầu của người dùng, nhưng phải tuân theo nguyên tắc tên lớp phải trùng với tên file chứa nó, và phải được đặt trong thư mục system/Lib

Ngoài những thành phần khác so với PHP Framework phổ biến hiện nay, PHP Framework thử nghiệm được chúng tôi xây dựng cũng kế thừa những PHP Framework khác Ví dụ như một số hàm định nghĩa kiểu dữ liệu trong thư mục

helpers đã được PHP hỗ trợ rất tốt (như array, number, string, text,…)

Framework thử nghiệm là một PHP framework được viết ra nhằm mục đích tận dụng mọi ưu điểm của mô hình MVC trong việc xây dựng các ứng dụng web động bằng ngôn ngữ PHP Framework thử nghiệmgiúp các lập trình viên tạo nên các ứng dụng web có kiến trúc sáng sủa, dễ bảo trì và dễ mở rộng Bên cạnh đó, Framework thử nghiệm cho phép các nhà phát triển xây dựng một ứng dụng web nhanh hơn rất nhiều so với việc viết mã thuần túy bằng cách cung cấp một bộ thư viện đầy đủ cho các tác vụ thông thường, cũng như cung cấp một mô hình tương tác đơn giản và dễ hiểu cho việc kết nối tới những bộ thư viện đó

Các đặc điểm nổi bật của Framework thử nghiệm:

- Tính dễ sử dụng (với cả các lập trình viên chưa có nhiều kinh nghiệm)

- Kiến trúc MVC hiện đại: mô hình dữ liệu (Model), điều khiển ứng

dụng (Controller), chức năng hiển thị (View)

- Khả năng tổ chức ứng dụng thành các lớp Controller đa tầng, giúp ứng

dụng có tính module hóa

- Thư viện hỗ trợ caching

- Mềm dẻo trong việc định tuyến URL (URL Routing)

- Tích hợp một số lớp và thư viện hàm hỗ trợ thuận tiện cho người sử

dụng: gửi Email, hỗ trợ đính kèm, HTML/Text email, đa giao thức (sendmail,

Trang 24

SMTP, and Mail) – Email Class; đăng tải một file lên server – Upload Class; tương tác với máy chủ thông qua giao thức FTP-FTP Class; phân trang tự động – Pagination Class; tạo ảnh Captcha - một loại kiểm thử dạng hỏi đáp được dùng trong máy tính để xác định xem người dùng có phải là con người hay không - Captcha Class; xuất dữ liệu ra định dạng khác (Excel, tsv hay csv) – ExportData Class; lớp quy định việc bảo mật - Password_en_de Class (lớp này bao gồm 2 hàm xử lý việc mã hóa encode($str) và hàm xử lý việc giải mã decode($str)); đặc biệt hệ thống sẽ tự động add theo cấu trúc tên lớp và file trùng nhau và nằm trong thư mục Lib nếu người dùng sử dụng mà không khai báo; một lượng lớn các hàm hỗ trợ (trong thư mục System/helpers)

Yêu cầu khi sử dụng Framework thử nghiệm: Để hệ thống vận hành được, yêu cầu tối thiểu sau cần được đáp ứng:

- Web server: Apache, Nginx, Lighttpd

2.2 Kiến trúc của Framework thử nghiệm

2.2.1 Tổng quát về hệ thống thư mục trong Framework thử nghiệm

Cấu trúc về hệ thống thư mục và tệp tin trong Framework thử nghiệm (Xem hình 2.3) Trong đó:

Application

Nơi lưu trữ ứng dụng của bạn Chia làm 3 thư mục con:

- Controller: chứa các lớp Controller của ứng dụng

- Model: chứa các lớp Model của ứng dụng

- View: chứa các lớp View của ứng dụng

Helpers Nơi lưu trữ các hàm hỗ trợ lập trình tối ưu

Lib Chứa các lớp thư viện hỗ trợ xử lý các vấn đề nghiệp vụ Core_Ac Chứa các lớp và hàm cốt lõi của Framework thử nghiệm

Database Chứa các lớp xử lý truy xuất tới các hệ quản trị cơ sử dữ

liệu MySQL Bảng 1.1 Vai trò hệ thống thư mục trong Framework thử nghiệm

Trang 25

Hình 2.3 Cấu trúc hệ thống thư mục Framework thử nghiệm

Có thể thấy Framework thử nghiệm được xây dựng hỗ trợ cho các lập trình viên viết các ứng dụng web quản lý Ví dụ có thể thấy Framework thử nghiệm hỗ trợ chức năng xuất excel từ các bảng biểu báo cáo với lớp ExportDataExcel trong thư viện Lib Hay Framework thử nghiệm đưa ra những quy định riêng về vấn đề bảo mật, nên việc bảo mật hệ thống của Framework thử nghiệm cũng khác so với các Framework khác hiện nay Framework thử nghiệm sẽ sử dụng hàm Session để lưu lại các phiên làm việc, và với các máy khác nhau nó cũng sẽ có các phiên làm việc khác nhau

Ngoài ra trong Framework thử nghiệm xây dựng hàm autoload (System/Lib/autoload.php), có thể tự động add các lớp và hàm theo cấu trúc tên lớp và file trùng nhau nằm trong thư mục Lib Như vậy khiến cho người dùng có thể phát triển thêm các plugin theo nhu cầu của họ

Ngày đăng: 16/03/2021, 12:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w