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:


620

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:

  • Máy chủ Web được thiết kế để phục vụ Nội dung HTTP. Máy chủ ứng dụng cũng có thể phục vụ Nội dung HTTP nhưng không giới hạn chỉ HTTP. Nó có thể được cung cấp hỗ trợ giao thức khác như RMI / RPC
  • Máy chủ Web hầu hết được thiết kế để phục vụ nội dung tĩnh, mặc dù hầu hết các Máy chủ web đều có plugin để hỗ trợ các ngôn ngữ tập lệnh như Perl, PHP, ASP, JSP, vv thông qua đó các máy chủ này có thể tạo nội dung HTTP động.
  • 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.
  • 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ụ yêu cầu trang, 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à 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.


18
JBoss (nay là WildFly) cũng là một ví dụ nổi tiếng của Máy chủ ứng dụng: D
KNU

4
Giải thích hay, vì chúng ta có thể sử dụng máy chủ ứng dụng thay vì máy chủ web, những lợi thế của việc có máy chủ web và máy chủ ứng dụng cho cả một ứng dụng là gì? Và hiệu suất khôn ngoan lựa chọn tốt nhất là gì?
Lalinda Sampath

33
"Máy chủ HTTP Apache Tomcat là Máy chủ Web và Oracle WebLogic là Máy chủ ứng dụng." Vì vậy, trước hết, máy chủ Apache Tomcat và Apache HTTP là 2 sản phẩm khác nhau. Và đó không thực sự là một tuyên bố chính xác. Apache Tomcat là một máy chủ ứng dụng. Chắc chắn, nó cũng có thể phục vụ các trang web, nhưng đó là một máy chủ ứng dụng để triển khai Java. Tôi nhận ra rất nhiều sử dụng thuật ngữ "máy chủ web" một cách lỏng lẻo. Nhưng nó chỉ khiến mọi người nhầm lẫn.
Ironarm

18
Apache Tomcat không phải là một máy chủ web, nó là một máy chủ ứng dụng chạy các dịch vụ Java. Máy chủ HTTP Apache là một máy chủ web. Không có máy chủ nào được gọi là máy chủ HTTP Apache Tomcat.
Abhishek Pathak

3
-1 vì nhầm lẫn Apache Tomcat và Apache HTTPD. stackoverflow.com/questions/30632/NH
Bacon Bits

154

Đâ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.

nhập mô tả hình ảnh ở đây

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.


10
Điều đó không chính xác / khó hiểu, ngay cả đối với các ứng dụng web (tức là thuật ngữ máy chủ ứng dụng áp dụng cho các ứng dụng không có web). Chỉ xem xét web: Một máy chủ web bao gồm phần mềm (apache, nginx) để xử lý các yêu cầu web (http). Một máy chủ ứng dụng chứa / hiển thị ứng dụng (ví dụ mã php). Chúng có thể là cùng một máy, chúng có thể không - ví dụ: việc nginx trên một máy (máy chủ web) được yêu cầu chuyển sang php-fpm trên một máy khác (máy chủ ứng dụng) không được coi là bình thường truy cập http (chỉ hiển thị cổng cho chính php-fpm).
AD7six

@ AD7six Một máy chủ Web xử lý các yêu cầu HTTP, trong khi đó một máy chủ ứng dụng xử lý logic nghiệp vụ cho các chương trình ứng dụng thông qua bất kỳ số giao thức nào bao gồm HTTP.
Durai Amuthan.H

Quan điểm của tôi là máy chủ ứng dụng có thể xử lý các yêu cầu http, không có nghĩa là yêu cầu. 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.
AD7six

6
Sau khi đọc lại các ví dụ đã cho, tôi không thấy bất kỳ sự rõ ràng thực sự nào ở đây - các mô tả chủ yếu liên quan đến bộ nhớ đệm. Điều cần làm rõ là máy chủ web là phần mềm, ứng dụng là phần mềm. nếu chúng được triển khai trên cùng một máy, máy có thể được gọi theo cách bạn muốn. Nếu chúng ở trên các máy khác nhau, sẽ là bình thường khi nói đến máy chạy máy chủ web máy chủ web và máy chạy ứng dụng là máy chủ ứng dụng. Bạn thường phân chia mọi thứ theo tải và cân bằng tải. Nhìn chung, tôi thấy câu trả lời này không thêm bất cứ điều gì hữu ích.
AD7six

@ AD7six Câu trả lời của tôi có nghĩa là bổ sung cho các câu trả lời khác, tức là những câu trả lời khác có nghĩa là những gì bạn đã hỏi chỉ là một phần mở rộng cho điều đó.
Durai Amuthan.H

136

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.


66

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()/abouthà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.


Đây là câu trả lời hay nhất và súc tích nhất. Tôi đã tự hỏi liệu một máy chủ web có thể được coi là một tập hợp con của một máy chủ ứng dụng. Ngay bây giờ tôi nghĩ về nó như một máy chủ web giống như một phương thức getter và một máy chủ ứng dụng giống như một phương thức xuất xưởng (trong đó URL là một đối số của hàm tạo: D)

8
Uff .. Cuối cùng, cảm ơn vì đã đưa ra một viễn cảnh Python. Như bất khả tri ngôn ngữ như chủ đề này có vẻ, nó không phải là. Một người chưa bao giờ sử dụng EJB sẽ không hiểu rõ các câu trả lời theo định hướng Java.
Vikas

Cảm ơn. "Để chạy mã này, chúng tôi cần một máy chủ ứng dụng", bạn có thể chỉ định máy chủ ứng dụng nào để chạy chương trình bình không?
Tim

Đây là một câu trả lời gần như hoàn hảo
Ramy Farid

65

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.

  • WebSphere, "máy chủ ứng dụng" của IBM có máy chủ web đi kèm.
  • WebLogic, một máy chủ ứng dụng truyền thống khác, tương tự.
  • Windows, là Máy chủ ứng dụng của Microsoft (ngoài việc là Máy chủ Tệp & In, Máy chủ Phương tiện, v.v.), gói IIS.

Câu trả lời rất rõ ràng. Nhưng bạn có thể giải thích thêm một chút về 'thủ thuật mới' cho phép máy chủ web thực hiện như một máy chủ ứng dụng.
Quazi Irfan

3
"Thủ thuật mới" ngụ ý, chạy logic phía máy chủ. Kịch bản logic như ASP hoặc những người khác. Các "máy chủ web" ban đầu chỉ trả về nội dung tĩnh, từ hệ thống tệp. Chúng ta đã đi một chặng đường dài từ đó, bây giờ.
Cheeso

36

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.

Máy chủ Web -> Môi trường lập trình

IIS: ASP (.NET)

Tomcat: Servlet

Cầu tàu: Servlet

Apache: Php, CGI

Máy chủ ứng dụng -> Môi trường lập trình

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.


Bất kỳ máy chủ ứng dụng nào bạn liệt kê có thể được sử dụng làm máy chủ web http như apache http không?
LearningMath

22

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 serverHTTPD 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 containersnhư 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 servernhư 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ủ ứ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.


"Máy chủ web bao gồm bộ chứa web": theo youtu.be/ATObcDPLa40 video này, đó là sai
Vyshnav Ramesh Thrissur

20

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.).


2
Thuật ngữ 'máy chủ' logic kinh doanh 'nghĩa là gì? Nó được thực hiện như thế nào?
TwiggedToday

Là logic kinh doanh tiếp xúc với khách hàng thông qua các dịch vụ web?
TwiggedToday

Nó có thể được phục vụ thông qua các dịch vụ web hoặc có thể được phục vụ bởi bất kỳ giao diện nào khác (TCP, MQ, các tệp phẳng trên một chia sẻ (tôi không khuyến nghị cuối cùng)).
C. Ross

Điều này có thể gây hiểu nhầm. Máy chủ ứng dụng không lưu trữ bất cứ thứ gì. Mã của bạn lưu trữ logic nghiệp vụ và máy chủ ứng dụng hoạt động như chất keo giữa đó và các trang web mà người dùng yêu cầu.
Pithikos

18

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:

  • API (độc quyền hoặc không)
  • Cân bằng tải, thất bại ...
  • Quản lý vòng đời đối tượng
  • Quản lý nhà nước (phiên)
  • Quản lý tài nguyên (ví dụ: nhóm kết nối với cơ sở dữ liệu)

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+

2
Có một số đề cập đến những thứ khác, nhưng rất nhiều có vẻ như đạo văn đối với tôi. Giống như danh sách ở cuối, như thể được sao chép từ bài viết của Dan. Và "... proxy ngược cho máy chủ ứng dụng ..." Ngoài ra, một phần sử dụng Máy chủ HTTP và Máy chủ WebLogic BEA làm ví dụ ở cuối cùng khá giống với điều mà Rutesh Makhi camera đã viết.
nhóc

11

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.


10

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.


9

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.


8

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.


3
Bạn có thể vui lòng cho ví dụ cho các trường hợp tắm.
kẻ lừa đảo

Bạn có thể vui lòng cung cấp các ví dụ của cả hai? Cảm ơn.
LearningMath

8

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.


8

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:

  • API (độc quyền hoặc không)
  • Quản lý vòng đời đối tượng,
  • Quản lý nhà nước (phiên),
  • Quản lý tài nguyên (ví dụ: nhóm kết nối với cơ sở dữ liệu),
  • Cân bằng tải, thất bại ...

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.


6

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)


5

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.


5

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.


4

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.


2

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)


2

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 .


2

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


1

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".


0

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ể.


0

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.