Trong
kỹ thuật phần mềm, một
Ứng dụng web hay
webapp
là một
trình ứng dụng mà có thể tiếp cận qua web thông qua mạng
như
Internet hay
intranet.
Ứng dụng web phổ biến nhờ vào sự có mặt vào
bất cứ nơi đâu của một chương trình. Khả năng cập nhật và
bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần
mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến
của nó. Ứng dụng web được dùng để hiện thực
Webmail,
bán hàng trực tuyến,
đấu giá trực tuyến,
wiki,
diễn đàn thảo luận,
Weblog,
MMORPG,
Hệ quản trị quan hệ khách hàng và nhiều chức năng khác.
Lịch sử
Trong dạng tính toán
chủ-khách trước đây, mỗi ứng dụng có chương trình khách
riêng của nó sẽ phục vụ như
giao diện người dùng và phải được cài đặt riêng rẽ trên
mỗi
máy tính cá nhân của người dùng. Sự nâng cấp phần máy
chủ của ứng dụng sẽ cần nâng cấp tất cả máy khách đã được
cài trên mỗi máy trạm người dùng, thêm vào đó là chi phí
hỗ trợ và giảm
năng suất.
Ngược lại, ứng dụng web linh hoạt tạo ra một loạt các
tài liệu Web ở định dạng chuẩn được hỗ trợ bởi những
trình duyệt phổ biến như
HTML/XHTML.
Ngôn ngữ kịch bản phía người dùng ở dạng ngôn ngữ chuẩn
như
JavaScript thường được thêm vào để có thêm những yếu tố
động trong giao diện người dùng. Nói chung, mỗi trang Web
đơn lẻ được gửi tới người dùng như một tài liệu ổn định,
nhưng thứ tự các trang có thể cung cấp cảm giác trực quan,
khi những gì người dùng nhập vào sẽ được trả về thông qua
thành phần
mẫu
Web được nhúng vào trong đánh dấu trang. Trong quá trình
giao dịch đó, trình duyệt Web sẽ thông dịch và hiển thị
trang, và hoạt động như một người dùng chung cho bất
kỳ ứng dụng Web nào.
Giao diện
Giao diện web đặt ra rất ít giới hạn khả năng người dùng.
Thông qua
Java,
JavaScript,
DHTML,
Flash và những công nghệ khác, những phương pháp chỉ ứng
dụng mới có như vẽ trên màn hình, chơi nhạc, và dùng được
bàn phím và chuột tất cả đều có thể thực hiện được. Những kỹ
thuật thông thường như
kéo thả cũng được hỗ trợ bởi những công nghệ trên. Những
nhà phát triển web thường dùng ngôn ngữ kịch bản phía người
dùng để thêm hiệu quả các tính năng, đặc biệt là tạo ra một
cảm giác giao tiếp trực quan mà không cần phải tải trang lại
(điều mà nhiều người dùng cảm thấy ngắt quãng). Vừa rồi,
những công nghệ đã được phát triển để phối hợp ngôn ngữ kịch
bản phía người dùng với công nghệ phía máy chủ như
PHP.
Ajax, một kỹ thuật phát triển web sử dụng kết hợp nhiều
công nghệ khác nhau, là một ví dụ về công nghệ hiện đang tạo
ra ngày càng nhiều trải nghiệm tương tác hơn.
Xem xét về mặt kỹ thuật
Một ưu thế đặc biệt của việc xây dựng ứng dụng Web để hỗ
trợ những tính năng chuẩn của trình duyệt đó là chúng sẽ
hoạt động như mong muốn bất kể hệ điều hành hay phiên bản hệ
điều hành nào được cài trên máy khách cho trước. Thay vì tạo
ra những chương trình khách cho
MS Windows,
Mac OS X,
GNU/Linux, và những
hệ điều hành khác, ứng dụng có thể được viết chỉ một lần
và triển khai mọi nơi. Tuy nhiên, sự hiện thực không được ổn
định của
HTML,
CSS,
DOM và những đặc tính trình duyệt khác có thể gây ra rắc
rối trong việc phát triển và hỗ trợ ứng dụng web. Thêm vào
đó, khả năng cho người dùng điều chỉnh nhiều cài đặt hiển
thị cho trình duyệt của họ (như chọn kích thước font, màu
sắc, và kiểu chữ, hoặc tắt tính năng script) có thể can
thiệp vào sự ổn định của ứng dụng web.
Một cách tiếp cận khác (ít phổ biến hơn) là dùng
Adobe Flash hoặc
Java applet để cung cấp một vài hoặc tất cả các giao
diện người dùng. Từ khi phần lớn trình duyệt web hỗ trợ
những công nghệ này (thường thông qua plug-in), những ứng
dụng dựa trên Flash hay Java có thể được hiện thực và triển
khai dễ dàng như nhau. Bởi vì chúng cho phép lập trình viên
quản lý chặt hơn giao diện, chúng vượt qua nhiều vấn đề về
cấu hình trình duyệt, mặc dù sự không tương thích giữa hiện
thực bằng Java hay Flash trên máy khách có thể tạo ra sự
phức tạp khác nhau. Vì sự tương tự về kiến trúc với chương
trình chủ-khách của chúng, gần với chương trình "dày", đã có
sự tranh luận về việc hệ thống đó có được gọi là "ứng dụng
Web" hay không; một thuật ngữ khác được đề nghị là "Ứng
dụng Internet phong phú".
Cấu trúc
Dù có nhiều biến thể, một ứng dụng Web thông thường được
cấu trúc như một ứng dụng
ba lớp. Ở dạng phổ biến nhất, một trình duyệt Web là lớp
thứ nhất, một bộ máy sử dụng một vài công nghệ nội dung Web
động (như
ASP,
ASP.NET,
CGI,
ColdFusion,
JSP/Java,
PHP,
Python, hoặc
Ruby On Rails) là lớp giữa, và một cơ sở dữ liệu là lớp
thứ ba. Trình duyệt sẽ gửi yêu cầu đến lớp giữa, lớp giữa sẽ
phục vụ bằng cách tạo ra truy vấn và cập nhật cơ sở dữ liệu
và tạo ra giao diện người dùng.
Dùng trong kinh doanh
Một chiến lược đang xuất hiện cho những công ty phần mềm
ứng dụng đó là cung cấp khả năng tiếp cận bằng Web cho phần
mềm trước đây được phân phối như các ứng dụng ở máy. Tùy
thuộc vào loại ứng dụng, nó có thể cần sự phát triển toàn bộ
giao diện dựa trên trình duyệt khác, hoặc chỉ thêm vào một
ứng dụng sẵn có để dùng công nghệ trình diễn khác. Những
chương trình hiện nay cho phép người dùng trả phí hàng tháng
hoặc hàng năm để sử dụng một phần mềm ứng dụng mà không phải
cài nó vào ổ cứng. Một công ty đi theo chiến lược này được
gọi là
nhà cung cấp dịch vụ ứng dụng (application service
provider - ASP), và các ASP hiện đang nhận được nhiều sự chú
ý trong ngành công nghiệp phần mềm.
Viết ứng dụng Web
Có nhiều
mô hình ứng Web rất thuận tiện cho sự phát triển phần
mềm mau chóng bằng cách cho phép lập trình viên định nghĩa
những mô tả cấp cao cho chương trình. Thêm vào đó, có những
tiềm năng cho sự phát triển của ứng dụng trên
Hệ điều hành Internet, mặc dù hiện nay không có nhiều mô
hình đang tồn tại phù hợp với kiểu mẫu này.
Việc sử dụng mô hình ứng dụng Web thường có thể giảm số
lỗi trong một chương trình, bằng cách làm cho mã nguồn đơn
giản hơn, hoặc bằng cách cho phép một nhóm chỉ tập trung vào
một mô hình duy nhất. Trong những ứng dụng thường bị phá
hoại trên Internet, những vấn đề liên quan đến bảo mật do
lỗi gây ra trong chương trình là một vấn đề lớn. Mô hình
cũng có thể đề nghị việc sử dụng những việc tốt nhất nên làm
như
GET after POST
Tổ chức Bảo mật Ứng dụng Web (Web Application Security
Consortium - WASC),
CGI Security, và
OWASP là những dự án được phát triển với dự định ghi lại
những tài liệu về làm thế nào để tránh những vấn đề bảo mật
trong ứng dụng Web.