Breaking away from the Page-based Architecture

Breaking away from the Page-based Architecture
Đối với các nhà phát triển web có kinh nghiệm, một trong những thách thức lớn nhất trong việc xây dựng các RIAs đó là tách khỏi kiến trúc dựa trên trang (page-based architechture). Các ứng dụng web truyền thống dựa trên khái niệm trang web (web page). Không cần biết những công nghệ nào (nếu có) được sử dụng ở phía server, quá trình hoạt động đi qua những bước như sau:
1.  Người dùng mở một trình duyệt và yêu cầu tải một trang web từ phía server.
2.  Web server nhận yêu cầu.
3.  (optional) Web server gửi yêu cầu cho một server ứng dụng để tổng hợp trang động, hoặc
4.  (optional) Web server nhận trang web tĩnh từ hệ thống file.
5.  Web server gửi trang (tĩnh hoặc động) trở lại trình duyệt.
6.  Trình duyệt vẽ trang vào nơi trước đây nội dung đã được hiển thị.
Thậm chí trong những tình huống mà phần lớn nội dung của trang trước giống với của trang mới, toàn bộ nội dung của trang mới vẫn cần phải được gửi cho trình duyệt để render. Đây là một trong những hạn chế của các ứng dụng web truyền thống: mọi tương tác người dùng đều cần phải tải một trang mới về trình duyệt. Một trong những mục đích then chốt của các RIAs đó là giảm lượng dữ liệu dư thừa cần phải được tải cho mỗi yêu cầu người dùng. Thay vì tải toàn bộ trang, tại sao lại không tải chỉ những dữ liệu đã thay đổi và cập nhật lại trang mà người dùng đang xem? Đây là cách mà các ứng dụng để bàn hoặc các ứng dụng client/server vẫn hoạt động.
Mặc dù mục đích này xem chừng đơn giản và đã được chấp nhận bởi các nhà phát triển RIA đầu tiên, nhưng các nhà phát triển web lại thường mang ý tưởng page-based để áp dụng cho các ứng dụng RIA và cố gắng tìm cách giải quyết những thách thức đến từ thế giới của page-based, chẳng hạn như làm thế nào để “duy trì trạng thái”. Ví dụ, sau khi người dùng đăng nhập, làm thế nào để biết họ là ai và họ được phép làm những gì khi điều hướng qua các phần khác nhau của ứng dụng?
Duy trì trạng thái từng là một thách thức cho các ứng dụng dựa trên web (web-based applications). HTTP đã được thiết kế như một giao thức không có trạng thái (stateless protocol), mà trong đó mỗi yêu cầu gửi đến server là một đơn vị hạt nhân không biết gì về các yêu cầu trước đó. Bản chất không trạng thái này của web tạo ra tính hiệu quả đáng kể vì một kết nối không cần phải luôn được mở giữa trình duyệt và server. Mỗi yêu cầu tải trang mới sẽ kết thúc khi server thực hiện xong việc nhận yêu cầu và gửi trang, cho phép một server có thể đồng thời quản lý được nhiều kết nối.
Bản chất không trạng thái của web đã tạo ra nhiều thách thức cho các nhà phát triển web. Thông thường, các ứng dụng cần phải ghi nhớ thông tin về người dùng: các quyền đăng nhập, các món đã được thêm vào giỏ hàng, v.v… Không có khả năng ghi nhớ thông tin này qua nhiều đợt yêu cầu tải trang, phát triển ứng dụng thực sự sẽ không thể thực hiện được. Để giải quyết vấn đề này, một loạt các giải pháp đã được thực hiện; liên quan đến việc gửi một thẻ bài duy nhất (unique token) trở lại server theo mỗi yêu cầu tải trang (thường là các cookies, các file văn bản nhỏ chứa các yếu tố nhận diện cụ thể ứng dụng cho mỗi người dùng) và để cho server lưu thông tin người dùng.
Không giống như các ứng dụng web truyền thống, các RIAs có thể vượt qua nhiều trở ngại trên. Bởi vì ứng dụng vẫn tồn tại trong RAM trong suốt thời gian nó được sử dụng (thay vì được tải và thôi tải như mô hình page-based), các biến có thể được thiết lập chỉ một lần và được truy cập trong suốt thời gian chạy ứng dụng.

Bình luận về bài viết này