Vietnam J. Agri. Sci. 2019, Vol. 17, No. 8: 655-665 Tạp chí Khoa học Nông nghiệp Việt Nam 2019, 17(8): 655-665<br />
www.vnua.edu.vn<br />
<br />
<br />
<br />
ĐÁNH GIÁ NHỮNG FRAMEWORK PHP TỐT NHẤT CHO PHÁT TRIỂN WEB HIỆN ĐẠI<br />
VÀ MỘT SỐ ỨNG DỤNG TẠI HỌC VIỆN NÔNG NGHIỆP VIỆT NAM<br />
Phạm Quang Dũng1*, Nguyễn Thị Thảo1, Trần Thị Giang2<br />
1<br />
Khoa Công nghệ thông tin, Học viện Nông nghiệp Việt Nam<br />
2<br />
Khoa Thú y, Học viện Nông nghiệp Việt Nam<br />
*<br />
Tác giả liên hệ: pqdung@vnua.edu.vn<br />
<br />
Ngày nhận bài: 26.02.2018 Ngày chấp nhận đăng: 29.10.2019<br />
<br />
TÓM TẮT<br />
<br />
Từ khi ngôn ngữ lập trình phía server PHP ra đời, nó luôn được cộng đồng người phát triển ứng dụng web ưa<br />
chuộng bởi tính hiệu quả, dễ sử dụng. Hiện nay, PHP vẫn đang là ngôn ngữ lập trình web phổ biến nhất trên thế<br />
giới. Sự xuất hiện của các framework PHP cung cấp cho những người phát triển web sự tiện dụng, hiệu quả cũng<br />
như tiết kiệm thời gian và công sức khi phát triển những trang web chuyên nghiệp nhờ các tính năng đã tích hợp<br />
sẵn. Nghiên cứu tổng quan của chúng tôi tổng hợp những xu hướng sử dụng công nghệ lập trình web, đánh giá ưu<br />
điểm, nhược điểm của 6 framework PHP tốt nhất được thống kê từ những tổ chức, cá nhân uy tín và đáng tin cậy.<br />
Từ đó, chúng tôi đưa ra những gợi ý cho những người phát triển web có thể lựa chọn một framework thích hợp nhất<br />
với khả năng của mình cũng như với yêu cầu của ứng dụng web cần phát triển. Phần cuối, bài báo giới thiệu hai ứng<br />
dụng web của chúng tôi là những trường hợp nghiên cứu riêng.<br />
Từ khóa: PHP framework, phát triển web.<br />
<br />
<br />
Assessment of the Best PHP Frameworks for Modern Web Development<br />
and Some Applications at VNUA<br />
<br />
ABSTRACT<br />
<br />
Since the PHP server-side programming language was born, it has always been popular with developers for<br />
web applications. Until now, PHP has been still the most popular web programming language in the world. The<br />
emergence of PHP frameworks has provided web developers with the convenience and efficiency to save time, effort<br />
to develop professional web sites based-on built-in features. Our review summarizes the trends of using web<br />
programming technology, assesses the advantages and disadvantages of the best six PHP frameworks which have<br />
been pointed out by reputable, trusted organizations and individuals. From those, we give suggestions for web<br />
developers to choose the framework that best suits their capabilities as well as the requirements of the web<br />
application. Finally, the article introduces the two web apps as our case studies.<br />
Keywords: PHP framework, web development.<br />
<br />
<br />
1. ĐẶT VẤN ĐỀ só Photobucket, Fotolia, Flickr, Istock,<br />
SourceForge, nhĂng hû quân trĀ nội dung (CMS)<br />
Theo tổ chĀc chuyên nghiên cĀu công nghû<br />
và blog phổ biøn nhçt thø giĆi nhþ WordPress,<br />
đþợc các website sā dýng là BuiltWith cûa<br />
Tumblr đ÷u đþợc xây dăng trên PHP<br />
Australia, PHP hiûn vén là ngôn ngĂ lêp trình<br />
web phía server phổ biøn nhçt thø giĆi. Trong 1 (Simplified-Techy, 2018). Cùng vĆi să phát triùn<br />
triûu website cĂ lþợng truy cêp lĆn nhçt thì có cûa PHP, các framework hỗ trợ cüng không<br />
đøn 41,57% website sā dýng công nghû PHP ngÿng câi tiøn, cänh tranh đù đem đøn cho<br />
(Hình 1). NhĂng website lĆn và nổi tiøng toàn nhĂng ngþąi lêp trình să hỗ trợ tốt nhçt và cho<br />
thø giĆi nhþ các mäng xã hội Facebook, ngþąi dùng web să trâi nghiûm duyût web tốc độ<br />
Wikipedia, Yahoo, nhĂng kho ânh/mã nguồn chia nhanh và thuên tiûn nhçt.<br />
<br />
655<br />
Đánh giá những framework PHP tốt nhất cho phát triển web hiện đại và một số ứng dụng tại Học viện Nông nghiệp<br />
Việt Nam<br />
<br />
<br />
<br />
<br />
Hình 1. Top 5 công nghệ phát triển web hiện nay<br />
<br />
<br />
Trong nhĂng nëm gæn đåy, 6 framework Zend, Symfony, Yii, Codeigniter, Laravel… đþợc<br />
PHP phát triùn nhçt thø giĆi (Codemarts, 2015) rçt nhi÷u ngþąi phát triùn þa thých và sā dýng.<br />
(Value-Coders, 2018) gồm có Laravel, Phalcon, Các PHP framework thþąng đþợc xây dăng theo<br />
Symfony, CodeIgniter, CakePHP và Zen. Trong chuèn mô hình MVC (Model - View - Controller)<br />
bài báo này, chúng tôi giĆi thiûu và so sánh đðc và cung cçp nhi÷u lĆp hỗ trợ xā lý v÷ bâo mêt,<br />
điùm gồm câ þu điùm và nhþợc điùm cûa nhĂng phân quy÷n, captcha, trình quân lý mô đun, cĄ<br />
framework nêu trên nhìm giúp ngþąi đọc có cái sć dĂ liûu, dĀch vý,… khi đĂ các lêp trình viên sô<br />
nhìn khá tổng quan và giúp ngþąi lêp trình web xây dăng, phát triùn website một cách dú dàng<br />
xem xét lăa chọn framework phù hợp cho mình. và nhanh chóng.<br />
PHP framework làm cho să phát triùn cûa<br />
2. NHỮNG FRAMEWORK PHP ĐƯỢC SỬ nhĂng Āng dýng web viøt bìng ngôn ngĂ PHP<br />
DỤNG NHIỀU NHẤT trć nên trôi chây hĄn, bìng cách cung cçp một<br />
cçu trúc cĄ bân đù xây dăng nhĂng Āng dýng<br />
2.1. Framework và mô hình MVC đĂ. Hay nĂi cách khác, PHP framework giúp<br />
Framework là một bộ mã nguồn đþợc xây ngþąi phát triùn thúc đèy nhanh chóng quá<br />
dăng, phát triùn và đĂng gĂi - phân phối bći các trình phát triùn Āng dýng, tiøt kiûm đþợc thąi<br />
chuyên gia lêp trình hoðc bći các công ty lêp gian, tëng să ổn đĀnh cho Āng dýng và giâm<br />
trình. Nó cung cçp một cçu trúc phát triùn thiùu số læn phâi viøt läi mã. Ngoài ra,<br />
chuèn đù nhĂng ngþąi lêp trình dăa vào đĂ xåy framework còn giúp nhĂng ngþąi mĆi bít đæu có<br />
dăng và phát triùn các dă án. Đi kñm theo nĂ là thù xây dăng các Āng dýng ổn đĀnh hĄn nhą viûc<br />
một kho thþ viûn gồm nhi÷u lĆp/hàm xā lý đþợc tþĄng tác chýnh xác giĂa các cĄ sć dĂ liûu, mã<br />
đðt trong các gói hoðc không gian tên riêng. Các (PHP) và giao diûn (HTML) một cách riêng biût.<br />
chuyên gia lêp trình sā dýng nhi÷u kỹ thuêt lêp Đi÷u này cho phép họ dành nhi÷u thąi gian đù<br />
trình và giâi thuêt đù xây dăng các lĆp xā lý täo ra các Āng dýng web, tránh lãng phí<br />
một cách tối þu nhçt, giâi quyøt các bài toán lêp thąi gian đù viøt các đoän mã lðp läi trong một<br />
trình nhanh chóng và chính xác. Các lĆp trong dă án.<br />
một framework sô làm viûc tốt nhçt vĆi cçu trúc Ý tþćng chung đìng sau cách thĀc làm viûc<br />
chuèn mà framework đĂ cung cçp. cûa một PHP framework đþợc kù đøn là Model-<br />
PHP là một ngôn ngĂ kĀch bân mänh mô View - Controller (MVC). MVC là một mô hình<br />
dùng đù xây dăng website, phæn m÷m cloud, (kiøn trúc) trong lêp trình, cho phép tách biût<br />
hay dùng đù lêp trình server và hiûn nay nó các mã nghiûp vý (business logic) và giao diûn<br />
cüng đang cĂ rçt nhi÷u framework tốt nhþ: (UI) thành các phæn riêng biût, đi÷u này đồng<br />
<br />
656<br />
Phạm Quang Dũng, Nguyễn Thị Thảo, Trần Thị Giang<br />
<br />
<br />
<br />
nghÿa vĆi viûc ta có thù chþnh sāa chúng một khác đ÷u cĂ xu hþĆng bĀ giâm să quan tâm thì<br />
cách riêng ló. Trong cým tÿ MVC thì: Model (M) Laravel läi đþợc tìm kiøm nhi÷u nhçt vĆi đþąng<br />
có thù hiùu là phæn xā lý các thao tác v÷ nghiûp xu hþĆng tëng rçt cao (Google-Trends, 2019).<br />
vý (business logic), View đþợc hiùu là phæn xā lý Trên trýc tung cûa đồ thĀ, giá trĀ 100 là mĀc phổ<br />
lĆp giao diûn (presentation layer) và Controller biøn (să quan tâm tìm kiøm) cao nhçt. Giá trĀ<br />
làm nhiûm vý lọc các yêu cæu đþợc gọi tÿ user, 50 cĂ nghÿa là mĀc phổ biøn bìng một nāa. Còn<br />
có chĀc nëng nhþ một route: đi÷u chþnh, phân mĀc 0 là không đû dĂ liûu đù đánh giá.<br />
luồng các yêu cæu đù gọi đúng Model và View Ở bþĆc tiøp theo, chúng tôi tìm nhĂng køt<br />
thích hợp. V÷ cĄ bân, MVC chia nhă quá trình quâ khâo sát cý thù, đáng tin cêy v÷ tỷ lû mà<br />
xā lý cûa một Āng dýng, vì thø ngþąi phát triùn mỗi framework đþợc sā dýng. Một khâo sát đã<br />
có thù làm viûc trên tÿng thành phæn riêng ló, thăc hiûn bći GitHub [https://github.com/] nëm<br />
trong khi nhĂng thành phæn khác sô không bĀ 2015 v÷ top 10 framework PHP đþợc sā dýng<br />
ânh hþćng tĆi. nhi÷u nhçt trên thø giĆi. Køt quâ này (Hình 4)<br />
đþợc đ÷ cêp trên các blog v÷ lêp trình nổi tiøng<br />
2.2. Xu hướng sử dụng các framework PHP là Codemarts (Codemarts, 2015) và Công ty<br />
Trong phæn này, chúng tôi thăc hiûn các phát triùn phæn m÷m ValueCoders (Value-<br />
đi÷u tra đù cĂ đþợc nhĂng dĂ liûu cý thù v÷ xu Coders, 2018) cûa Ấn Độ sā dýng làm cën cĀ<br />
hþĆng mà cộng đồng tìm hiùu v÷ các framework đánh giá đù đ÷ xuçt nhĂng framework PHP tốt<br />
PHP cüng nhþ thống kê tỷ lû các framework đĂ nhçt cho nëm 2019.<br />
đþợc sā dýng trong thăc tø nhþ thø nào. Tÿ đĂ, Một khâo sát khác đþợc tiøn hành mĆi đåy<br />
chúng tôi sô têp trung đánh giá một số bći một blog hþĆng dén lêp trình là Coders Eye<br />
framework PHP phổ biøn nhçt nhìm đem đøn vĆi khoâng 7.500 thành viön đëng ký. Khâo sát<br />
cho bän đọc nhĂng thông tin hĂu ých đù quyøt đã hăi nhĂng ngþąi đëng ký v÷ các câu hăi<br />
đĀnh lăa chọn sā dýng framework nào cho chuyön såu nhþ sā dýng cý thù cûa xác thăc,<br />
nhĂng dă án cûa mình. mã hĂa phiön, các phþĄng thĀc lþu trĂ cache và<br />
VĆi mýc đých xem xét nhĂng framework đĀnh tuyøn. Køt quâ đþợc liût kö dþĆi đåy sô chþ<br />
PHP nào đþợc quan tâm tìm kiøm nhi÷u nhçt là nhĂng framework PHP đþợc sā dýng hàng<br />
trên thø giĆi trong nhĂng nëm gæn đåy, chúng đæu (Hünh 5). Danh sách này khá tþĄng đồng<br />
tôi sā dýng khâo sát vĆi Google Trends, vĆi lăa vĆi thống kê cûa GitHub cho thçy tính có thù tin<br />
chọn tham số thąi gian là 5 nëm gæn đåy. Køt cêy đþợc v÷ tính phổ biøn cûa nhĂng framework<br />
quâ (Hình 3) cho thçy trong khi các framework này trong cộng đồng ngþąi lêp trình web.<br />
<br />
<br />
<br />
<br />
Nguồn: Tech-Talk, 2016<br />
<br />
Hình 2. Mô hình thiết kế Model-View-Controller<br />
<br />
<br />
657<br />
Đánh giá những framework PHP tốt nhất cho phát triển web hiện đại và một số ứng dụng tại Học viện Nông nghiệp<br />
Việt Nam<br />
<br />
<br />
<br />
<br />
Hình 3. So sánh sự quan tâm tìm kiếm của cộng đồng tới 5 framework PHP phổ biến<br />
<br />
<br />
<br />
<br />
Hình 4. Thị phần các framework PHP năm 2015 thống kê bởi GitHub<br />
<br />
<br />
dùng nhĂng framework tốt nhçt (Sukrit-<br />
3. TỔNG QUAN 6 FRAMEWORK HÀNG ĐẦU<br />
Infotech, 2018).<br />
Qua køt quâ nhĂng nghiên cĀu trên, chúng<br />
tôi chọn 6 framework PHP hàng đæu là Laravel,<br />
4. ĐÁNH GIÁ HIỆU NĂNG CỦA MỘT SỐ<br />
Phalcon, Symfony, CodeIgniter, CakePHP và<br />
FRAMEWORK HÀNG ĐẦU<br />
Zen đù giĆi thiûu và đánh giá nhĂng þu, nhþợc<br />
điùm. Đåy là nhĂng framework PHP đþợc sā Đù giúp bän đọc có cái nhìn tổng quan v÷<br />
dýng nhi÷u nhçt trong nhi÷u nëm gæn đåy, hiûu nëng một số framework PHP nêu trên,<br />
cüng nhþ đĀng đæu trong nhi÷u trang khuyên trong phæn này, chúng tôi tổng hợp køt quâ<br />
<br />
658<br />
Phạm Quang Dũng, Nguyễn Thị Thảo, Trần Thị Giang<br />
<br />
<br />
<br />
nghiên cĀu cûa một số nhóm tác giâ đã công bố, (stress testing) đã đþợc áp dýng. Køt quâ cûa<br />
cüng nhþ phþĄng pháp và køt quâ một thā nghiên cĀu này chþ ra rìng CodeIgniter thăc thi<br />
nghiûm đánh giá chúng tôi đã tiøn hành. Hiûu tốt hĄn trong đi÷u kiûn tâi thông thþąng, nhþng<br />
nëng cûa các framework cûa các ngôn ngĂ lêp trong đi÷u kiûn tâi áp lăc lĆn thì CakePHP läi<br />
trünh thþąng đþợc đánh giá trön các tiöu chý: tốc tốt hĄn. CodeIgniter tốt hĄn đối vĆi các Āng<br />
độ đáp Āng nhanh (thąi gian đáp Āng nhă), dung dýng vÿa và nhă. Nó xā lý đþợc ýt ngþąi sā dýng<br />
lþợng bộ nhĆ sā dýng thçp, khâ nëng tái sā đồng thąi hĄn (nhă hĄn 500). Đối vĆi các Āng<br />
dýng mã nguồn cao. dýng lĆn có nhi÷u ngþąi dùng đồng thąi, tÿ 600<br />
Đøn thąi điùm hiûn täi, trên thø giĆi vén user trć lên thì CakePHP thçp hĄn hîn<br />
thiøu các độ đo hay công cý đo một cách đĀnh CodeIgniter v÷ thąi gian đáp Āng. Đi÷u này là<br />
lþợng các khía cänh nhìm xác đĀnh chçt lþợng do týnh nëng ORM cĂ trong CakePHP, làm tëng<br />
cûa ngôn ngĂ kĀch bân PHP cüng nhþ cûa các nëng suçt, khâ nëng duy trü và tái sā dýng cûa<br />
framework PHP. Nghiên cĀu cûa (Munir, 2014) mã nguồn. Còn CodeIgniter chþ chäy các truy<br />
đã so sánh và phån tých ânh hþćng cûa tính vçn SQL đĄn giân đù giao tiøp vĆi cĄ sć dĂ liûu,<br />
nëng ánh xä quan hû đối tþợng (object- nön đät hiûu quâ trong các trþąng hợp tâi bình<br />
relational mapping, ORM) đối vĆi hiûu nëng cûa thþąng. Vì vêy, các framework có hỗ trợ ORM<br />
CakePHP và CodeIgniter. PhþĄng pháp thā tâi nön đþợc sā dýng cho các Āng dýng quy mô lĆn,<br />
bünh thþąng (load testing) và thā tâi áp lăc lĆn cĂ lþợng giao tiøp cĄ sć dĂ liûu căc lĆn.<br />
<br />
<br />
<br />
<br />
Nguồn: Code-Eyes, 2018<br />
<br />
Hình 5. Thị phần các framework PHP năm 2018 thống kê<br />
trên các thành viên của Coders Eye<br />
<br />
<br />
<br />
<br />
Hình 6. Sáu framework PHP hàng đầu được Công ty CNTT Sukrit (Ấn Độ) khuyên dùng<br />
<br />
659<br />
Đánh giá những framework PHP tốt nhất cho phát triển web hiện đại và một số ứng dụng tại Học viện Nông nghiệp<br />
Việt Nam<br />
<br />
<br />
Bâng 1. Ưu điểm và nhược điểm của 6 framework PHP hàng đầu thế giới năm 2018<br />
(Phiên bân PHP đþợc yêu cæu cho mỗi framework đþợc xét täi thąi điùm nëm 2018)<br />
Phiên bản PHP<br />
Framework Ưu điểm Nhược điểm<br />
được yêu cầu<br />
Laravel - Mã nguồn mở - Không làm việc trên các host 5.5.9<br />
- Tổ chức tệp tin và mã nguồn chia sẻ<br />
- Phát triển ứng dụng nhanh chóng - Thực hiện nhiều truy vấn trên cơ<br />
- Kiến trúc MVC (và PHP7) sở dữ liệu<br />
- Kiểm thử đơn vị (rất nhanh trên HHVM)<br />
- Tài liệu tốt nhất<br />
- Mức trừu tượng cao<br />
- Khả năng nạp chồng phương thức (Overloading) sử<br />
dụng phương pháp động<br />
- Rất nhiều chức năng bổ sung<br />
- Tích hợp thanh toán với stripe<br />
- Các gói mã hóa rất mạnh<br />
- Hỗ trợ ORM (ánh xạ CSDL sang các đối tượng trong các<br />
ngôn ngữ lập trình hướng đối tượng)<br />
Phalcon - Nhanh chóng với chi phí thấp - Không phải mã nguồn mở 5.3<br />
- Tự động tải - Các lỗi phải chờ để được vá bởi<br />
- Duy nhất ở chỗ nó được dựa trên C-extension các nhà phát triển Phalcon<br />
- Các tính năng bảo mật rất tốt được tích hợp sẵn - Không hoạt động với nền tảng<br />
- Rất nhiều tài liệu HHVM (máy ảo xử lý code PHP)<br />
- Thân thiện với người phát triển<br />
Symphony - Hiệu suất cao, do kỹ thuật đệm byte code · Không hỗ trợ đầy đủ kiến trúc 5.5.9<br />
- Ổn định MVC<br />
- Nhiều tài liệu<br />
- Hỗ trợ rất tốt và kỹ càng<br />
CodeIgniter - Rất thân thiện với người phát triển, không cần bất kỳ sự - Không có không gian tên, tuy 5.4<br />
phụ thuộc hoặc hỗ trợ đặc biệt nào nhiên điều này có thể tăng tốc độ<br />
- Khả năng sử dụng tốt các dịch vụ lưu trữ web thông - Không thân thiện với kiểm thử<br />
thường, sử dụng các cơ sở dữ liệu chuẩn như MySQL đơn vị như những framework<br />
- Xuất sắc hơn hầu hết các framework khác (không phải khác<br />
MVC) - Ít thư viện được xây dựng bên<br />
- Tài liệu tốt và hỗ trợ dài hạn trong<br />
CakePHP - Framework mới - Không tốt cho xây dựng các API 5.5.9<br />
- Hệ thống dựng sẵn giúp xây dựng nhanh theo kiến trúc REST (Restful<br />
- Rất tốt cho các ứng dụng web thương mại APIS) như Laravel hay các<br />
- Các tính năng Database Access, Caching, Validation, framework khác trong danh sách<br />
Authentication được tích hợp sẵn<br />
- Công cụ bảo vệ mở rộng bao gồm cross site<br />
- Phòng ngừa scripting, SQL Injection<br />
- Tài liệu tốt<br />
- Phát triển tích cực<br />
Zend - Lý tưởng cho các ứng dụng doanh nghiệp - Không lý tưởng để phát triển 5.3<br />
- Hướng đối tượng ứng dụng nhanh<br />
- Rất nhiều các thành phần cho validation, feeds và forms<br />
<br />
<br />
<br />
Trong báo cáo tốt nghiûp (Samra, 2015) quâ nhanh nhçt (10-17 ms), tëng hĄn vĆi<br />
ngành Khoa học máy týnh, Đäi học Linneus, tác CodeIgniter (28-45 ms), tëng mänh vĆi Laravel<br />
giâ Jone Samra đã so sánh hiûu nëng cûa PHP (726-815 ms), và Symfony (591-1.110 ms).<br />
thuæn và 4 framework PHP là Laravel, (2) V÷ sā dýng bộ nhĆ dùng cho các hành<br />
Symfony, CodeIgniter, Phalcon vĆi các đo lþąng động trên, Phalcon cho køt quâ tốt nhçt (0,16-<br />
thąi gian thăc hiûn, sā dýng bộ nhĆ và số lþợng 0,18 MB), tëng hĄn vĆi CodeIgniter (2,13-2,14<br />
các hàm đþợc gọi trong thăc nghiûm vĆi một Āng MB), tëng mänh vĆi Laravel (8,67-9,53 MB), cao<br />
dýng web blog. Køt quâ thăc nghiûm giĂa các nhçt là Symfony (11,93-15,68 MB)<br />
framework trên cho thçy: (3) V÷ số lþợng hàm đþợc gọi xét trên têp<br />
(1) V÷ thąi gian thăc hiûn, vĆi các hành hành động, Phalcon tốt nhçt vĆi chþ 202-256<br />
động täo, đọc, cêp nhêt, xoá, Phalcon đät køt hàm, kø đøn là CodeIgniter vĆi 260-279 hàm, số<br />
<br />
660<br />
Phạm Quang Dũng, Nguyễn Thị Thảo, Trần Thị Giang<br />
<br />
<br />
<br />
lþợng trên lĆn hĄn hîn ć Laravel vĆi 1.194- CakePHP 3.x nhìm giúp ngþąi đọc có nhĂng góc<br />
1.310 hàm và Symfony vĆi 1.055-1.967 hàm. nhün đa chi÷u nhçt v÷ các framework PHP.<br />
Køt quâ chþ ra Phalcon và CodeIgniter có Thăc nghiûm đþợc tiøn hành vĆi công cý tích<br />
thąi gian thăc hiûn và sā dýng bộ nhĆ tốt hĄn hợp trên trang PHP Benchmarks (Php-<br />
nhi÷u so vĆi Laravel và Symfony, giúp chúng ta Benchmarks, 2018). Hû thống đo sā dýng một<br />
có thêm một tham khâo tốt khi muốn lăa chọn server chuyên dýng vĆi hû đi÷u hành Ubuntu<br />
một framework đù phát triùn web. server 16.04 LTS 64 bits, bộ vi xā lý Intel(R)<br />
Nghiên cĀu cûa nhóm tác giâ (Mon, 2014) Xeon(R) CPU D-1531 @ 2.20GHz (6 cores, 12<br />
đã công bố một độ đo khâ nëng tái sā dýng các threads), bộ nhĆ RAM 32 GB DDR4 ECC, ổ<br />
class và module đù do chçt lþợng cûa ngôn ngĂ cĀng loäi SSD, cài web server nginx 1.10.3.<br />
kĀch bân PHP. Các script thþąng cæn phâi thăc Benchmark này sā dýng thang điùm 10.000 vĆi<br />
hiûn các hành động giống nhau ć một số nĄi cách týnh nhþ sau:<br />
khác nhau trong script. Nên khâ nëng tái sā 5 benchmark tốt nhçt cêp nhêt điùm. Điùm<br />
dýng mĀc cao là một mýc tiêu quan trọng cæn càng cao nghÿa là công cý có khâ nëng đáp Āng<br />
đät đþợc trong phát triùn một hû thống phæn càng nhanh. Mỗi loäi benchmark (Hello World,<br />
m÷m. Theo đĂ, độ đo khâ nëng tái sā dýng là REST API) cĂ đù đät điùm tối đa là 10.000 cho<br />
tổng cûa số lþợng các include và các require, số mỗi đồng thąi (1, 5, 10 và 20). Điùm này đþợc<br />
lþợng các thành phæn thÿa kø đối tþợng, và kích nhân vĆi tỷ lû thąi gian nhanh nhçt so vĆi tçt câ<br />
thþĆc giao diûn class. các thąi gian chêm hĄn cûa các framework khác<br />
Kø thÿa nghiên cĀu trên, nhóm tác giâ (Li tÿ cùng loäi benchmark đù týnh điùm cho các<br />
& cs., 2017) đã công bố køt quâ nghiên cĀu thăc framework đĂ.<br />
nghiûm đù so sánh hiûu nëng và khâ nëng tái sā Ví dý: Symfony 4.1 mçt 57.510 ms (nhanh<br />
dýng đối vĆi 3 framework PHP là CakePHP, hĄn tçt câ các framework) đù hoàn thành<br />
Laravel và CodeIgniter. Một hû thống PHP gồm benchmark Hello World. Symfony 4.0 mçt<br />
một bâng đi÷u khiùn và 3 Āng dýng PHP đþợc 58.383 ms cho cùng benchmark. Symfony 4.1 sô<br />
phát triùn đù thăc nghiûm. Các Āng dýng chäy đþợc 10.000 điùm và Symfony 4.0 đþợc 9.850<br />
läi cùng một token bìng cách sā dýng læn lþợt 3 điùm (bìng 57.510 * 10.000 / 58.383).<br />
framework trên. Một têp hợp các điùm đo lþąng Tổng điùm cho mỗi framework sô đþợc cộng<br />
đþợc tích hợp vĆi tÿng Āng dýng. Các tác vý tçt câ điùm tÿ tçt câ các loäi benchmark và tçt<br />
đþợc dùng đù đo hiûu nëng gồm (1) đọc/ghi các câ các điùm đồng thąi.<br />
file vën bân, (2) tâi lön và lþu các ânh lên web Køt quâ đþợc thù hiûn nhþ ć hình 7 cho<br />
server, (3) nhên lþợng dĂ liûu lĆn tÿ cĄ sć dĂ thçy các phiên bân Symfony 4.x vþợt trội so vĆi<br />
liûu và hiùn thĀ chúng trong một bâng và (4) các các framework còn läi v÷ tốc độ đáp Āng. Đåy là<br />
hoät động vĆi cĄ sć dĂ liûu - køt nối, chèn, xoá, một tham khâo tốt đù lăa chọn framework<br />
cêp nhêt. Køt quâ nghiên cĀu chþ ra rìng, nhìn Symfony cho nhĂng Āng dýng mà lþợng tâi lĆn<br />
chung CodeIgniter có hiûu nëng tốt nhçt và lön server đāi hăi tốc độ đáp Āng nhanh nhçt.<br />
Cake PHP có hiûu nëng kòm nhçt. Tuy nhiên, Nói chung, mỗi framework trên tốt nhçt có<br />
khâ nëng tái sā dýng cûa CakePHP cĂ điùm cao thù đþợc phân loäi vào nhóm các framework<br />
nhçt. Đi÷u này cho thçy hiûu nëng và khâ nëng PHP đþợc phát triùn hoàn thiûn, thþ viûn độc<br />
tái sā dýng là không có quan hû tþ lû vĆi nhau. lêp, cho các Āng dýng web đæy đû týnh nëng<br />
V÷ tốc độ đọc ghi các file vën bân thì Laravel hoðc vào nhóm các framework nhă, phù hợp đù<br />
cho køt quâ nhanh nhçt. làm mọi thĀ đĄn giân, đù xây dăng các REST<br />
Chúng tôi mć rộng so sánh hiûu nëng xòt API hoðc các Āng dýng web cĄ bân. Cuối cùng,<br />
trên khía cänh tốc độ đáp Āng cûa 4 loäi tùy thuộc vào ngþąi phát triùn đù quyøt đĀnh<br />
framework PHP có dùng phiên bân PHP mĆi 7.2 xem framework nào là phù hợp nhçt cho dă án<br />
là Laravel 5.x, Symfony 4.x, Zend 3.x và và kỹ nëng cûa họ.<br />
<br />
661<br />
Đánh giá những framework PHP tốt nhất cho phát triển web hiện đại và một số ứng dụng tại Học viện Nông nghiệp<br />
Việt Nam<br />
<br />
<br />
<br />
<br />
Hình 7. Bâng xếp hạng điểm hiệu năng của 4 loại framework sử dụng PHP 7.2<br />
<br />
<br />
Có một số lý do mà một ngþąi phát triùn ânh lön server đþợc thăc hiûn thþąng xuyên nên<br />
muốn chọn một framework, đáng chú ý nhçt là chúng tôi đã lăa chọn framework rçt phổ biøn<br />
vì chúng cung cçp một đþąng dén nhanh hiûu và hiûu quâ bêc nhçt cho các tác vý trên là<br />
quâ, có cçu trúc đù phát triùn các Āng dýng Laravel. Đåy là nhĂng Āng dýng đã đþợc triùn<br />
web hoðc các API. Các framework đâm bâo khai trong thăc tø nhþng chþa đþợc công bố<br />
rìng mã không cæn đþợc viøt nhi÷u læn cho các trong bài báo nào.<br />
chĀc nëng phổ biøn nhþ bâo mêt và xác thăc,<br />
xā lý cĄ sć dĂ liûu, täo khuôn méu, xā lý URL 5.1. Từ điển Bách khoa Nông nghiệp<br />
và các nhu cæu khác. Ngþąi phát triùn nên Việt Nam<br />
luôn luôn nghiên cĀu kỹ v÷ tÿng framework Cuốn Tÿ điùn Bách khoa Nông nghiûp Viût<br />
trþĆc khi quyøt đĀnh sā dýng cái nào cho dă án Nam (tái bân nëm 2014) là sân phèm tÿ công<br />
tiøp theo. sĀc và tri thĀc cûa rçt nhi÷u nhà khoa học,<br />
giâng viên trong và ngoài Học viûn. VĆi mong<br />
5. MỘT SỐ ỨNG DỤNG TẠI HỌC VIỆN muốn mang tri thĀc đĂ một cách dú dàng hĄn,<br />
chúng tôi đã xåy dăng Tÿ điùn trăc tuyøn này<br />
Trong thąi đäi ngày nay, công nghû thông<br />
vĆi 7.408 mýc tÿ, các hình ânh minh họa đþợc<br />
tin đþợc Āng dýng rộng rãi vào nhi÷u lÿnh văc.<br />
tìm kiøm và chọn lọc cèn thên.<br />
Chúng tôi đã theo đĀnh hþĆng nghiên cĀu Āng<br />
dýng nhìm phát triùn nhĂng sân phèm Āng Công nghû đþợc lăa chọn phát triùn cho Āng<br />
dýng hĂu ích trong thăc tø. Trong nëm vÿa qua, dýng này là CodeIgniter vì tính thân thiûn đối<br />
chúng tôi đã phát triùn một số Āng dýng web, vĆi ngþąi phát triùn, gọn nhõ, cüng hỗ trợ tốt mô<br />
trong đĂ cĂ 2 Āng dýng sā dýng framework PHP hình lêp trình MVC tiên tiøn, cùng hû quân trĀ<br />
trong số đã giĆi thiûu ć trên. VĆi Āng dýng Tÿ cĄ sć dĂ liûu chuèn MySQL. VĆi CodeIgniter,<br />
điùn Bách khoa Nông nghiûp, lþợng ngþąi dùng chúng tôi đã xåy dăng sân phèm này khá nhanh<br />
đồng thąi không lĆn và cüng không phâi đọc ghi chóng và công khai täi đĀa chþ http://vitc.edu.vn/<br />
tûp nön framework CodeIgniter đþợc lăa chọn. tudiennn/. Một số hình ânh v÷ Āng dýng này<br />
VĆi Āng dýng thĀ hai, hû thống quân lý vën bân nhþ ć hình 8. Køt quâ sā dýng tÿ điùn trong<br />
hành chính, thì các tác vý đọc ghi tûp, upload thăc tø cho thçy să chính xác và ổn đĀnh.<br />
<br />
662<br />
Phạm Quang Dũng, Nguyễn Thị Thảo, Trần Thị Giang<br />
<br />
<br />
<br />
<br />
(a) Một giao diện đáp ứng kích thước màn hình điện thoại (b) Cấu trúc thư mục lập trình ứng dụng<br />
cho chức năng tra cứu từ theo mô hình MVC<br />
<br />
Hình 8. Ứng dụng Từ điển Bách khoa Nông nghiệp Việt Nam, sử dụng CodeIgniter<br />
<br />
<br />
să hỗ trợ trong khi xây dăng cüng nhþ phát<br />
5.2. Phần mềm quân lý văn bân hành chính<br />
triùn Āng dýng sau này. Hiûn täi, phæn m÷m<br />
Tÿ låu, chúng ta đã nĂi đøn hành chính đang đþợc triùn khai täi đĀa chþ<br />
điûn tā, nhþng thăc tø nhi÷u nĄi vén cān đang http://vitc.edu.vn/vanban/ đù quân lý vën bân<br />
quân lý vën bân cĄ bân là theo cách thû công. täi Khoa Thú y (Hình 9). V÷ mðt kỹ thuêt, phæn<br />
Trong môi trþąng làm viûc cçp trþąng đäi học, m÷m sau khi đþợc xây dăng đã thù hiûn đþợc<br />
thêm chí thçp hĄn là cçp khoa, lþợng vën bân các þu điùm mà các nghiên cĀu đã chþ ra nhþ<br />
đøn và đi rçt lĆn, liön quan đøn nhi÷u ngþąi. VĆi đáp Āng nhanh các tác vý yêu cæu tÿ phýa ngþąi<br />
Āng dýng quân lý vën bân hành chính có thù sā dýng, giao diûn đáp Āng mþợt trên các kích<br />
giúp đæu mối vën phāng cüng nhþ nhĂng ngþąi thþĆc màn hình khác nhau.<br />
quân lý nhên vën bân cĂ đþợc să tiûn dýng bçt<br />
kù thąi gian và vĀ trí, tiøt kiûm đþợc đáng kù<br />
6. KẾT LUẬN<br />
thąi gian và công sĀc phân phối vën bân đù báo<br />
cáo hay triùn khai công viûc. Trong bài báo này, chúng tôi đã tổng hợp să<br />
đánh giá khá đæy đû khía cänh cûa hiûu nëng<br />
Chúng tôi đã lăa chọn framework Laravel và khâ nëng tái sā dýng cûa nhĂng framework<br />
đù phát triùn phæn m÷m này do nĂ đã cêp nhêt PHP phổ biøn nhçt, cüng là tốt nhçt ć thąi điùm<br />
phiên bân PHP 7, nhên đþợc să tín nhiûm lĆn tÿ hiûn täi, dăa trên să tổng hợp và phân tích tÿ<br />
cộng đồng trong thąi gian gæn đåy, lþợng tài liûu nhi÷u nguồn đáng tin cêy. Qua đĂ, ngþąi phát<br />
phong phú, cüng nhþ să hỗ trợ tốt mô hình triùn Āng dýng web cĂ cën cĀ lăa chọn<br />
MVC và hû quân trĀ CSDL MySQL. NhĂng đi÷u framework hợp lý vĆi münh đù theo đuổi lâu dài<br />
đĂ đâm bâo rìng chúng tôi sô dú dàng tüm đþợc hoðc sā dýng thích hợp cho tÿng dă án cý thù.<br />
<br />
663<br />
Đánh giá những framework PHP tốt nhất cho phát triển web hiện đại và một số ứng dụng tại Học viện Nông nghiệp<br />
Việt Nam<br />
<br />
<br />
<br />
<br />
(a) Một giao diện đáp ứng kích thước màn hình điện thoại (b) Cấu trúc thư mục lập trình<br />
cho chức năng quản lý công văn đến ứng dụng của Laravel<br />
<br />
Hình 9. Ứng dụng Quân lý văn bân hành chính, sử dụng framework Laravel<br />
<br />
<br />
Quyøt đĀnh sā dýng framework nào phý Hãy luôn chíc chín kiùm tra cộng đồng<br />
thuộc vào nhi÷u yøu tố. Ngþąi phát triùn xem hoðc công ty đĀng sau să phát triùn cûa tÿng<br />
xét các khía cänh nhþ tốc độ, dú sā dýng, các framework đù đâm bâo nĂ đþợc duy trì tích căc<br />
týnh nëng sïn có, tài liûu, yêu cæu các tài và tốt nhçt là có hỗ trợ dài hän, đi÷u này sô đâm<br />
nguyön trön host hay độc lêp. Khâ nëng mć bâo nó vén đþợc cêp nhêt và hỗ trợ trong<br />
rộng cüng là một đi÷u cæn cân nhíc nøu ngþąi tþĄng lai.<br />
phát triùn kỳ vọng să phát triùn vþợt quá khâ<br />
nëng cûa một phiên bân Āng dýng cûa họ.<br />
TÀI LIỆU THAM KHẢO<br />
Dù Laravel chiøm vĀ trí tổng thù đæu tiên<br />
trong danh sách cûa chúng tôi xét v÷ hỗ trợ lâu Mon C.T.K.M.M. (2014). Framework for Evaluating<br />
Reusability of PHP. International Conference on<br />
dài, quy mô cộng đồng và nhĂng ngþąi đĂng gĂp,<br />
Advances in Engineering and Technology<br />
tính linh hoät, nhþng Phalcon đĀng ngay vĀ trí (ICAET'2014). http://dx.doi.org/10.15242/IIE.<br />
thĀ hai. Lý do duy nhçt mà Phalcon xuçt hiûn ć E03140345.<br />
vĀ trí thĀ hai vü nĂ không tëng mänh trong cộng Code-Eyes (2018). 11 Best PHP Frameworks for<br />
đồng phát triùn web nhþ Laravel. Modern Web Developers in 2019. Truy cập từ<br />
<br />
664<br />
Phạm Quang Dũng, Nguyễn Thị Thảo, Trần Thị Giang<br />
<br />
<br />
https://coderseye.com/best-php-frameworks-for- Php-Benchmarks (2018). Benchmark protocol. Truy<br />
web-developers/, ngày 12/1/2018. cập từ http://www.phpbenchmarks.com/en/bench<br />
Codemarts (2015). 10 Top PHP Frameworks of 2015. mark-protocol.html, ngày 12/9/2018.<br />
Truy cập từ https://codemarts.com/blog/10-top- Samra J. (2015). Comparing performance of plain PHP<br />
php-frameworks-of-2015/, ngày 12/6/2018. and four of its popular frameworks, Bachelor<br />
thesis, Linneus University.<br />
Google-Trends (2019). Compare Interest over time of<br />
the five PHP frameworks in last 5 years. Truy cập từ Simplified-Techy (2018). Top 10 PHP Sites: Most<br />
https://trends.google.com/trends/explore?Date=to Popular Websites Based On PHP. Truy cập từ<br />
https://www.simplifiedtechy.net/top-10-php-sites/,<br />
day%205-y&q=%2Fm%2F0jwy148,%2Fm%2F09<br />
ngày 12/06/2018.<br />
cjcl,%2Fm%2F02qgdkj,%2Fm%2F09t3sp,Zend,<br />
ngày 12/03/2019. Sukrit-Infotech (2018). Top 6 PHP frameworks for web<br />
development in 2018. Truy cập từ https://www.<br />
Li X., Karnan S. & Chishti J.A. (2017). An empirical sukritinfotech.com/blog/top-6-php-frameworks-<br />
study of three PHP frameworks. 2017 4 th web-development-2018.html/, ngày 12/3/2019.<br />
International Conference on Systems and Tech-Talk (2016). Tổng quan về MV, AngularJS,<br />
Informatics (ICSAI). pp. 1636-1640. Setup. Truy cập từ https://techtalk.vn/tong-quan-<br />
Munir A.F.M. (2014). Performance Evaluation of PHP ve-mv-angularjs-setup.html, ngày 12/02/2019.<br />
Frameworks (CakePHP and CodeIgniter) in Value-Coders (2018). 15 Top PHP Frameworks For<br />
relation to the Object-Relational Mapping, with Startups | 2019. Truy cập từ https://www.value<br />
respect to Load Testing, Master thesis, Blekinge coders.com/blog/technology-and-apps/top-popular<br />
Institute of Technology. -php-frameworks-web-dev/, ngày 12/6/2018.<br />
<br />
<br />
<br />
<br />
665<br />