Sự khác biệt giữa máy chủ ứng dụng và máy chủ web là gì?
Sự khác biệt giữa máy chủ ứng dụng và máy chủ web là gì?
Câu trả lời:
Hầu hết các thuật ngữ này Máy chủ Web và Máy chủ ứng dụng được sử dụng thay thế cho nhau.
Sau đây là một số khác biệt chính về tính năng của Máy chủ Web và Máy chủ ứng dụng:
Ví dụ về cấu hình như vậy là Máy chủ HTTP Apache Tomcat và Máy chủ WebLogic của Oracle (trước đây là BEA). Máy chủ HTTP Tomcat của Apache là Máy chủ Web và Oracle WebLogic là Máy chủ ứng dụng.
Trong một số trường hợp, các máy chủ được tích hợp chặt chẽ như IIS và .NET Runtime. IIS là máy chủ web. Khi được trang bị môi trường thời gian chạy .NET, IIS có khả năng cung cấp các dịch vụ ứng dụng.
Đây là một câu trả lời chi tiết với một số tình huống để hiểu rõ sự khác biệt, giống nhau và làm thế nào cả hai có thể làm việc cùng nhau và tất cả
Máy chủ ứng dụng là một thuật ngữ đôi khi được trộn lẫn với một máy chủ web . Mặc dù máy chủ web xử lý chủ yếu các giao thức HTTP , máy chủ ứng dụng xử lý một số giao thức khác nhau, bao gồm, nhưng không giới hạn, đối với HTTP .
Công việc chính của máy chủ Web là hiển thị nội dung trang và máy chủ ứng dụng chịu trách nhiệm về logic , sự tương tác giữa người dùng và nội dung được hiển thị. Máy chủ ứng dụng đang hoạt động cùng với máy chủ web, nơi một máy chủ hiển thị và một máy chủ khác tương tác.
Thông tin di chuyển qua lại giữa máy chủ và máy khách của nó không bị giới hạn ở đánh dấu hiển thị đơn giản, mà là tương tác giữa hai máy chủ.
Trong hầu hết các trường hợp, máy chủ tạo tương tác này thông qua API thành phần , chẳng hạn như J2EE (Nền tảng Java 2) , EJB (Enterprise JavaBean) và các mô hình phần mềm ứng dụng khác nhau.
Một ví dụ:
Cách tốt nhất để hiểu sự khác biệt giữa các kịch bản trong đó máy chủ ứng dụng làm việc với máy chủ web so với kịch bản không có máy chủ ứng dụng là thông qua một cửa hàng trực tuyến.
Kịch bản 1: Máy chủ web không có máy chủ ứng dụng
bạn có một cửa hàng trực tuyến chỉ có một máy chủ web và không có máy chủ ứng dụng. Trang web sẽ cung cấp màn hình hiển thị nơi bạn có thể chọn sản phẩm. Khi bạn gửi một truy vấn, trang web sẽ thực hiện tra cứu và trả lại kết quả HTML cho khách hàng của nó. Máy chủ web gửi truy vấn của bạn trực tiếp đến máy chủ cơ sở dữ liệu (hãy kiên nhẫn, tôi sẽ giải thích câu hỏi này trong nugget tiếp theo của chúng tôi) và chờ phản hồi. Sau khi nhận được, máy chủ web sẽ tạo phản hồi thành tệp HTML và gửi nó đến trình duyệt web của bạn. Giao tiếp qua lại giữa máy chủ và máy chủ cơ sở dữ liệu này xảy ra mỗi khi truy vấn được chạy.
Kịch bản 2: Máy chủ web có máy chủ ứng dụng
nếu truy vấn bạn muốn chạy đã được thực hiện trước đó và không có dữ liệu nào thay đổi kể từ đó, máy chủ sẽ tạo kết quả mà không phải gửi yêu cầu đến máy chủ cơ sở dữ liệu. Điều này cho phép truy vấn thời gian thực trong đó máy khách thứ hai có thể truy cập cùng thông tin và nhận thông tin đáng tin cậy, thời gian thực mà không cần gửi truy vấn trùng lặp khác đến máy chủ cơ sở dữ liệu. Về cơ bản, máy chủ hoạt động như một trung gian giữa máy chủ cơ sở dữ liệu và máy chủ web. Điều này cho phép thông tin được kéo để có thể sử dụng lại trong trường hợp đầu tiên, vì thông tin này được nhúng vào một trang HTML cụ thể và "tùy chỉnh", đây không phải là một quy trình có thể sử dụng lại. Một khách hàng thứ hai sẽ phải yêu cầu lại thông tin và nhận một trang nhúng HTML khác với thông tin được yêu cầu - không hiệu quả cao.
Để hỗ trợ nhiều tác vụ phức tạp như vậy, máy chủ này phải được tích hợp sẵn, khả năng xử lý lớn và dung lượng RAM cao để xử lý tất cả dữ liệu mà nó kéo theo thời gian thực.
Hi vọng điêu nay co ich.
the application server deals with several different protocols, including, but not limited, to HTTP
<- điều đó nói rằng nó chắc chắn xử lý các yêu cầu http - điều đó không chính xác.
Cả hai thuật ngữ đều rất chung chung, một thuật ngữ chứa cái kia và ngược lại trong một số trường hợp.
Máy chủ web : phục vụ nội dung cho web bằng giao thức http.
Máy chủ ứng dụng : lưu trữ và hiển thị logic và quy trình nghiệp vụ.
Tôi nghĩ rằng điểm chính là máy chủ web phơi bày mọi thứ thông qua giao thức http, trong khi máy chủ ứng dụng không bị hạn chế đối với nó.
Điều đó nói rằng, trong nhiều tình huống, bạn sẽ thấy rằng máy chủ web đang được sử dụng để tạo mặt trước của máy chủ ứng dụng, nghĩa là, nó hiển thị một tập hợp các trang web cho phép người dùng tương tác với các quy tắc kinh doanh được tìm thấy trong máy chủ ứng dụng.
máy chủ web
Chạy python -m 'SimpleHTTPServer'
và truy cập http: // localhost: 8080 . Những gì bạn thấy là một máy chủ web tại hoạt động của nó. Máy chủ chỉ đơn giản phục vụ các tệp qua HTTP được lưu trữ trên máy tính của bạn. Điểm mấu chốt là tất cả những điều này được thực hiện trên giao thức HTTP. Ví dụ, cũng tồn tại các máy chủ FTP thực hiện chính xác cùng một thứ (phục vụ các tệp được lưu trữ) nhưng trên một giao thức khác.
Máy chủ ứng dụng
Giả sử chúng tôi có một ứng dụng nhỏ như bên dưới (đoạn trích từ Flask ).
@app.route('/')
def homepage():
return '<html>My homepage</html>'
@app.route('/about')
def about():
return '<html>My name is John</html>'
Chương trình ví dụ nhỏ ánh xạ URL /
tới hàm homepage()
và /about
hàm about()
.
Để chạy mã này, chúng tôi cần một máy chủ ứng dụng (ví dụ Gunicorn) - một chương trình hoặc mô-đun có thể lắng nghe yêu cầu từ khách hàng và sử dụng mã của chúng tôi, trả lại một cách linh hoạt. Trong ví dụ này, chúng tôi chỉ trả về một số HTML rất xấu.
Tất cả những gì người khác nói về logic kinh doanh? Chà, vì một URL ánh xạ tới một nơi cụ thể trong cơ sở mã của chúng tôi, chúng tôi đang giả định hiển thị một số logic về cách chương trình của chúng tôi hoạt động.
Tóm tắt
máy chủ web - phục vụ các tệp được lưu trữ ở đâu đó (phổ biến nhất là .css, .html, .js). Các máy chủ web phổ biến là Apache, Nginx hoặc thậm chí là SimpleHTTPServer của Python.
máy chủ ứng dụng - phục vụ các tệp được tạo nhanh chóng. Về cơ bản, hầu hết các máy chủ web đều có một số loại plugin hoặc thậm chí đi kèm với chức năng tích hợp sẵn để làm điều đó. Cũng tồn tại các máy chủ ứng dụng nghiêm ngặt như Gunicorn (Python), Unicorn (Ruby), uWSGI (Python), v.v.
Lưu ý rằng bạn thực sự có thể xây dựng một máy chủ web với mã của máy chủ ứng dụng. Điều này được thực hiện trong một số trường hợp trong quá trình phát triển mà bạn không muốn có một lượng lớn máy chủ khác nhau chạy trên máy tính của mình.
Như Rutesh và jmservera đã chỉ ra, sự khác biệt là một thứ mờ nhạt. Trong lịch sử, chúng khác nhau, nhưng qua những năm 90, hai loại khác nhau trước đây đã pha trộn các tính năng và được hợp nhất một cách hiệu quả. Tại thời điểm này có lẽ là tốt nhất để tưởng tượng rằng danh mục sản phẩm "Máy chủ ứng dụng" là một siêu bộ nghiêm ngặt của danh mục "máy chủ web".
Một số lịch sử. Trong những ngày đầu của trình duyệt khảm và nội dung siêu liên kết, đã phát triển thứ gọi là "máy chủ web" phục vụ nội dung và hình ảnh trang web qua HTTP. Hầu hết nội dung là tĩnh và giao thức HTTP 1.0 chỉ là một cách để gửi các tệp xung quanh. Nhanh chóng danh mục "máy chủ web" được phát triển để bao gồm khả năng CGI - khởi chạy hiệu quả một quy trình trên mỗi yêu cầu web để tạo nội dung động. HTTP cũng trưởng thành và các sản phẩm trở nên tinh vi hơn, với các tính năng lưu trữ, bảo mật và quản lý. Khi công nghệ trưởng thành, chúng tôi đã có công nghệ phía máy chủ dựa trên Java dành riêng cho công ty từ Kiva và NetDoperics, cuối cùng tất cả được hợp nhất vào JSP. Microsoft đã thêm ASP, tôi nghĩ vào năm 1996, vào Windows NT 4.0. Máy chủ web tĩnh đã học được một số thủ thuật mới, để nó hiệu quả "
Trong một thể loại song song, máy chủ ứng dụng đã phát triển và tồn tại trong một thời gian dài. các công ty đã phân phối các sản phẩm cho Unix như Tuxedo, TopEnd, Encina có nguồn gốc triết học từ các môi trường quản lý và giám sát ứng dụng Mainframe như IMS và CICS. Cung cấp của Microsoft là Máy chủ giao dịch Microsoft (MTS), sau này phát triển thành COM +. Hầu hết các sản phẩm này chỉ định các giao thức truyền thông dành riêng cho sản phẩm "đóng" để kết nối các máy khách "béo" với máy chủ. . Và các dòng bắt đầu mờ.
Các máy chủ web ngày càng hoàn thiện hơn đối với việc xử lý tải cao hơn, đồng thời hơn và các tính năng tốt hơn. Các máy chủ ứng dụng cung cấp ngày càng nhiều khả năng giao tiếp dựa trên HTTP.
Tại thời điểm này, đường giữa "máy chủ ứng dụng" và "máy chủ web" là một đường mờ. Nhưng mọi người vẫn tiếp tục sử dụng các thuật ngữ khác nhau, như một vấn đề cần nhấn mạnh. Khi ai đó nói "máy chủ web", bạn thường nghĩ các ứng dụng hướng web, trung tâm web, trung tâm HTTP. Khi ai đó nói "Máy chủ ứng dụng", bạn có thể nghĩ "tải nặng hơn, tính năng doanh nghiệp, giao dịch và xếp hàng, giao tiếp đa kênh (HTTP + trở lên). Nhưng thường thì đó là cùng một sản phẩm phục vụ cả hai yêu cầu khối lượng công việc.
Như nhiều người đã nói trước đây, các máy chủ web xử lý các kiến nghị HTTP, trong khi các máy chủ ứng dụng xử lý các kiến nghị cho các thành phần phân tán. Vì vậy, có lẽ cách dễ nhất để hiểu sự khác biệt là so sánh hai sản phẩm liên quan đến môi trường lập trình mà chúng cung cấp.
IIS: ASP (.NET)
Tomcat: Servlet
Cầu tàu: Servlet
Apache: Php, CGI
MTS: COM +
ĐƯỢC: EJB
JBoss: EJB
Máy chủ ứng dụng WebLogic: EJB
Sự khác biệt quan trọng là các máy chủ ứng dụng hỗ trợ một số công nghệ thành phần phân tán , cung cấp các tính năng như gọi từ xa và giao dịch phân tán, như EJB trong thế giới Java hoặc COM + trên nền tảng Microsoft. Máy chủ http thường hỗ trợ một số môi trường lập trình đơn giản hơn, thường là kịch bản, như ASP (.NET) trong trường hợp dựa trên Microsoft hoặc Servlet, bao gồm cả JSP và nhiều thứ khác trong trường hợp Java hoặc PHP và CGI trong trường hợp Apache.
Các khả năng khác như cân bằng tải, phân cụm, chuyển đổi dự phòng, tổng hợp kết nối, v.v. từng có trong lĩnh vực máy chủ ứng dụng, sẽ có sẵn trên các máy chủ web trực tiếp hoặc thông qua một số sản phẩm của bên thứ ba.
Cuối cùng, điều đáng chú ý là bức tranh bị biến dạng thêm với "các thùng chứa nhẹ" như Spring Framework, thường bổ sung cho mục đích của các máy chủ ứng dụng theo cách đơn giản hơn và không có cơ sở hạ tầng máy chủ ứng dụng. Và vì khía cạnh phân phối trong các ứng dụng đang chuyển từ thành phần phân tán sang mô hình dịch vụ và kiến trúc SOA, nên ngày càng có ít không gian hơn cho các máy chủ ứng dụng truyền thống.
Sự khác biệt chính giữa máy chủ Web và máy chủ ứng dụng là máy chủ web có nghĩa là phục vụ các trang tĩnh, ví dụ HTML và CSS, trong khi Máy chủ ứng dụng chịu trách nhiệm tạo nội dung động bằng cách thực thi mã phía máy chủ, ví dụ như JSP, Servlet hoặc EJB.
Tôi nên sử dụng cái nào?
Khi bạn biết sự khác biệt giữa web và máy chủ ứng dụng và các thùng chứa web, thật dễ dàng để biết khi nào nên sử dụng chúng. Bạn cần một web server
HTTPD giống như Apache nếu bạn đang phục vụ các trang web tĩnh. Nếu bạn có một ứng dụng Java chỉ với JSP và Servlet để tạo nội dung động thì bạn cần web containers
như Tomcat hoặc Jetty. Trong khi, nếu bạn có ứng dụng Java EE sử dụng EJB, giao dịch phân tán, nhắn tin và các tính năng ưa thích khác mà bạn cần có đầy đủ application server
như JBoss, WebSphere hoặc WebLogic của Oracle.
Web container là một phần của Máy chủ Web và Máy chủ Web là một phần của Máy chủ ứng dụng.
Máy chủ Web bao gồm bộ chứa web, trong khi Máy chủ ứng dụng bao gồm bộ chứa web cũng như bộ chứa EJB.
Nói tóm lại, một máy chủ web là một máy chủ phục vụ các trang web cho người dùng thông qua http. Một máy chủ ứng dụng là một máy chủ lưu trữ logic kinh doanh cho một hệ thống. Nó thường lưu trữ cả các quy trình chạy / đợt dài và / hoặc một dịch vụ interop không dành cho tiêu dùng của con người (dịch vụ REST / JSON, SOAP, RPC, v.v.).
Một máy chủ Web xử lý các yêu cầu HTTP / HTTPS. Nó phục vụ nội dung cho web bằng giao thức HTTP / HTTPS.
Một máy chủ ứng dụng phục vụ logic nghiệp vụ cho các chương trình ứng dụng thông qua bất kỳ số lượng giao thức nào, có thể bao gồm HTTP. Chương trình ứng dụng có thể sử dụng logic này giống như nó sẽ gọi một phương thức trên một đối tượng. Trong hầu hết các trường hợp, máy chủ hiển thị logic nghiệp vụ này thông qua API thành phần, chẳng hạn như mô hình thành phần EJB (Enterprise JavaBean) được tìm thấy trên các máy chủ ứng dụng Java EE (Nền tảng Java, Phiên bản doanh nghiệp). Điểm chính là máy chủ web hiển thị mọi thứ thông qua giao thức http, trong khi máy chủ ứng dụng không bị hạn chế đối với nó. Do đó, một máy chủ ứng dụng cung cấp nhiều dịch vụ hơn so với máy chủ web thường bao gồm:
Hầu hết các máy chủ ứng dụng đều có Máy chủ Web là một phần không thể thiếu của chúng, điều đó có nghĩa là Máy chủ ứng dụng có thể làm bất cứ điều gì Máy chủ Web có khả năng. Ngoài ra, Máy chủ ứng dụng có các thành phần và tính năng để hỗ trợ các dịch vụ cấp Ứng dụng như Kết nối nhóm, Nhóm đối tượng, Hỗ trợ giao dịch, Dịch vụ nhắn tin, v.v.
Một máy chủ ứng dụng có thể (nhưng không phải luôn luôn) chạy trên máy chủ web để thực thi logic chương trình, kết quả sau đó có thể được cung cấp bởi máy chủ web. Đó là một ví dụ về kịch bản máy chủ ứng dụng / máy chủ web. Một ví dụ điển hình trong thế giới Microsoft là mối quan hệ Máy chủ Thông tin Internet / Máy chủ SharePoint. IIS là một máy chủ web; SharePoint là một máy chủ ứng dụng. SharePoint nằm "trên cùng" của IIS, thực thi logic cụ thể và cung cấp kết quả qua IIS. Trong thế giới Java, chẳng hạn, có một kịch bản tương tự với Apache và Tomcat.
Vì các máy chủ web rất phù hợp cho các máy chủ ứng dụng và nội dung tĩnh cho nội dung động, hầu hết các môi trường sản xuất đều có máy chủ web đóng vai trò là proxy ngược cho máy chủ ứng dụng. Điều đó có nghĩa là trong khi phục vụ một yêu cầu trang, các nội dung tĩnh như hình ảnh / html tĩnh được phục vụ bởi máy chủ web diễn giải yêu cầu. Sử dụng một số loại kỹ thuật lọc (chủ yếu là mở rộng tài nguyên được yêu cầu) máy chủ web xác định yêu cầu nội dung động và chuyển tiếp trong suốt đến máy chủ ứng dụng.
Ví dụ về cấu hình như vậy là Apache HTTP Server và BEA WebLogic Server. Máy chủ HTTP Apache là Máy chủ Web và BEA WebLogic là Máy chủ ứng dụng. Trong một số trường hợp, các máy chủ được tích hợp chặt chẽ như IIS và .NET Runtime. IIS là máy chủ web. Khi được trang bị môi trường thời gian chạy .NET, IIS có khả năng cung cấp các dịch vụ ứng dụng
Web Server Programming Environment
Apache PHP, CGI
IIS (Internet Information Server) ASP (.NET)
Tomcat Servlet
Jetty Servlet
Application Server Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's) EJB
JBoss AS EJB
MTS COM+
Ranh giới giữa hai người ngày càng mỏng hơn.
Máy chủ ứng dụng phơi bày logic kinh doanh cho khách hàng. Điều đó có nghĩa là các máy chủ ứng dụng bao gồm một tập hợp các phương thức (không chỉ riêng, thậm chí có thể là một máy tính nối mạng cho phép nhiều người chạy phần mềm trên nó) để thực hiện logic nghiệp vụ. Vì vậy, nó chỉ đơn giản sẽ xuất kết quả mong muốn, không phải nội dung HTML. (tương tự như một cuộc gọi phương thức). Vì vậy, nó không hoàn toàn dựa trên HTTP.
Nhưng các máy chủ web chuyển nội dung HTML sang trình duyệt web (Dựa trên HTTP). Các máy chủ web chỉ có khả năng xử lý các tài nguyên web tĩnh, nhưng sự xuất hiện của kịch bản phía máy chủ cũng cho phép các máy chủ web xử lý các nội dung động. Trường hợp một máy chủ web nhận yêu cầu và chuyển nó đến các tập lệnh có liên quan (tập lệnh PHP, JSP, CGI, v.v.) để TẠO nội dung HTML được gửi đến máy khách. Sau khi nhận được nội dung, máy chủ web sẽ gửi trang HTML đến máy khách.
Tuy nhiên, ngày nay cả hai máy chủ này được sử dụng cùng nhau. Trường hợp máy chủ web nhận yêu cầu và sau đó gọi một tập lệnh để tạo nội dung HTML. Sau đó, tập lệnh sẽ lại gọi một máy chủ ứng dụng LOGIC (ví dụ: Lấy chi tiết giao dịch) để điền vào nội dung HTML.
Vì vậy, cả hai máy chủ được sử dụng hiệu quả.
Do đó .... Chúng ta có thể nói một cách an toàn rằng ngày nay, trong hầu hết các trường hợp, các máy chủ web được sử dụng như một tập hợp con của các máy chủ ứng dụng. NHƯNG sân khấu nó không phải là trường hợp.
Tôi đã đọc nhiều bài viết về chủ đề này và tìm thấy này bài viết khá tiện dụng.
Một máy chủ ứng dụng thường được thiết kế và triển khai để tạo điều kiện cho các quy trình chạy dài hơn cũng sẽ tốn nhiều tài nguyên hơn.
Nói chung, một máy chủ web được sử dụng cho các đợt ngắn không cần nhiều tài nguyên. Điều này chủ yếu là để tạo điều kiện phục vụ lưu lượng truy cập dựa trên web.
Theo thuật ngữ Java, có thêm một: web container (hay nghiêm ngặt hơn là bộ chứa servlet). Đó là, ở giữa máy chủ web và máy chủ ứng dụng.
Một bộ chứa web theo thuật ngữ Java là một máy chủ ứng dụng về cơ bản chỉ thực hiện phần JSP / Servlet của Java EE và thiếu một số phần cốt lõi của Java EE, như hỗ trợ EJB. Một ví dụ là Apache Tomcat.
Máy chủ ứng dụng là một máy (thực tế là một quá trình thực thi đang chạy trên một số máy) thực sự "lắng nghe" (trên bất kỳ kênh nào, sử dụng bất kỳ giao thức nào), cho các yêu cầu từ máy khách cho bất kỳ dịch vụ nào nó cung cấp và sau đó thực hiện điều gì đó dựa trên các yêu cầu đó. (có thể có hoặc không liên quan đến việc trả lời khách hàng)
Máy chủ Web đang xử lý chạy trên một máy "lắng nghe" cụ thể trên Kênh TCP / IP bằng một trong các giao thức "internet", (http, https, ftp, v.v.) và thực hiện bất cứ điều gì dựa trên các yêu cầu đến đó. .. Nói chung, (như được xác định rõ ràng), nó đã tìm nạp / tạo và trả lại một trang web html cho máy khách, hoặc được tìm nạp từ tệp html tĩnh trên máy chủ hoặc được xây dựng động dựa trên các tham số trong yêu cầu máy khách đến.
Một máy chủ web chạy giao thức HTTP để phục vụ các trang web. Một máy chủ ứng dụng có thể (nhưng không phải luôn luôn) chạy trên máy chủ web để thực thi logic chương trình, kết quả sau đó có thể được cung cấp bởi máy chủ web. Đó là một ví dụ về kịch bản máy chủ ứng dụng / máy chủ web.
Một ví dụ điển hình trong thế giới Microsoft là mối quan hệ Máy chủ Thông tin Internet / Máy chủ SharePoint. IIS là một máy chủ web; SharePoint là một máy chủ ứng dụng. SharePoint nằm "trên cùng" của IIS, thực thi logic cụ thể và cung cấp kết quả qua IIS.
Trong thế giới Java, chẳng hạn, có một kịch bản tương tự với Apache và Tomcat.
Mặt khác, một máy chủ web phục vụ nội dung web (HTML và nội dung tĩnh) qua giao thức HTTP. Mặt khác, một máy chủ ứng dụng là một thùng chứa mà bạn có thể xây dựng và đưa ra logic nghiệp vụ và xử lý cho các ứng dụng khách thông qua các giao thức khác nhau bao gồm HTTP trong kiến trúc n tầng.
Do đó, một máy chủ ứng dụng cung cấp nhiều dịch vụ hơn so với máy chủ web thường bao gồm:
AFAIK, ATG Dynamo là một trong những máy chủ ứng dụng đầu tiên vào cuối những năm 90 (theo định nghĩa ở trên). Đầu năm 2000, đó là triều đại của một số máy chủ ứng dụng độc quyền như ColdFusion (CFML AS), BroadVision (JavaScript phía máy chủ AS), v.v. Nhưng không ai thực sự sống sót qua kỷ nguyên máy chủ ứng dụng Java.
Sự hiểu biết cơ bản :
Trong kiến trúc máy chủ
Máy chủ:> Phục vụ các yêu cầu.
Khách hàng:> Mà tiêu thụ dịch vụ.
Máy chủ web & Máy chủ ứng dụng là cả hai ứng dụng phần mềm đóng vai trò là máy chủ cho khách hàng của họ.
Họ có tên của họ dựa trên nơi sử dụng của họ.
Web server :> serve web content
:> Like Html components
:> Like Javascript components
:> Other web components like images,resource files
:> Supports mainly web protocols like http,https.
:> Supports web Request & Response formats.
Sử dụng --
we require low processing rates, regular processing practices involves.
Ví dụ: Tất cả các máy chủ phẳng thường có sẵn sẵn chỉ phục vụ nội dung dựa trên web.
Application server :> Serve application content/component data(Business data).
:> These are special kind which are custom written
designed/engineered for specific
purpose.some times fully unique in
their way and stands out of the crowd.
:> As these serves different types of data/response contents
:> So we can utilize these services for mobile client,web
clients,intranet clients.
:> Usually application servers are services offered on different
protocols.
:> Supports different Request& Response formats.
Sử dụng --
we require multi point processing, specialized processing techniques involves like for AI.
Ví dụ: Google maps máy chủ, máy chủ tìm kiếm Google, máy chủ Google docs, máy chủ Microsoft 365, máy chủ thị giác máy tính Microsoft cho AI.
Chúng ta có thể giả sử chúng là các bậc / Phân cấp trong kiến trúc 4 tầng / n tầng.
So they can provide
load balancing,
multiple security levels,
multiple active points,
even they can provide different request processing environments.
Vui lòng theo liên kết này cho các tương tự kiến trúc tiêu chuẩn:
https://docs.microsoft.com/en-us/preingly-versions/msp-np/ee658120(v%3dpandp.10)
Sự khác biệt lớn nhất là Máy chủ Web xử lý các yêu cầu HTTP, trong khi máy chủ Ứng dụng sẽ thực thi logic nghiệp vụ trên bất kỳ số lượng giao thức nào.
Thật ra Apache là một máy chủ web và Tomcat là một máy chủ ứng dụng. Khi yêu cầu HTTP đến máy chủ web. Sau đó, nội dung tĩnh gửi lại cho trình duyệt bởi máy chủ web. Có và logic phải làm, sau đó yêu cầu đó gửi đến máy chủ ứng dụng. Sau khi xử lý logic, sau đó trả lời gửi đến máy chủ web và gửi cho khách hàng.
Tất cả những điều trên chỉ là quá phức tạp một cái gì đó rất đơn giản. Một máy chủ ứng dụng chứa một máy chủ web, một máy chủ ứng dụng chỉ cần thêm một vài bổ sung / tiện ích mở rộng cho nó so với các máy chủ web tiêu chuẩn. Nếu bạn xem TomEE là một ví dụ:
CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal
Bạn sẽ thấy Tomcat (Web container / server) chỉ là một công cụ khác trong kho vũ khí của máy chủ ứng dụng. Bạn cũng có thể nhận JPA và công nghệ khác trong máy chủ web nếu muốn, nhưng các máy chủ ứng dụng chỉ đóng gói tất cả những thứ này để thuận tiện cho bạn. Để được phân loại đầy đủ như một máy chủ ứng dụng, về cơ bản bạn cần tuân thủ một danh sách các công cụ được quy định bởi một số tiêu chuẩn.
Không nhất thiết phải có một đường phân chia rõ ràng. Ngày nay, nhiều chương trình kết hợp các yếu tố của cả hai - phục vụ các yêu cầu http (máy chủ web) và xử lý logic nghiệp vụ (máy chủ ứng dụng)
Từ https://en.wikipedia.org/wiki/Web_server
Máy chủ web là một hệ thống máy tính xử lý các yêu cầu thông qua HTTP, giao thức mạng cơ bản được sử dụng để phân phối thông tin trên World Wide Web. Thuật ngữ này có thể đề cập đến toàn bộ hệ thống, hoặc cụ thể là phần mềm chấp nhận và giám sát các yêu cầu HTTP .
Từ https://en.wikipedia.org/wiki/Application_server#Application_Server_def định
Một máy chủ ứng dụng chạy phía sau Máy chủ web (ví dụ: Apache hoặc Microsoft Internet Information Services (IIS)) và (hầu như luôn luôn) trước cơ sở dữ liệu SQL (ví dụ PostgreQuery, MySQL hoặc Oracle).
Các ứng dụng web là mã máy tính chạy trên các máy chủ ứng dụng và được viết bằng ngôn ngữ mà máy chủ ứng dụng hỗ trợ và gọi các thư viện thời gian chạy và các thành phần mà máy chủ ứng dụng cung cấp .
Cả máy chủ ứng dụng và máy chủ web đều được sử dụng để lưu trữ ứng dụng web. Mặt khác, Máy chủ Web xử lý vùng chứa web, Máy chủ ứng dụng xử lý vùng chứa web cũng như vùng chứa EJB (Enterprise JavaBean) hoặc vùng chứa COM + cho Microsoft dot Net.
Web Server được thiết kế để phục vụ Nội dung tĩnh HTTP như HTML, hình ảnh, v.v. và đối với nội dung động có các plugin để hỗ trợ các ngôn ngữ script như Perl, PHP, ASP, JSP, v.v. và nó bị giới hạn ở giao thức HTTP. Bên dưới máy chủ có thể tạo nội dung HTTP động.
Môi trường lập trình của máy chủ Web:
IIS: ASP (.NET)
Tomcat của Apache: Servlet
Cầu tàu: Servlet
Apache: Php, CGI
Máy chủ ứng dụng có thể làm bất cứ điều gì Máy chủ Web có khả năng và lắng nghe bằng bất kỳ giao thức nào cũng như Máy chủ ứng dụng có các thành phần và tính năng để hỗ trợ các dịch vụ cấp Ứng dụng như Kết nối nhóm, Nhóm đối tượng, Hỗ trợ giao dịch, Dịch vụ nhắn tin, v.v.
Môi trường lập trình của máy chủ ứng dụng:
MTS: COM +
ĐƯỢC: EJB
JBoss: EJB
Máy chủ ứng dụng WebLogic: EJB
Mặc dù có thể có sự chồng chéo giữa hai (một số máy chủ web thậm chí có thể được sử dụng làm máy chủ ứng dụng), sự khác biệt lớn nhất của IMHO là trong mô hình xử lý và quản lý phiên:
Trong mô hình xử lý máy chủ Web, trọng tâm là xử lý các yêu cầu; khái niệm "phiên" là khá nhiều ảo. Điều đó có nghĩa là "phiên" được mô phỏng bằng cách chuyển biểu diễn trạng thái giữa máy khách và máy chủ (do đó REST) và / hoặc tuần tự hóa nó sang một bộ lưu trữ liên tục bên ngoài (SQL Server, Memcached, v.v.).
Trong máy chủ ứng dụng, phiên thường rõ ràng hơn và thường ở dạng đối tượng sống trong bộ nhớ của máy chủ ứng dụng trong toàn bộ thời gian của "phiên".
Nó phụ thuộc vào kiến trúc cụ thể. Một số máy chủ ứng dụng có thể sử dụng các giao thức web nguyên bản (XML / RPC / SOAP qua HTTP), do đó có rất ít sự khác biệt về kỹ thuật. Thông thường, máy chủ web hướng đến người dùng, phục vụ nhiều nội dung khác nhau qua HTTP / HTTPS, trong khi máy chủ ứng dụng không phải là người dùng và có thể sử dụng các giao thức không chuẩn hoặc không thể định tuyến. Tất nhiên với RIA / AJAX, sự khác biệt có thể được làm mờ thêm, chỉ phục vụ nội dung không phải HTML (JSON / XML) cho các khách hàng bơm các dịch vụ truy cập từ xa cụ thể.
IMO, chủ yếu là về việc tách các mối quan tâm.
Từ quan điểm thuần túy kỹ thuật, bạn có thể làm mọi thứ (nội dung web + logic kinh doanh) trong một máy chủ web. Nếu bạn làm điều đó, thì thông tin sẽ được nhúng vào bên trong yêu cầu nội dung HTML. Điều gì sẽ là tác động?
Ví dụ: hãy tưởng tượng bạn có 2 ứng dụng khác nhau hiển thị nội dung HTML hoàn toàn khác nhau trên trình duyệt. Nếu bạn tách logic kinh doanh thành một máy chủ ứng dụng thì bạn có thể cung cấp các máy chủ web khác nhau tìm kiếm cùng một dữ liệu trong máy chủ ứng dụng thông qua các tập lệnh. Tuy nhiên, nếu bạn không tách logic và giữ nó trong máy chủ web, bất cứ khi nào bạn thay đổi mô hình kinh doanh, cuối cùng bạn sẽ thay đổi nó trong mọi máy chủ web mà bạn có sẽ mất nhiều thời gian hơn, ít tin cậy hơn và dễ bị lỗi