AJAX, viết tắt của Ansynchronous JAvascript and XML ("ansynchronous" có nghĩa là "không đồng bộ"), hay Advanced JAvascripting and XML. Cái tên Ajax được nhắc đến lần đầu tiên tại http:// www.adaptivepath.com và nhanh chóng được chấp nhận rộng rãi trong cộng đồng những người phát triển ứng dụng web và giờ đây nó đang được xem là một công nghệ hứa hẹn với các ứng dụng web .(Minh Dũng)
TỪ NHỮNG GIỚI HẠN CỦA CÁC ỨNG DỤNG WEB HIỆN TẠI …
Cách đây vài năm, khi dịch vụ web bùng nổ, người ta đã mơ tưởng đến một lúc nào đó tất cả các ứng dụng sẽ là các ứng dụng web thay vì các phần mềm chạy độc lập trên các máy tính đơn lẻ. Tuy nhiên, cho đến giờ, giấc mơ đó vẫn chưa thành sự thật và người ta bắt đầu nghĩ rằng, có lẽ nó sẽ không bao giờ trở thành sự thật. Tại sao vậy?
Một trong những giới hạn quan trọng của các ứng dụng web hiện tại là cách thức nó tương tác với người dùng. Khác với các phần mềm chạy độc lập ở máy khách có những khả năng dường như vô tận trong cách thức tương tác với người dùng, các ứng dụng web bị giới hạn bởi chính nguyên lý hoạt động của nó: tất cả các giao dịch phải thực hiện thông qua Giao thức truyền tải qua các siêu liên kết (HTTP).
Bên cạnh rào cản về cách thức tương tác, các ứng dụng web còn vấp phải nhiều giới hạn khác (mà việc phải hoạt động dựa trên các trình duyệt đã là một rào cản quan trọng), nếu rào cản đó được giải quyết thì các ứng dụng web chưa thể thay thể cho các phần mềm độc lập.
… ĐẾN HIỆN TƯỢNG GMAIL.
Gmail đem lại cho bạn cái cảm giác đang sử dụng một phần mềm hơn là một dịch vụ web: sử dụng bàn phím (không phải chuột) để chọn một hoặc nhiều email, nhấn nút "Archive" và ngay lập tức các email được bỏ vào hộp lưu trữ. Và nếu có email mới, bạn sẽ được thông báo ngay mà không cần phải tải lại trang web.
Gmail ra đời và nhanh chóng trở thành một hiện tượng - không chỉ ở chỗ nó là dịch vụ webmail đầu tiên cho miễn phí 1GB dung lượng mà còn ở chỗ cách nó thay đổi quan niệm truyền thống về cách thức thực hiện tương tác với người dùng của các ứng dụng web.
Google Map, Google Suggest, Flickr, BackCamp, Ta-da List - đó là một số những ứng dụng ra đời sau thành công của Gmail - tất cả đều hoạt động dựa trên một công nghệ đóng vai trò cốt lõi thực hiện các tương tác trung gian giữa người dùng và máy chủ: Nói Ajax là một công nghệ không hẳn đã đúng mà thực ra nó là sự kết hợp của một loạt các công nghệ khác nhau:
• XHTML+CSS với vai trò hiển thị thông tin.
• Mô hình tương tác và hiển thị động DOM (Document Object Model)
• Trao đổi và truy cập/tác động lên thông tin sử dụng XML và XSLT.
• Nhận thông tin không đồng bộ với đối tượng XMLHttp Request.
• Javascript với vai trò kết hợp 4 công nghệ trên lại với nhau.
Ajax không phải là một công nghệ mới, vì Ajax cũng sử dụng XMLHttpRequest, cũng như các công nghệ như DOM, XHTML, XML,…. Điểm khiến cho Ajax trở thành một hiện tượng chính là ở chỗ nó là một sự kết hợp hoàn hảo các công nghệ hoàn toàn khác nhau để giải quyết một vấn đề tưởng như không thể giải quyết - mà việc áp dụng lại rất đơn giản.
AJAX - SỰ KHÁC BIỆT
Ajax có thể giải quyết tốt được vấn đề tương tác người dùng của các ứng dụng web. Đó chính là cơ chế hoạt động của Ajax: nó đóng vai trò như là một lớp trung gian giữa giao diện bạn thấy trên trình duyệt và máy chủ xử lý thông tin. Có thể mô tả cách thức hoạt động của Ajax:
• Ajax thực hiện tương tác với máy chủ bằng cách sử dụng đối tượng XMLHttpRequest, nhận kết quả về dưới dạng XML và phân tích kết quả bằng công nghệ DOM.
• Tương tác giữa Ajax và giao diện người dùng được thực hiện thông qua các mã Javascript và XHTML + CSS.
Hai mô hình dưới đây minh họa 2 cơ chế làm việc hoàn toàn khác nhau: một bên là cơ chế của các ứng dụng web truyền thống và một bên là ứng dụng web sử dụng công nghệ Ajax.
Một trong những điểm mấu chốt của công nghệ Ajax là bạn không tương tác trực tiếp với máy chủ như cách truyền thống mà là qua một lớp trung gian của Ajax. Lý do là:
1) Không phải lúc nào bạn cũng cần phải tương tác với máy chủ. Như trong trường hợp của Gmail, một khi giao diện của Gmail đã được tải về xong (để ý khoảng thời gian ngắn từ khi bạn đăng nhập cho đến khi giao diện của Gmail xuất hiện) thì những tác vụ như chuyển từ thư mục này sang xem thư mục khác không nhất thiết phải hỏi lại máy chủ (tất nhiên với điều kiện dữ liệu đã có sẵn)
2) Bằng cách chỉ nhận những thông tin cần thiết (ở dạng XML), dung lượng truyền tải giữa máy tính của bạn và máy chủ sẽ giảm đi rất nhiều. Sau khi giao diện đã được tải về 1 lần, Ajax sẽ không cần phải tải lại toàn bộ giao diện đó mỗi khi tương tác với máy chủ. Thay vào đó, Ajax sẽ gởi yêu cầu đến máy chủ và nhận kết quả từ máy chủ về những gì đã thay đổi sau khi máy chủ thực hiện yêu cầu đó. Ajax sau đó sẽ thông báo cho phần giao diện (thông qua các lời gọi Javascript) thực hiện các thay đổi tương ứng trên giao diện.
3) Tương tác giữa phần giao diện và Ajax là tương tác nội bộ bên trong trình duyệt, giúp cho các thay đổi sẽ được thể hiện gần như tức thì.
Mô hình sau thể hiện những gì diễn ra giữa Giao diện ứng dụng web - Ajax - và máy chủ:
Để ý là chu kỳ tương tác giữa bạn và Ajax mang tính chất ngẫu nhiên và rất thường xuyên, trong khi đó các tương tác giữa Ajax và máy chủ xảy ra với một chu kỳ dài hơn nhiều.
AJAX VÀ ỨNG DỤNG CỦA NÓ
Có thể nói, kể từ khi cái tên "Ajax" ra đời đến nay, tiềm năng của nó vẫn chưa được đánh giá hết và các nhà phát triển web vẫn còn đang mày mò nghiên cứu tìm ra những ứng dụng của công nghệ này. Đến thời điểm hiện tại, đã có rất nhiều những ví dụ thể hiện khả năng đặc biệt của công nghệ này như các ứng dụng liệt kê ở đầu bài viết mà nổi bật nhất có thể kể đến Gmail và Google Map. Thử duyệt Google Map và chắc chắn bạn sẽ không khỏi bất ngờ trước những gì mà Ajax có thể làm được: thử phóng to, thu nhỏ, di chuyển quanh bản đồ trong Google Map - bạn gần như không phải đợi chút xíu nào; hình ảnh cứ xuất hiện thành một chuỗi liên tục như bạn đang xem bản đồ trên phần mềm ở máy mình vậy.
Tất nhiên, những ứng dụng như Gmail và Google Maps là những ví dụ vô cùng phức tạp của những ứng dụng của công nghệ Ajax. Tuy nhiên, Ajax không chỉ thể hiện ưu điểm của nó đối với các ứng dụng lớn như vậy. Bạn hoàn toàn có thể sử dụng Ajax cho những ứng dụng nhỏ hơn, thậm chí chỉ cho một số thành phần trong ứng dụng web của bạn để làm tăng khả năng tương tác với người dùng.
Có lẽ một trong những ứng dụng "nhỏ mà nổi tiếng" nhất của Ajax là tính năng "Live Search", bắt chước công nghệ Spotlight Apple mới giới thiệu trong phiên bản Mac OSX 10.4 Tiger. Gõ một ký tự vào ô tìm kiếm và một danh sách các kết quả xuất hiện ngay lập tức bên dưới, gõ thêm một ký tự nữa và danh sách đó tự động rút ngắn lại,…
Một số ứng dụng khác cũng khá phổ biến như:
1. Tính năng "Auto save" (lưu tự động): Sử dụng Ajax, bạn có thể bắt chước tính năng của các phần mềm soạn thảo tự động lưu những gì người dùng đã gõ được sau một khoản thời gian nhất định (sẽ thật tuyệt nếu như các trình webmail có tính năng này. Nếu bạn sử dụng Gmail, bạn có thể sử dụng tính năng này bằng cách tải về trình bổ sung)
2. Kiểm tra trùng lặp: bạn tạo ra một mẫu đơn đăng ký với yêu cầu là tên đăng nhập phải không bị trùng lặp với bất kỳ ai trong cơ sở dữ liệu. Thông thường, bạn sẽ bắt người dùng nhập hết thông tin và gửi đơn đăng ký lên máy chủ và rồi mới kiểm tra. Tại sao không kiểm tra ngay sau khi người dùng vừa mới chọn xong tên.
3. Dịch trực tuyến: bạn có thể sử dụng Ajax để tạo ra tính năng cho phép người dùng chỉ cần chọn một từ trên trang web của bạn và hiển thị từ tương ứng của các ngôn ngữ khác (sử dụng các dịch vụ của các trang tự điển)
4. Các trang bán hàng trực tuyến: cập nhật theo thời gian thực danh sách những gì người mua chọn và giá cả mà không cần phải tải lại trang web (ví dụ người dùng nhấn chọn thêm một mặt hàng, ngay lập tức nó xuất hiện trong danh sách bên cạnh và tổng giá tiền cũng sẽ được cập nhật tương ứng)
Hệ thống đánh giá ở các trang web nhạc số: Người dùng nhấn một nút đánh giá và ngay lập tức nó sẽ được cập nhật vào hệ thống (hai trang Nhạc Số và Nhạc Việt có lẽ nên tìm hiểu áp dụng kỹ thuật này)
… và còn rất nhiều những ứng dụng khác mà bạn sẽ phát hiện ra thêm khi phát triển các ứng dụng của riêng mình.
CÓ NÊN SỬ DỤNG AJAX?
Mặc dù giải quyết được nhiều vấn đề, nhưng công nghệ AJAX cũng lại tạo ra nhiều vấn đề phát sinh khác, tập trung chủ yếu về khả năng tiếp cận của người dùng:
1. Bạn không thể lưu lại địa chỉ trang web (bookmark) chứa nội dung nào đó được tải bằng công nghệ Ajax. Bản chất sử dụng một lớp trung gian để giao dịch khiến cho các ứng dụng web không có một địa chỉ nhất định cho từng nội dung (đây cũng là vấn đề bạn gặp khi sử dụng Frame trong thiết kế web). Một ví dụ rõ ràng nhất là bạn không thể nhấn nút "BACK" của trình duyệt để quay lại nội dung trước đó trong Gmail.
2. Bản chất của Ajax là không dung thứ ("forgiveless"), nên Ajax cho phép bạn thực hiện thay đổi ngay lập tức và đây cũng là là điểm yếu của Ajax. Chính vì bạn có thể thực hiện các thay đổi ngay lập tức, đôi khi người dùng chỉ vô tình cũng đã thay đổi dữ liệu trong cơ sở dữ liệu của bạn mà. Cách an toàn nhất là chỉ sử dụng Ajax để thực hiện các tác vụ kiểm tra mà không tác động trực tiếp đến dữ liệu, hoặc là bạn phải chắc chắn rằng mình cung cấp một cơ chế để khôi phục các lỗi vô tình, hoặc là bạn tạo ra một cơ chế để xác nhận mỗi khi hành động của người dùng có khả năng tạo ra những thay đổi dữ liệu.
3. Tương thích: Ajax chỉ hoạt động nếu trình duyệt hỗ trợ đối tượng XMLHttpRequest. Đây là vấn đề mà Gmail gặp phải đối với trình duyệt Opera trước khi Opera 8 ra đời. Tuy nhiên, đến thời điểm hiện tại thì các trình duyệt phổ biến nhất đều hỗ trợ XMLHttpRequest (Firefox, Internet Explorer, Opera 8, Sarafi). Cho dù vậy, hãy luôn xây dựng một cơ chế dự phòng trường hợp trình duyệt không hỗ trợ (ví dụ nếu người dùng sử dụng máy Palm,…)
4. Tương tác người dùng: Mặc dù Ajax giải quyết được một vấn đề then chốt về tương tác người dùng của các ứng dụng web, nó lại tạo ra một số vấn để nhỏ khác. Chính vì Ajax thực hiện tác vụ quá nhanh nên đôi khi người dùng không tin là nó đã được thực hiện! Tất nhiên đây đơn thuần là vấn đề về thói quen, tuy nhiên để đảm bảo khả năng tương tác ở mức tốt nhất, bạn nên có một cơ chế giúp xác nhận những gì đang diễn ra ở bên trong.
Chỉ mới xuất hiện trong một thời gian ngắn nhưng công nghệ Ajax đã tỏ ra hứa hẹn, và đến nay người ta vẫn chưa khám phá ra hết những gì công nghệ này có thể làm được.
(Bài viết có sử dụng thông tin tham khảo từ:
Ajax: A New Approach to Web Applications (AdaptivePath) )
(Cnth theo thnh)