(Post 21/03/2006) Đề tài kỹ thuật vốn luôn
khô khan và không mấy thú vị, nhưng những câu chuyện về quá trình phát
triển của AJAX trong không gian ứng dụng Internet đa phương tiện đã tạo
nên sức hút khó tin xuyên suốt năm 2005.
Thế hệ Web
2.0 chỉ vừa bắt đầu và sẽ phải trải qua cả một chặng đường dài phía
trước để có thể thay đổi những gì vốn đã trở nên quen thuộc với mọi người
hiện nay. Đóng vai trò then chốt trong giai đoạn thứ hai của web là tổ
hợp công nghệ AJAX. Dù thế giới chưa thực sự sẵn sàng đón nhận, nhiều
người cho rằng các ứng dụng AJAX đang phát triển còn nhanh hơn cả định
luật Moore - động lực thúc đẩy ngành điện toán gốc.
AJAX là gì?
AJAX, viết tắt từ Asynchronous JavaScript and XML (JavaScript
và XML không đồng bộ), là bộ công cụ cho phép tăng tốc độ ứng dụng web
bằng cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì
tải đi tải lại toàn bộ trang web. AJAX không phải một công nghệ đơn lẻ
mà là sự kết hợp một nhóm công nghệ với nhau. Trong đó, HTML và CSS đóng
vai hiển thị dữ liệu, mô hình DOM trình bày thông tin động, đối tượng
XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủ web, còn XML
là định dạng chủ yếu cho dữ liệu truyền. Đây đều là công nghệ sẵn có nhưng
Javacript đã lắp ráp chúng lại để thực hiện những "sứ mệnh"
đáng khâm phục.
Hầu hết các câu chuyện về nguồn gốc của AJAX được bắt
đầu từ khi Microsoft phát triển công nghệ Remote Scripting vào năm 1998.
Tuy nhiên, phương pháp tải không đồng bộ nội dung trên một trang web đã
xuất hiện trong thành tố IFRAME của Internet Explorer 3 (1996) và thành
tố LAYER của Netscape 4.0 năm 1997. Khi giới thiệu Internet Explorer 4.0,
Microsoft đã sử dụng mô hình đối tượng tài liệu DOM khác biệt. Đến năm
2000, Netscape hoàn toàn đánh mất thị trường trình duyệt vào tay hãng
phần mềm của Bill Gates và thành tố LAYER cũng không còn được các chuyên
gia phát triển web chú ý tới.
Phải vài năm sau, AJAX mới lại lôi kéo được sự quan tâm
của giới công nghệ và trở thành công cụ cải tiến giao diện người dùng
cho ứng dụng web. Thuật ngữ này cũng chỉ mới xuất hiện cách đây 1 năm
(tháng 2/2005) trong bài viết nổi tiếng của Jesse James Garrett trên trang
Adaptive Path. Từ đó, AJAX trở thành trung tâm trong mọi câu chuyện liên
quan đến thế hệ Web 2.0.
AJAX hoạt động như thế nào?
Ứng dụng web truyền thống
(trái) và ứng dụng AJAX. (Adaptive Path) |
|
Từ lâu, mọi người đã tưởng tượng ứng dụng máy tính rồi
sẽ được lưu và chạy hoàn toàn trên web thay vì nằm bó buộc trong ổ cứng.
Dù vậy, viễn cảnh đó vẫn chưa thể xảy ra do ứng dụng web bị hạn chế bởi
nguyên lý rằng tất cả các thao tác phải được thực hiện thông qua HTTP
(HyperText Transfer Protocol - Giao thức truyền tải qua siêu liên kết).
Những hoạt động của người sử dụng trên trang web sẽ tạo ra một yêu cầu
HTTP tới server. Máy chủ thực hiện một số khâu xử lý như lấy lại dữ liệu,
tính toán, kiểm tra sự hợp lệ của thông tin, sửa đổi bộ nhớ, sau đó gửi
lại một trang HTML hoàn chỉnh tới máy khách. Về mặt kỹ thuật, phương pháp
này nghe có vẻ hợp lý nhưng cũng khá bất tiện và mất thời gian, bởi khi
server đang thực hiện vai trò của nó thì người dùng sẽ làm gì? Tất nhiên
là chờ đợi.
Để khắc phục hạn chế trên, các chuyên gia phát triển
giới thiệu hình thức trung gian - cơ chế xử lý AJAX - giữa máy khách và
máy chủ. Điều này giống như việc tăng thêm một lớp giữa cho ứng dụng để
giảm quá trình "đi lại" của thông tin và giảm thời gian phản
ứng. Thay vì tải lại (refresh) toàn bộ một trang, nó chỉ nạp những thông
tin được thay đổi, còn giữ nguyên các phần khác. Vì thế, khi duyệt một
trang hỗ trợ AJAX, người sử dụng không bao giờ nhìn thấy một cửa sổ trắng
(blank) và biểu tượng đồng hồ cát - dấu hiệu cho thấy máy chủ đang thực
hiện nhiệm vụ. Ví dụ, trong một website ảnh, với ứng dụng truyền thống,
toàn bộ trang chứa các ảnh sẽ phải mở lại từ đầu nếu có một thay đổi nào
đó trên trang. Còn khi áp dụng AJAX, DHTML chỉ thay thế đoạn tiêu đề và
phần vừa chỉnh sửa, do vậy tạo nên các giao dịch trơn tru, nhanh chóng.
Tương tác đồng bộ trong ứng dụng web truyền thống (trên) và dị bộ trong ứng dụng AJAX. (Adaptive Path) |
|
"Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript
tới bộ xử lý AJAX, thay vì tạo ra một yêu cầu HTTP (HTTP request) và truy
vấn tới máy chủ", Jesse James Garrett đã ghi trong bài viết đầu tiên
định nghĩa về thuật ngữ này. "Nếu cần gì từ server, như tải về bổ
sung mã giao diện hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy
chủ một cách không đồng bộ, thông thường sử dụng XML, mà không làm gián
đoạn sự tương tác của người dùng với ứng dụng web".
Các ứng dụng AJAX phổ biến
Google
Suggest hiển thị các thuật ngữ gợi ý gần như ngay lập tức khi người
sử dụng chưa gõ xong từ khóa. Còn với Google
Maps, mọi người có thể theo dõi những thay đổi, xê dịch, kéo thả bản
đồ như trên môi trường desktop. Google Suggest và Google Maps là hai ví
dụ nổi bật về phương pháp ứng dụng web thế hệ mới. Hãng dịch vụ tìm kiếm
hàng đầu thế giới đã đầu tư rất nhiều vào việc phát triển AJAX. Hầu như
mọi chương trình họ giới thiệu gần đây, từ Orkut,
Gmail đến phiên bản thử nghiệm Google
Groups, đều là những ứng dụng AJAX.
Nhiều công ty khác cũng đang nối gót xu thế này như trang
chia sẻ ảnh
Flickr (hiện thuộc Yahoo) hay công cụ tìm kiếm A9.com của Amazon.
Yahoo dự định trong vài tuần tới sẽ ra mắt bản Yahoo Mail Beta 1 sử dụng
AJAX trên toàn thế giới (đang được thử nghiệm giới hạn). Hòm thư mới sẽ
được trang bị thêm nhiều tính năng thuộc Web 2.0 như RSS,
chế độ xem thư trước (preview)... Microsoft cũng đang triển khai chương
trình Windows
Live Mail và Windows
Live Messenger hỗ trợ AJAX.
Những dự án trên cho thấy AJAX không phải là một công
nghệ quá xa xôi mà đang hiện diện ngay trong thế giới thực, từ mô hình
rất đơn giản như Google Suggest đến tinh vi và phức tạp như Google Maps.
Thách thức lớn nhất khi tạo ứng dụng AJAX không nằm ở
khâu kỹ thuật bởi những thành phần của nó đã xuất hiện từ lâu, hoạt động
ổn định và được hiểu người biết đến. Vấn đề ở đây chỉ là "các chuyên
gia thiết kế cần quên đi những giới hạn của web, bắt đầu nghĩ rộng hơn,
sâu hơn về khả năng của công nghệ và sáng tạo nó theo cách riêng của mỗi
người", Alexei White, Giám đốc sản xuất của công ty eBusiness (Mỹ),
nhận xét. "AJAX sẽ làm mất dần ảnh hưởng của Microsoft trên thị trường.
Tuy chưa thể lấn át hoàn toàn, nó sẽ mang lại những tính năng thay thế
cho hầu hết các sản phẩn như Office".
Những nhược điểm của AJAX
AJAX có thể góp phần tạo nên một thế hệ mới cho ứng dụng
web (như colr.org hay backpackit.com). Tuy nhiên, nó cũng là một công
nghệ "nguy hiểm" khi gây ra không ít rắc rối về giao diện người
dùng. Chẳng hạn, phím "Back" (trở lại trang trước) được đánh
giá cao trong giao diện website chuẩn. Đáng tiếc, chức năng này không
hoạt động ăn khớp với Javascript và mọi người không thể tìm lại nội dung
trước đó khi bấm phím Back. Bởi vậy, chỉ một sơ xuất nhỏ là dữ liệu trên
trang đã bị thay đổi và khó có thể khôi phục lại được. Đây là một trong
những nguyên nhân chính khiến nhiều người không ủng hộ ứng dụng Javascript.
Bên cạnh đó, mọi người không thể lưu lại địa chỉ web
vào thư mục Favorite (Bookmark) để xem lại về sau. Do áp dụng lớp trung
gian để giao dịch, các ứng dụng AJAX không có một địa chỉ cố định cho
từng nội dung. Khiếm khuyết này làm cho AJAX dễ "mất điểm" trong
mắt người dùng.
Những trình duyệt hỗ trợ AJAX là Microsoft
Internet Explorer 5.0 trở lên; browser dựa trên Gecko như Mozilla, Firefox,
SeaMonkey, Epiphany, Galeon và Netscape 7.1; trình duyệt chứa KHTML API
3.2 trở lên như Konqueror, Apple Safari...
CSS - tập tin định kiểu theo
tầng (Cascading Style Sheets) - được dùng để miêu tả cách trình
bày các tài liệu viết bằng ngôn ngữ HTML, XHTML, XML, SVG, XUL...
Các thông số kỹ thuật của CSS do tổ chức World Wide Web Consortium
(W3C) quản lý.
DOM - mô hình đối tượng tài liệu
(Document Object Model) - là một giao diện lập trình ứng dụng (API).
Thông thường DOM có dạng một cây cấu trúc dữ liệu và được dùng để
truy xuất các tài liệu HTML và XML. Mô hình DOM hoạt động độc lập
với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng
để mô tả tài liệu.
DHTML, hay HTML động, tạo một
trang web bằng cách kết hợp các thành phần: ngôn ngữ đánh dấu HTML
tĩnh, ngôn ngữ lệnh máy khách (như Javascript) và ngôn ngữ định
dạng CSS và DOM. Do có khả năng phong phú, DHTML còn được dùng như
một công cụ xây dựng các trò chơi đơn giản trên trình duyệt.
|
Hải Nguyên
(theo Adaptive Path, Wikipedia, CNet) |