So sánh Nodejs với PHP?



  • Ưu điểm của Node.js

    Hiệu năng cực nhanh
    Nodejs là nền tảng được xây dựng trên ngôn ngữ Javascript vì vậy Nodejs hỗ trợ kiến trúc hướng sự kiện (event-driven) và non-blocking I/O.

    Do đó ứng dụng Nodejs có thể thể dễ dàng xử lý nhiều kết nối một cách dễ dàng.

    Nhờ Nodejs xử lý bất đồng bộ các tác vụ nên chúng ta dễ dàng tạo các giải pháp phía máy chủ có khả năng tận dụng CPU khi phục vụ đồng thời nhiều yêu cầu cực tốt so với ngôn ngữ đa luồng như PHP.

    Nhờ ưu điểm này mà Nodejs phù hợp với các ứng dụng kiểu không đồng bộ, dựa trên dữ liệu và các luồng công việc không ràng buộc I/O như RTA( Ứng dụng thời gian thực), SPA( Single page application)… Những ứng dụng kiểu như vậy, Nodejs luôn đảm bảo với hiệu năng tuyệt vời.

    Một ngôn ngữ cho cả Server và client
    Có rất nhiều frameworks dành cho client như Ember, React hay Angular được viết bằng ngôn ngữ Javascript.

    Khi bạn sử dụng Nodejs cho server, bạn có thể sử dụng toàn bộ kiến thức về Javascript mà bạn biết cho server.

    Đây là ưu điểm mà lập trình viên Javascript cảm thấy tự hào nhất so với các ngôn ngữ khác.

    Sử dụng cùng một ngôn ngữ cho cả front-end và back-end là một lợi thế cho khả năng maintaince ứng dụng cũng như sự phối hợp giữa các thành viên trong team.

    Bời vì lúc này, các thành viên trong team của bạn sẽ cùng sử dụng một ngôn ngữ Javascript, sử dụng cùng cấu trúc dữ liệu Javascript, syntax ngôn ngữ hay style convention…Tất cả góp phần đẩy nhanh tốc độ phát triển ứng dụng, sửa lỗi và co-work giữa các members.

    Nodejs cực mềm dẻo
    Nodejs không có nhiều quy tắc bắt buộc các lập trình viên phải tuân theo như Java. Bạn sẽ còn phải biết OOP là gì, không còn phải quan tâm SOLID là gì nữa…

    Vì vậy, khi bạn sử dụng Nodejs, bạn sẽ tha hồ sáng tạo với nhiều cách viết code khác nhau.

    Bản chất Nodejs là các module, chính các module là bộ phận xây dựng nên các tính năng hay ho cho ứng dụng Nodejs. Như ở bài viết trước: Bắt đầu học lập trình Nodejs, mình cũng có về NPM. Với NPM, bạn sẽ thoải mái sử dụng hàng trăm ngàn module miễn phí.

    Nhược điểm của Node.js
    Ít hiệu quả trong việc xử lý tác vụ cần nhiều CPU
    Như các bạn cũng biết, Nodejs là môi trường xử lý đơn luồng và hướng sự kiện( event- driven) nên nó không thích hợp với các ứng dụng cần nhiều CPU. Những ứng dụng kiểu như xử lý ảnh, video… không nên sử dụng Nodejs để xây dựng.

    Khi xử lý các tệp lớn hay thực hiện thao tác với đồ họa thì Nodejs có thể không phản hồi hoặc bị treo máy. Khi bạn xây dựng các ứng dụng kiểu như vậy thì nên nghĩ tới các công nghệ hỗ trợ đa luồng như PHP.

    Thiếu sự kiểm duyệt chất lượng các module Nodejs
    Mình cũng không biết cái này là ưu điểm hay nhược điểm nữa. Như ở trên mình có nói Nodejs được xây dựng dựa trên module. Thông qua NPM, bạn được phép sử dụng hàng ngàn module miễn phí.

    Tuy nhiên, ngoài những core module như http, crypto… thì phần lớn module là do các bên 3rd-party phát triển. Mà hiện tại thì cộng đồng phát triển các module vẫn còn sơ khai, chất lượng các module thì “thượng vàng hạ cám”…

    Ngay cả đến bạn cũng có thể dễ dàng tự tạo một module và publish lên NPM repository. Hệ sinh thái Nodejs vẫn chưa có một cơ chế kiểm duyệt chất lượng tốt.

    Thế nên khi bạn sử dụng các module của Nodejs, bạn cần phải tỉnh táo mà lựa chọn cho mình module tốt nhất có thể.

    Ưu điểm của PHP

    Có nhiều framework tốt
    PHP có rất nhiều platform tốt phục vụ việc xây dựng website như: WordPress, Joomla, Drupal… hay framework để tạo web app nhanh như Laravel, Symfony, ZendFramework…

    Với sự hỗ trợ của các CMS như WordPress, bạn dễ dàng triển khai một blog hay một trang thương mại điện tử với đầy đủ chức năng.

    PHP có lịch sử ra đời sớm nên cộng đồng cũng cực đông, có nhiều giải pháp mã nguồn mở được viết bằng PHP.

    Ngoài ra, nếu bạn chọn PHP thì khả năng deploy cũng dễ hơn vì trên thị trường có nhiều nhà cung cấp hosting hỗ trợ PHP. Có thể kể đến các tên tuổi như: Hawkhost, A2 Hosting… Đây là ưu điểm dành cho nhà phát triển nhỏ lẻ với chi phí đầu tư ít.

    Còn với Nodejs, bạn có rất ít lựa chọn hosting hỗ trợ, hoặc bạn chỉ có thể mua VPS và tự deploy mà thôi.

    PHP là dành cho web
    Không giống như Java hay Python hay những ngôn ngữ đa năng khác, ngay từ đầu PHP được thiết kế dành riêng cho thế giới web. Đó là lý do tại sao PHP có đầy đủ những tính năng để xử lý HTML, server và database(MYSQL nói riêng).

    Với một giải pháp toàn diện cho máy chủ như PHP thì bạn cũng cần phải bận tâm về javascript trên trình duyệt vì tất cả các trang có thể được tạo và render trên máy chủ.

    Điều này rất hữu ích nếu bạn muốn xử lý tập trung và tránh quá tải cho trình duyệt người dùng.

    Tuy nhiên, việc render các trang phía máy chủ sẽ phù hợp với các ứng dụng kiểu single page(Single Page Applications).

    Nhược điểm của PHP
    Bị trộn lẫn giữa PHP và HTML
    Cái đặc điểm này là thứ mình ghét nhất của PHP. Các bạn có để ý là chúng ta cứ phải mix code giữa PHP và HTML khi tạo trang web không?

    Cá nhân mình thì muốn sự rạch ròi giữa PHP và các ngôn ngữ front-end( CSS, HTML, Javascript). Sự rạch ròi sẽ làm mình cảm thấy code thông thoáng và dễ debug hơn nhiều.

    Chính vì đặc điểm này mà người ta nói PHP là ngôn ngữ không hỗ trợ tốt mô hình MVC. MVC là mô hình chuẩn của thế giới web rồi. Vì sự mix giữa PHP và HTML nên trong mô hình MVC, chúng ta sẽ khó phân tách rạch ròi giữa View và Controller.

    Khi đó ứng dụng web sẽ khó mở rộng và thêm các tính năng mới sau này.

    Sử dụng mô hình Client-Server cũ kĩ
    PHP tuân theo mô hình client-server cổ điển. Tức là mọi request tới ứng dụng sẽ lần lượt thực hiện các bước như: khởi tạo ứng dụng, kết nối tới database, xử lý tác vụ, sau đó cấu hình thông số và render trang HTML để trả về cho browser.

    Chính vì việc thực hiện tuần tự như vậy mà ứng dụng PHP sẽ chậm hơn đôi chút so với Nodejs. Khi mà Nodejs chỉ khởi tạo ứng dụng một lần và chạy mãi mãi.

    Nhờ tính năng này mà Nodejs phù hợp hơn với các tính năng của HTML5 , AJAX và websocket.

    Mặc dù nhược điểm này của PHP có thể được giải quyết bằng Memcached. Tuy nhiên, Memcached không phải là một tiêu chuẩn của ngôn ngữ PHP.



  • Phần mềm Chatbot từ Bizfly Chat giúp doanh nghiệp trả lời tin nhắn tự động theo kịch bản được thiết lập sẵn trên Website, Fanpage & Messenger Facebook, hỗ trợ tăng trưởng doanh thu và phù hợp với nhiều loại hình, lĩnh vực kinh doanh
    https://bizfly.vn/giai-phap/chat-bot.html


Log in to reply