5. Mục tiêu cần đạt đƣợc
1.6.1. Giới thiệu về Node.js
JavaScript trước đây chỉ chạy được trên trình duyệt web. Nhưng gần đây nó được dùng ở phía server. Có những môi trường JavaScript ở phía server như là Jaxer và Narwhal, tuy nhiên Node.js có một chút khác biệt so với những cái trên. Bởi vì nó dựa trên sự kiện hơn là dựa theo luồng (thread). Các máy chủ Web như Apache thường xử lý PHP và các script CGI (Common Gateway Interface) khác dựa theo luồng bởi chúng sinh ra một hệ thống luồng cho mỗi request đến. Trong khi cách đó là ổn cho rất nhiều ứng dụng thì các mô hình dựa theo luồng không thể mở rộng một cách có hiệu quả với nhiều kết nối tồn tại lâu. Ví dụ như bạn muốn dùng các dịch vụ thời gian thực như Friendfeed hay Google Wave [3].
Node.js, sử dụng một sự kiện lặp thay cho các luồng, và nó có thể mở rộng lên hàng triệu kết nối một lúc. Điều này rất có lợi vì thực tế các máy chủ sử dụng phần lớn thời gian vào việc đợi các xử lý vào ra (ví dụ như đọc một file từ ổ cứng, truy vấn đến một dịch vụ web bên ngoài hoặc là đợi file được tải lên hoàn tất) bởi vì các xử lý đó chậm hơn rất nhiều so với xử lý bộ nhớ. Với kiến trúc hướng sự kiện thì lượng bộ nhớ dùng ít hơn, lưu lượng tăng cao và mô hình lập trình thì đơn giản hơn.
Mỗi một xử lý vào ra trong Node.js là không đồng bộ, nghĩa là máy chủ có thể tiếp tục xử lý các request đến trong khi các xử lý vào ra đang diễn ra. JavaScript mà một ngôn ngữ phù hợp cho việc lập trình hướng sự kiện bởi vì nó có các hàm không
SV: Trần Văn Vĩnh-Lớp 10CNTT4 Trang 19 đồng bộ và sự bao đống cái mà tạo ra một hàm callbacks đảm bảo. Mô hình hướng sự kiện khiến cho Node.js chạy rất nhanh và có thể triển khai và mở rộng cho các ứng dụng thời gian thực một cách dễ dàng. Một lợi ích lớn lao của Node.js đó là nó được viết bằng JavaScript. Nó cũng hỗ trợ các hệ NoSQL dùng JavaScript để truy vấn. Từ đây ta chỉ cần học một ngôn ngữ là JavaScript để thực thi từ phía trình duyệt, phía webserver và cả cho database server [3].