Ứng dụng trên nền web (tiếng Anh Web-Based Application - WBA) là (phần mềm) ứng dụng hoạt động trên nền dịch vụ WWW, sử dụng kênh truyền tin của dịch vụ WWW để trao đổi thông tin giữa máy tính khách (client) và máy phục vụ (còn gọi là máy chủ - server).
Các ứng dụng “truyền thống” được cài đặt trên một máy tính và hoạt động trên nền hệ điều hànhcủa máy tính. Các ứng dụng theo mô hình Client - Server (khách – phục vụ hay khách - chủ) thì gồm hai phần cài đặt trên máy khách và trên máy phục vụ, và hoạt động tương ứng trên nền hệ điều hànhcủa máy khách và máy phục vụ; hai phần này trao đổi thông tin với nhau theo cách thức do phần mềm tự thiết lập. WWW là một dịch vụ được xây dựng theo mô hình Client - Server, phần mềm trên máy phục vụ là trình phục vụ web (Web Server, còn gọi là HTTP Server), phần mềm trên máy khách là trình duyệt hay trình duyệt web (Web Browser), hai phần này trao đổi thông tin với nhau theo cách thức đã được thiết lập gọi là giao thức truyền thông siêu văn bản (HTTP).
Ứng dụng trên nền web được xây dựng và cài đặt trên máy chạy trình phục vụ web, có khả năng trao đổi thông tin với trình phục vụ web và nhờ đó mà lấy được những thông tin từ trình duyệt trên máy khách gửi tới trình phục vụ web, cũng như gửi được thông tin tới máy client - qua trình phục vụ web - dưới dạng tài liệu siêu văn bản.
Với ứng dụng trên nền web, người dùng sử dụng một trình duyệt để gọi ứng dụng (truy cập vào địa chỉ web của ứng dụng). Giao diện người máy của ứng dụng là các form siêu văn bản (xt. Ngôn ngữ đánh dấu siêu văn bản). Mỗi khi người dùng thực hiện một tương tác có tính mệnh lệnh, mệnh lệnh này và tên ứng dụng xử lý dữ liêu cùng với dữ liệu kèm theo được trình duyệt gửi về trình phục vụ web, ứng dụng tương ứng được gọi đến, sẽ lấy các thông tin mệnh lệnh và dữ liệu từ trình phục vụ web, xử lý thông tin theo yêu cầu và sắp xếp dữ liệu trả lời dưới dạng siêu văn bản, gửi lại cho trình phục vụ web. Trình phục vụ web sẽ tự động chuyển chúng đến trình duyệt tương ứng mà ứng dụng không cần quan tâm nữa.
Để viết được phần mềm ứng dụng trên nền web, một cách cơ bản, người lập trình cần biết cách trình phục vụ web trao đổi thông tin với hệ điều hành: là sử dụng các biến môi trường riêng gọi là các biến môi trường giao tiếp cổng chung (Common Gateway Interface environment variables viết tắt là các biến CGI) và giao tiếp vào ra chuẩn (Standard Input/Output Interface).
Có khoảng 20 biến CGI, trong đó 3 biến cơ bản là:
- REQUEST_METHOD: chứa giá trị là xâu GET hay POST.
- QUERY_STRING: chứa xâu thông tin gửi về từ trình duyệt khi REQUEST_METHOD là GET. Xâu thông tin này có độ dài không quá 255 ký tự.
- CONTENT_LENGTH: chứa xâu ký tự dạng số hệ thập phân, là độ dài xâu ký tự mà trình duyệt gửi về, ở giao tiếp vào chuẩn (stdin), khi REQUEST_METHOD là POST. Trong trường hợp này, không có hạn chế nào về độ dài xâu thông tin mà trình duyệt gửi về trình phục vụ web.
Những biến CGI khác lưu trữ những thông tin có thể cần đến như tên, phiên bản của trình phục vụ web; tên, phiên bản của trình duyệt; IP của máy khách, …
Để gửi thông tin cho trình phục vụ web, ứng dụng chỉ cần gửi thông tin tới giao tiếp ra chuẩn (sdtout).
Về nguyên lý, bất cứ ngôn ngữ lập trình nào (hỗ trợ giao tiếp vào ra chuẩn và lấy được biến môi trường) đều có thể sử dụng để viết phần mềm ứng dụng trên nền web. Tuy nhiên vì việc phát triển ứng dụng trên nền web là định hướng trở nên phổ biến, người ta đã xây dựng những ngôn ngữ lập trình chuyên dụng cho việc viết phần mềm ứng dụng trên nền web, chúng đều là những ngôn ngữ lập trình thông dịch, gần gũi với những ngôn ngữ lập trình phổ biến (C, BASIC, …); Trong số đó được dùng phổ biến nhất là PHP (phần mềm nguồn mở, rất gần với C), Perl (phần mềm nguồn mở, rất gần với Unix Shell), ASP (của Microsoft rất gần với BASIC, chỉ hoạt động được với trình phục vụ web của Microsoft trên hệ điều hànhMS Windows), JAVA, … Với những ngôn ngữ này người lập trình không cần quan tâm đến việc lấy giá trị các biến CGI.
Các phản hồi của ứng dụng trên nền web cho phía khách, luôn phải được chuẩn bị dưới dạng tài liệu siêu văn bản, trong đó có thể đóng gói các mô đun kịch bản và thường được viết bằng JavaScript hay VBScript. Những kịch bản này sẽ được chạy trên nền trình duyệt web tạo ra khả năng xử lý dữ liệu phía khách; từ đơn giản nhất là tạo ra các bẫy sự kiện, kiểm tra tính hợp lệ của dữ liệu được nhập và tương tác đơn giản; đến mức phức tạp hơn như thay đổi trực tiếp một đối tượng trong siêu văn bản đang hiển thị. Phức tạp hơn nữa là gửi yêu cầu về trình phục vụ web để gọi một mô đun ứng dụng, lấy dữ liệu làm mới một đối tượng nào đó trong siêu văn bản đang hiển thị mà không cần phải tải lại toàn bộ siêu văn bản – đây chính là tư tưởng của kỹ thuật Ajax (Asynchronous JavaScript and XML - JavaScript và XML không đồng bộ) – một kỹ thuật giúp cho các ứng dụng trên nền web có tính tương tác cao hơn, nhanh nhẹn và sinh động hơn.
Về mặt an ninh, việc xây dựng các ứng dụng trên nền web cũng phải tuân thủ các yêu cầu như đối với những ứng dụng “truyền thống”. Những khác biệt phải chú ý, nằm ở hai vấn đề: Vấn đề thứ nhất là bảo mật dữ liệu trên đường truyền Internet, vấn đề này phải được thực hiện thông qua các thiết lập đối với trình phục vụ web, bao gồm cả việc chỉ định dùng giao thức https (http secure – giao thức truyền thông siêu văn bản bảo mật) thay cho http. Vấn đề thứ hai đến từ đặc điểm không duy trì kết nối liên tục của ứng dụng do hoạt động trên nền web (giao dịch giữa người dùng và trình phục vụ web được thực hiện qua các phiên kết nối rất ngắn): phải tổ chức lưu trữ và bảo mật dữ liệu trung gian giữa các phiên kết nối. Tùy từng trường hợp mà các giải pháp trường thông tin ẩn hay cookie hay session được sử dụng. Trường thông tin ẩn là giải pháp lưu dữ liệu trung gian ẩn ngay trong trang siêu văn bản. Cookie là giải pháp lưu dữ liệu tạm thời trên đĩa cứng của máy khách trong khi session là giải pháp lưu trữ thông tin ngay trên máy phục vụ.
Nguyên lý của mô hình phát triển ứng dụng trên nền web phát sinh một cách nội tại từ cấu trúc dịch vụ WWW. Tuy nhiên ứng dụng trên nền web chỉ thực sự trở nên sinh động từ năm 1995, khi Netscape giới thiệu JavaScrip từ năm 1995, một năm sau khi HTTPS được đề xuất cũng chính bởi Netscape và CSS được đề xuất bởi Hakon Wiun Lie. CSS hỗ trợ định dạng trình diễn siêu văn bản một cách có hệ thống và chuyên nghiệp, còn JavaScrip hỗ trợ các kịch bản xử lý dữ liệu trên máy khách. Ý tưởng về Ajax được hình thành từ khoảng năm 1998 khi các nhóm phát triển của Microsoft đưa ra khái niệm tiền thân của đối tượng XMLHttpRequest – đối tượng hỗ trợ trao đổi thông tin giữa một kịch bản JavaScript và trình phục vụ web. Các kỹ thuật này ngay sau đó đã được Google triển khai thành công trên các ứng dụng thư điện tử và bản đồ của họ. Tuy nhiên thuật ngữ Ajax đến năm 2005 mới chính thức được Jesse James Garrett sử dụng trong một bài báo nói về các kỹ thuật của Google. Năm 2006 W3C đã công bố bản đặc tả chính thức về đối tượng XMLHttpRequest.
Mô hình phát triển ứng dụng trên nền web tạo ra khả năng phát triển những ứng dụng có thể được sử dụng từ khắp mọi nơi qua các máy tính kết nối Internet. Vì vậy ngày nay hầu hết các ứng dụng đều được xây dựng theo mô hình này. Quen thuộc nhất với đông đảo người dùng Internet là các ứng dụng web mail (như google mail, yahoo mail, …), các ứng dụng bản đồ trực tuyến, các mạng xã hội, các dịch vụ bán hàng trực tuyến, các báo điện tử, các dịch vụ công và cả các ứng dụng quản lý trong mỗi cơ quan.
Tài liệu tham khảo[sửa]
- William E. Weinman, The CGI Book, New Rides Publishing, 1996.
- Peter Kent, Netscape Javascript, Ventana Pr, Subsequent Edition (June 1, 1997).
- John Gosney, ASP Programming, Premier Press, Inc., 2002.
- Steve Suehring, Janet Valade, PHP, MySQL®, JavaScript® &HTML5 All-in-One, John Wiley & Sons, Inc., 2013.