Máy chủ ứng dụng

Phần mềm máy chủ ứng dụng (tiếng Anh: "Application Server") là một phần mềm (software engine) trong cung cấp ứng dụng phần mềm cho các máy trạm hoặc thiết bị, thông thường là qua mạng Internet sử dụng giao thức HTML. Máy chủ ứng dụng khác biệt với máy chủ Web thông qua việc sử dụng rất nhiều nội dung động do máy chủ tạo ra và tích hợp chặt chẽ tới máy chủ Cơ sở dữ liệu.

Phần mềm máy chủ ứng dụng đảm nhiệm phần lớn, nếu không nói là tất cả, các xử lý logic và truy cập CSDL của ứng dụng (hay còn gọi là tập trung hóa). Lợi ích chính của phần mềm máy chủ ứng dụng là sự dễ dàng trong phát triển ứng dụng do ứng dụng không cần được lập trình mà thay vào đó, chúng được nối rạp lại từ các cấu phần do máy chủ ứng dụng cung cấp. Ví dụ, Wiki là một phần mềm máy chủ ứng dụng cho phép người dùng tạo ra các nội dung động từ việc nối ráp các bài báo. Hơn nữa, Wikipedia là một bộ Wiki đã được ráp nối cung cấp một thư viện bách khóa được lưu trữ trên một hệ thống file và những thay đổi đối với bách khóa toàn thư được lưu trữ trong CSDL.

Phần mềm máy chủ ứng dụng chạy trên nhiều nền khác nhau và thuật ngữ này được áp dụng không chính thức cho hai loại ứng dụng phần mềm khác nhau. Thuật ngữ này được dùng để chỉ các phần mềm máy chủ của các ứng dụng trên nền Web, ví dụ như các nền tích hợp sử dụng trong thương mại điện tử, hệ thống quản lý nội dung, các bộ tạo web-site. Đồng thời, thuật ngữ này cũng được áp dụng như là đồng nghĩa với nền tảng ứng dụng Web (web application framework).

== Các đặc điểm chung ==
Các sản phẩm phần mềm máy chủ ứng dụng thường sử dụng các phần mềm trung gian (middleware) để hỗ trợ ứng dụng giao tiếp lẫn nhau giữa các ứng dụng phụ thuộc như máy chủ Web, hệ thống CSDL và các phần mềm vẽ biểu đồ. Một số phần mềm máy chủ ứng dụng cung cấp API (giao diện lập trình ứng dụng) cho phép chúng độc lập với hệ điều hành. Cổng điện tử (portal) là một cơ chế phần mềm máy chủ ứng dụng phổ biến cung cấp một điểm truy cập tới nhiều ứng dụng khác nhau.

== Lịch sử ==
Các ứng dụng, trong lịch sử, được lưu trữ trên các máy tính lớn (mainframe) và được chuyển tới các trạm truy cập (terminal). Chỉ có các tổ chức lớn, như chính phủ, ngân hàng và các tập đoàn lớn mới có thể có các trang thiết bị và nhân lực để hỗ trợ máy chủ lớn. Thập kỷ 60 chứng kiến sự xuất hiện của các máy tính mini. Máy tính mini nhỏ, yếu và rẻ hơn nhiều so với máy chủ lớn. Tuy vậy, các trạm truy cập vẫn được sử dụng để giao tiếp với ứng dụng.

Tiếp theo sự xuất hiện của máy tính cá nhân vào thập kỷ 80, và cụ thể hơn là giao diện đồ họa vào thập kỷ 90, mô hình tính toán máy chủ-máy trạm được phát triển. Trong kiến trúc máy chủ-máy trạm, ứng dụng được lưu trữ trên máy chủ và máy trạm đóng vai trò giao diện người dùng. Trong kiến trúc này, giao diện người dùng là một phần mèm máy tính chạy độc lập với máy chủ CSDL. Mặc dù điều này giải phóng máy chủ CSDL khỏi việc phải đồng thời xử lý dữ liệu vào giao diện người dùng, người quản trị lại phải cập nhật phần mềm máy trạm trên mỗi máy cá nhân khi cần thực hiện bất kỳ thay đổi nào.

Tiếp theo sự xuất hiện của Internet vào giữa thập kỷ 90, mô hình phần mềm máy chủ ứng dụng được phát triển. Máy chủ ứng dụng là sự qua trở lại của thời đại tính toán trên máy chủ lớn theo nghĩa cả phần mềm và giao diện được lưu trữ trên máy chủ. Sự khác nhau là máy trạm là một máy cá nhân sử dụng trình duyệt web. Máy chủ gửi các chỉ thị liên quan tới giao diện kèm với dữ liệu tới máy trạm. Phần mềm máy chủ ứng dụng lưu trữ các chỉ thị về giao diện người dùng trong các module giao diện và được gắn cho các dạng thức dữ liệu khác nhau. Khi một cấu phần của CSDL có một dạng thức dữ liệu cụ thể được yêu cầu, phần mềm máy chủ ứng dụng gửi các chỉ thị của module cùng với dữ liệu được yêu cầu tới máy trạm.

== Phần mềm máy chủ ứng dụng Java ==
Tiếp theo thành công của nền Java, thuật ngữ phần mềm máy chủ ứng dụng đôi khi được dùng để chỉ Java Platform—Enterprise Edition (J2EE) hay Java EE 5 application server. Một số Phần mềm máy chủ ứng dụng Java phiên bản Enterprise nổi tiếng là WebLogic Server (BEA), JBoss (Red Hat), WebSphere Application Server và WebSphere Application Server Community Edition (IBM), JRun (Adobe), Apache Geronimo (Apache Software Foundation), Oracle OC4J (Oracle Corporation), Sun Java System Application Server (Sun Microsystems), SAP Web Application Server và Glassfish Application Server (dựa trên Java System Application Server của SUN).

JOnAS application server là phần mềm máy chủ ứng dụng mã nguồn mở đầu tiên đạt được chứng chỉ chính thức về tuân thủ các chuẩn Java Enterprise. BEA cung cấp phần mềm máy chủ ứng dụng được Java EE xác nhận đầu tiên và tiếp theo là triển kai tham chiếu GlassFish của Sun Microsystems.

Module Web modules là servlets và JavaServer Pages, và logic kinh doanh được xây dựng trong Enterprise JavaBeans (EJB-3 và các phiên bản tiếp theo). Dự án Hibernate cho phép triển khai EJB-3 cho JBoss Application server. Tomcat của Apache và JOnAS của ObjectWeb là các nền mà các module này có thể được chạy.

Java Server Page (JSP) là một servlet từ Java chạy các Web container—thuật ngữ của java tương đương với CGI scripts. JSP là một cách để tạo trang HTML thông qua việc chèn các tham chiếu tới logic của máy chủ trong cùng trang web. Các nhà lập trình HTML và Java có thể làm việc đồng thời và tham chiếu mã lệnh của nhau từ mã lệnh của mình. JavaBeans là các cấu phần lớp độc lập của kiến trúc Java do Sun Microsystems xây dựng.

Các phần mềm máy chủ ứng dụng nêu trên chủ yếu phục vụ các ứng dụng Web. Một số phần mềm máy chủ ứng dụng khác phục vụ các mạng khác. Ví dụ Máy chủ SIP (Session Initiated Protocol) phục vụ các mạng thoại (telephone)

== Nền Microsoft ==
Đóng góp của Microsoft cho phần mềm máy chủ ứng dụng là.NET Framework. Công nghệ này bao gồm Windows Communication Foundation.NET Remoting, Microsoft Message Queuing, ASP.NET, ADO.NET, và Internet Information Services.và Apache Server cũng là một phần mềm kèm theo của ứng dụng máy chủ Internet Information Services.

== Các nền khác ==
Cũng có các nhà cung cấp khác cung cấp máy chủ ứng dụng mã nguồn mở. Ví dụ bao gồm Appaserver, Base4 và Zope.

Các giải pháp không dựa trên nền Java thường không có các tiêu chuẩn về tương thích. Vì vậy, tương thích giữa các sản phẩm không dựa trên Java kém hơn so với các sản phẩm dựa trên Java EE. Để giải quyết nhược điểm này các tiêu chuẩn về tích hợp ứng dụng doanh nghiệp và kiến trúc hướng dịch vụ (SOA) được xây dựng để kết nối các sản phẩm khác nhau. Các tiêu chuẩn này bao gồm Giao diện lập trình ứng dụng doanh nghiệp (BAPI), Tương thích dịch vụ Web (Web Service Interoperability) và Kiến trúc kết nối Java EE (Java EE Connector Architecture).

=== Ưu điểm của phần mềm máy chủ ứng dụng ===
==== Toàn vẹn dữ liệu và mã nguồn ====
Thông qua tập trung các xử lý logic vào một hoặc một số nhỏ máy chủ phần cứng, cập nhật và nâng cấp đối với ứng dụng cho tất cả mọi người dùng có thể được đảm bảo. Không hề có rủi ro về các phiên bản cũ của ứng dụng truy cập và thay đổi thông tin thông tin theo cách cũ và không tương thích.

==== Tập trung cấu hình ====
Thay đổi đối với cấu hình ứng dụng, ví dụ thay đổi máy chủ CSDL hay cấu hình hệ thống, có thể được thực hiện tập trung

==== An ninh ====
Một điểm quản lý tập trung đối với truy cập tới dự liệu và ứng dụng được coi là lợi ích về an ninh, chuyển trách nhiệm về xác thực khỏi lớp máy trạm có nhiều rủi ro mà không lộ lớp CSDL.

==== Hiệu suất ====
Thông qua giới hạn lưu lượng mạng chỉ để thực hiện các lưu lương hiển thị, người ta cho răng mô hình máy chủ - máy trạm cải thiện hiệu suất trong các ứng dụng lớn trong môi trường sử dụng nhiều.

==== Tổng chi phí sở hữu (TCO) ====
Tóm lại, các lợi ích nêu trên được cho là thể hiện tiết kiệm về chi phí cho công ty khi phát triển các ứng dụng doanh nghiệp. Tuy nhiên, trên thực tế, thách thức về kỹ thuật liên quan tới phát triển phần mềm tuân thủ theo các chuẩn đồng thời đảm bảo yêu cầu về phân phối phần mềm giảm phần nào những lợi ích này