Jaka jest różnica między serwerem aplikacji a serwerem WWW?


Odpowiedzi:


620

W większości przypadków te terminy Serwer WWW i Serwer aplikacji są używane zamiennie.

Oto niektóre z kluczowych różnic w funkcjach serwera WWW i serwera aplikacji:

  • Serwer WWW służy do obsługi treści HTTP. Serwer aplikacji może także obsługiwać zawartość HTTP, ale nie ogranicza się tylko do HTTP. Można zapewnić obsługę innych protokołów, takich jak RMI / RPC
  • Serwer sieciowy jest zaprojektowany głównie do obsługi zawartości statycznej, chociaż większość serwerów zawiera wtyczki do obsługi języków skryptowych, takich jak Perl, PHP, ASP, JSP itp., Dzięki którym te serwery mogą generować dynamiczną zawartość HTTP.
  • Większość serwerów aplikacji ma wbudowany serwer WWW, co oznacza, że ​​App Server może robić wszystko, co jest w stanie zrobić. Dodatkowo serwer aplikacji ma komponenty i funkcje do obsługi usług na poziomie aplikacji, takich jak pula połączeń, pule obiektów, obsługa transakcji, usługi przesyłania wiadomości itp.
  • Ponieważ serwery sieciowe dobrze nadają się do treści statycznych, a serwery aplikacji do treści dynamicznych, większość środowisk produkcyjnych ma serwer WWW działający jako odwrotne proxy do serwera aplikacji. Oznacza to, że podczas obsługi żądania strony treść statyczna (taka jak obrazy / statyczny HTML) jest obsługiwana przez serwer WWW, który interpretuje żądanie. Przy użyciu pewnego rodzaju techniki filtrowania (głównie rozszerzenia żądanego zasobu) serwer sieciowy identyfikuje dynamiczne żądanie treści i w sposób transparentny przekazuje je do serwera aplikacji

Przykładem takiej konfiguracji jest serwer HTTP Apache Tomcat i serwer WebLogic Oracle (wcześniej BEA). Serwer HTTP Apache Tomcat to serwer WWW, a Oracle WebLogic to serwer aplikacji.

W niektórych przypadkach serwery są ściśle zintegrowane, takie jak IIS i .NET Runtime. IIS to serwer WWW. Po wyposażeniu w środowisko uruchomieniowe .NET usługi IIS mogą świadczyć usługi aplikacji.


18
JBoss (teraz WildFly) jest również znanym przykładem serwera aplikacji: D
KNU

4
Ładne wyjaśnienie, skoro możemy używać serwera aplikacji zamiast serwera WWW, jakie są zalety posiadania serwera WWW i serwera aplikacji dla jednej aplikacji? A jeśli chodzi o wydajność, jaka jest najlepsza opcja?
Lalinda Sampath,

33
„Serwer HTTP Apache Tomcat to serwer WWW, a Oracle WebLogic to serwer aplikacji”. Przede wszystkim Apache Tomcat i serwer HTTP Apache to 2 różne produkty. I to nie jest dokładne stwierdzenie. Apache Tomcat to serwer aplikacji. Jasne, może również obsługiwać strony internetowe, ale jest to serwer aplikacji do wdrażania Java. Zdaję sobie sprawę, że często używam luźno terminu „serwer WWW”. Ale to tylko myli ludzi.
ironarm

18
Apache Tomcat nie jest serwerem WWW, to serwer aplikacji, który obsługuje serwlety Java. Serwer HTTP Apache to serwer WWW. Nie ma serwera o nazwie serwer HTTP Apache Tomcat.
Abhishek Pathak,

3
-1 za mylące Apache Tomcat i Apache HTTPD. stackoverflow.com/questions/30632/…
Bacon Bits

154

Jest to szczegółowa odpowiedź z niektórymi scenariuszami, aby jasno zrozumieć różnicę, podobieństwo oraz sposób, w jaki oba mogą działać łącznie

Serwer aplikacji to termin, który czasami miesza się z serwerem WWW . Podczas gdy serwer WWW obsługuje głównie protokoły HTTP , serwer aplikacji obsługuje kilka różnych protokołów, w tym między innymi HTTP .

Głównym zadaniem serwera WWW jest wyświetlanie zawartości witryny, a serwer aplikacji odpowiada za logikę , interakcję między użytkownikiem a wyświetlaną treścią. Serwer aplikacji działa w połączeniu z serwerem WWW, na którym jeden jest wyświetlany, a drugi wchodzi w interakcje.

Informacje przesyłane tam iz powrotem między serwerem a jego klientem nie są ograniczone do prostego znacznika wyświetlania, ale do interakcji między nimi.

W większości przypadków serwer tworzy tę interakcję za pomocą komponentowego interfejsu API , takiego jak J2EE (Java 2 Platform) , EJB (Enterprise JavaBean) i inne modele modeli aplikacji.

wprowadź opis zdjęcia tutaj

Przykład:

Najlepszym sposobem na zrozumienie różnicy między scenariuszami, w których serwer aplikacji współpracuje z serwerem WWW, a scenariuszem, w którym nie ma serwera aplikacji, jest sklep internetowy.

Scenariusz 1: serwer WWW bez serwera aplikacji

masz sklep internetowy z tylko serwerem internetowym i bez serwera aplikacji. Witryna wyświetli ekran, z którego możesz wybrać produkt. Po przesłaniu zapytania witryna przeprowadza wyszukiwanie i zwraca wynik HTML z powrotem do swojego klienta. Serwer WWW wysyła zapytanie bezpośrednio do serwera bazy danych (bądź cierpliwy, wyjaśnię to w naszym następnym modelu użytkowym) i czeka na odpowiedź. Po otrzymaniu serwer WWW formułuje odpowiedź w pliku HTML i wysyła ją do przeglądarki internetowej. Ta komunikacja do przodu i do tyłu między serwerem a serwerem bazy danych zachodzi za każdym razem, gdy uruchamiane jest zapytanie.

Scenariusz 2: Serwer WWW z serwerem aplikacji

jeśli zapytanie, które chcesz uruchomić, zostało już wykonane i od tego czasu żadne dane nie uległy zmianie, serwer wygeneruje wyniki bez konieczności wysyłania żądania do serwera bazy danych. Umożliwia to zapytanie w czasie rzeczywistym, w którym drugi klient może uzyskać dostęp do tych samych informacji i otrzymywać wiarygodne informacje w czasie rzeczywistym bez wysyłania kolejnego duplikatu zapytania do serwera bazy danych. Serwer zasadniczo działa jako pośrednik między serwerem bazy danych a serwerem WWW. Dzięki temu ściągnięte informacje mogą być ponownie użyte w pierwszym scenariuszu, ponieważ informacje te są osadzone na określonej i „dostosowanej” stronie HTML, nie jest to proces wielokrotnego użytku. Drugi klient będzie musiał ponownie zażądać informacji i otrzymać kolejną stronę osadzoną w HTML z żądanymi informacjami - wysoce nieefektywna.

Aby obsługiwać tak różnorodne złożone zadania, serwer musi mieć wbudowaną redundancję, doskonałą moc przetwarzania i dużą ilość pamięci RAM, aby obsłużyć wszystkie dane, które pobiera w czasie rzeczywistym.

Mam nadzieję że to pomoże.


10
Nie jest to dokładne / mylące, nawet w przypadku aplikacji internetowych (tzn. Termin „serwer aplikacji” odnosi się do aplikacji nie-internetowych). Biorąc pod uwagę tylko sieć: serwer WWW zawiera oprogramowanie (apache, nginx) do obsługi żądań internetowych (http). Serwer aplikacji zawiera / udostępnia aplikację (np. Kod php). Mogą być tą samą maszyną, mogą nie być - na przykład normalne byłoby posiadanie nginx na jednym komputerze (serwerze internetowym), który przekierowuje żądania do php-fpm na innym komputerze (serwerze aplikacji), który sam nie ma żadnych dostęp http (tylko ujawnianie portu dla samego php-fpm).
AD7six

@ AD7six Serwer WWW obsługuje wyłącznie żądania HTTP, podczas gdy serwer aplikacji obsługuje logikę biznesową programów aplikacyjnych za pośrednictwem dowolnej liczby protokołów, w tym HTTP.
Durai Amuthan.H,

Chodzi mi o to, że serwer aplikacji może obsługiwać żądania HTTP, nie jest to w żadnym razie wymóg. the application server deals with several different protocols, including, but not limited, to HTTP<- to znaczy, że zdecydowanie obsługuje żądania HTTP - to nie jest dokładne.
AD7six

6
Po ponownym przeczytaniu podanych przykładów nie widzę tu żadnej prawdziwej jasności - opisy dotyczą głównie buforowania. Oczywiste jest, że serwer to oprogramowanie, a aplikacja to oprogramowanie. jeśli są one wdrożone na tym samym komputerze, można do niego odwołać się w dowolny sposób. Jeśli są na różnych maszynach byłoby normalne, aby odnieść się do jednego uruchomiony serwer WWW jako serwer WWW, a jednym z uruchomioną aplikację jako appserver. Zwykle dzielisz rzeczy według obciążenia i równoważenia obciążenia. Ogólnie uważam, że ta odpowiedź nie dodaje nic przydatnego.
AD7six

@ AD7six Moja odpowiedź ma na celu uzupełnienie innych odpowiedzi, tzn. Inne odpowiedzi już oznaczają to, o co prosiłeś, to tylko rozszerzenie tego.
Durai Amuthan.H

136

Oba terminy są bardzo ogólne, jeden zawiera drugi i na odwrót w niektórych przypadkach.

  • Serwer WWW : udostępnia treści w Internecie za pomocą protokołu HTTP.

  • Serwer aplikacji : hostuje i udostępnia logikę biznesową i procesy.

Myślę, że główną kwestią jest to, że serwer WWW udostępnia wszystko za pośrednictwem protokołu http, podczas gdy serwer aplikacji nie jest do niego ograniczony.

To powiedziawszy, w wielu scenariuszach okaże się, że serwer WWW jest używany do tworzenia frontonu serwera aplikacji, to znaczy udostępnia zestaw stron internetowych, które pozwalają użytkownikowi na interakcję z regułami biznesowymi znalezionymi w Serwer aplikacji.


66

serwer internetowy

Uruchom python -m 'SimpleHTTPServer'i przejdź do http: // localhost: 8080 . To, co widzisz, to działający serwer WWW. Serwer po prostu obsługuje pliki przez HTTP przechowywane na twoim komputerze. Kluczową kwestią jest to, że wszystko to odbywa się na szczycie protokołu HTTP. Istnieją również na przykład serwery FTP, które robią dokładnie to samo (serwowanie przechowywanych plików), ale na innym protokole.

Serwer aplikacji

Powiedzmy, że mamy małą aplikację, taką jak poniżej (fragment z Flask ).

@app.route('/')
def homepage():
    return '<html>My homepage</html>'

@app.route('/about')
def about():
    return '<html>My name is John</html>'

Mały przykładowy program mapuje adres URL /na funkcję homepage()i /aboutna funkcję about().

Aby uruchomić ten kod, potrzebujemy serwera aplikacji (np. Gunicorn) - programu lub modułu, który może nasłuchiwać żądań od klienta i za pomocą naszego kodu zwracać coś dynamicznie. W tym przykładzie po prostu zwracamy bardzo zły kod HTML.

O jakiej logice biznesowej rozmawiają wszyscy inni ludzie? Cóż, skoro adres URL odwzorowuje się gdzieś konkretnie w naszej bazie kodu, hipotetycznie pokazujemy logikę na temat działania naszego programu.


Podsumowanie

serwer WWW - obsługuje pliki gdzieś przechowywane (najczęściej .css, .html, .js). Typowymi serwerami WWW są Apache, Nginx, a nawet SimpleHTTPServer Pythona.

serwer aplikacji - obsługuje pliki generowane w locie. Zasadniczo większość serwerów WWW ma jakieś wtyczki, a nawet posiada wbudowane funkcje, aby to zrobić. Istnieją również ścisłe serwery aplikacji, takie jak Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) itp.

Zauważ, że faktycznie możesz zbudować serwer WWW za pomocą kodu serwera aplikacji. Odbywa się to w niektórych przypadkach podczas programowania, gdy nie chcesz, aby na Twoim komputerze działało mnóstwo różnych serwerów.


To najlepsza i najbardziej zwięzła odpowiedź. Zastanawiałem się, czy serwer WWW można uznać za podzbiór serwera aplikacji. W tej chwili myślę o tym, ponieważ serwer WWW jest jak metoda pobierająca, a serwer aplikacji jest jak metoda fabryczna (gdzie URL jest argumentem konstruktora: D)

8
Uff .. Wreszcie, dziękuję za podanie perspektywy Python. Choć może się wydawać, że ten język jest agnostyczny, tak nie jest. Ktoś, kto nigdy nie korzystał z EJB, nie zrozumie jasno zorientowanych na Java odpowiedzi.
Vikas

Dzięki. „Aby uruchomić ten kod, potrzebujemy serwera aplikacji”, czy możesz podać serwer aplikacji do uruchamiania programu flask?
Tim

To prawie idealna odpowiedź
Ramy Farid

65

Jak zauważyli Rutesh i jmservera, rozróżnienie jest niewyraźne. Historycznie były różne, ale w latach 90. te dwie odrębne kategorie łączyły cechy i skutecznie się łączyły. W tym momencie prawdopodobnie najlepiej jest sobie wyobrazić, że kategoria produktów „App Server” jest ścisłym nadzorem kategorii „serwer WWW”.

Trochę historii. Na początku przeglądarki Mosaic i zawartości hiperłącza rozwinęła się rzecz zwana „serwerem internetowym”, który obsługiwał zawartość strony i obrazy przez HTTP. Większość treści była statyczna, a protokół HTTP 1.0 był tylko sposobem przesyłania plików. Szybko kategoria „serwer WWW” ewoluowała, włączając funkcję CGI - skutecznie uruchamiając proces przy każdym żądaniu sieci w celu wygenerowania dynamicznej zawartości. Dojrzał również HTTP, a produkty stały się bardziej wyrafinowane, z funkcjami buforowania, bezpieczeństwa i zarządzania. W miarę dojrzewania technologii otrzymaliśmy specyficzną dla firmy technologię Java po stronie serwera od Kiva i NetDynamics, które ostatecznie połączyły się w JSP. Microsoft dodał ASP, myślę, że w 1996 roku, do Windows NT 4.0. Statyczny serwer internetowy nauczył się kilku nowych sztuczek, dzięki czemu był skutecznym „

W kategorii równoległej serwer aplikacji ewoluował i istniał przez długi czas. firmy dostarczały produkty dla Uniksa, takie jak Tuxedo, TopEnd, Encina, które filozoficznie wywodzą się ze środowisk zarządzania aplikacjami i monitorowania Mainframe, takich jak IMS i CICS. Ofertą Microsoftu był Microsoft Transaction Server (MTS), który później przekształcił się w COM +. Większość z tych produktów określała „zamknięte” protokoły komunikacyjne specyficzne dla produktu w celu połączenia „grubych” klientów z serwerami. (W przypadku Encina protokołem komunikacyjnym był DCE RPC; w przypadku MTS był to DCOM; itp.) W latach 1995/96 te tradycyjne produkty serwerów aplikacji zaczęły zawierać podstawowe funkcje komunikacji HTTP, początkowo za pośrednictwem bram. I linie zaczęły się zacierać.

Serwery WWW stają się coraz bardziej dojrzałe pod względem obsługi większych obciążeń, większej współbieżności i lepszych funkcji. Serwery aplikacji zapewniają coraz więcej możliwości komunikacji opartej na protokole HTTP.

W tym momencie granica między „serwerem aplikacji” a „serwerem WWW” jest rozmyta. Ale ludzie nadal używają tych terminów inaczej, co wymaga podkreślenia. Kiedy ktoś mówi „serwer WWW”, często myślisz o aplikacjach zorientowanych na HTTP, web UI. Kiedy ktoś mówi „serwer aplikacji”, możesz pomyśleć „większe obciążenia, funkcje korporacyjne, transakcje i kolejkowanie, komunikacja wielokanałowa (HTTP + więcej). Ale często jest to ten sam produkt, który obsługuje oba zestawy wymagań dotyczących obciążenia.

  • WebSphere, „serwer aplikacji” IBM, ma własny wbudowany serwer WWW.
  • WebLogic, kolejny tradycyjny serwer aplikacji.
  • Windows, który jest serwerem aplikacji firmy Microsoft (oprócz tego, że jest serwerem plików i drukowania, serwerem multimediów itp.), Zawiera pakiet IIS.

Bardzo jasna odpowiedź. Ale czy możesz bardziej szczegółowo omówić „nowe sztuczki”, które pozwoliły serwerowi internetowemu działać jako serwer aplikacji.
Quazi Irfan

3
„nowe triki” oznaczają logikę po stronie serwera. Logika skryptów jak ASP lub inne. Oryginalne „serwery sieciowe” właśnie zwróciły zawartość statyczną z systemu plików. Przeszliśmy już od tego długą drogę.
Cheeso,

36

Jak już powiedziano wcześniej, serwery WWW obsługują petycje HTTP, podczas gdy serwery aplikacji obsługują petycje dla komponentów rozproszonych. Być może najłatwiejszym sposobem na zrozumienie różnicy jest porównanie dwóch produktów pod względem oferowanego środowiska programistycznego.

Serwer WWW -> Środowisko programowania

IIS: ASP (.NET)

Tomcat: Servlet

Jetty: Servlet

Apache: Php, CGI

Serwery aplikacji -> Środowisko programistyczne

MTS: COM +

WAS: EJB

JBoss: EJB

Serwer aplikacji WebLogic: EJB

Zasadnicza różnica polega na tym, że serwery aplikacji obsługują niektóre technologie komponentów rozproszonych , zapewniając takie funkcje, jak zdalne wywoływanie i transakcje rozproszone, takie jak EJB w świecie Java lub COM + na platformie Microsoft. Serwer HTTP często obsługuje prostsze środowiska programowania, często skrypty, takie jak ASP (.NET) w przypadku Microsoft lub Servlet, w tym JSP i wiele innych w przypadku Java lub PHP i CGI w przypadku Apache.

Inne możliwości, takie jak równoważenie obciążenia, klastrowanie, przełączanie awaryjne sesji, pule połączeń itp., Które kiedyś znajdowały się w dziedzinie serwerów aplikacji, stają się dostępne na serwerach internetowych, a także bezpośrednio lub za pośrednictwem produktów innych firm.

Na koniec warto zauważyć, że obraz jest dodatkowo zniekształcony przez „lekkie kontenery”, takie jak Spring Framework, które często uzupełniają przeznaczenie serwerów aplikacji w prostszy sposób i bez infrastruktury serwerów aplikacji. A ponieważ aspekt dystrybucji w aplikacjach zmienia się z komponentu rozproszonego na paradygmat usług i architekturę SOA, jest coraz mniej miejsca dla tradycyjnych serwerów aplikacji.


Czy którykolwiek z wymienionych serwerów aplikacji może być używany jako serwery WWW http, takie jak apache http?
LearningMath,

22

Główną różnicą między serwerem WWW a serwerem aplikacji jest to, że serwer WWW ma obsługiwać strony statyczne, np. HTML i CSS, podczas gdy serwer aplikacji jest odpowiedzialny za generowanie dynamicznej zawartości przez wykonanie kodu po stronie serwera, np. JSP, Servlet lub EJB.

Którego powinienem użyć?
Gdy poznasz różnicę między serwerem internetowym a serwerem aplikacji i kontenerami internetowymi, łatwo będzie dowiedzieć się, kiedy z nich korzystać. Potrzebujesz web serverpodobnego do Apache HTTPD, jeśli udostępniasz statyczne strony internetowe. Jeśli masz aplikację Java z JSP i serwletem do generowania dynamicznej zawartości, potrzebujesz web containersTomcat lub Jetty. Chociaż jeśli masz aplikację Java EE korzystającą z EJB, transakcje rozproszone, wiadomości i inne fantazyjne funkcje, niż potrzebujesz pełnoprawnych, application servertakich jak JBoss, WebSphere lub Oracle WebLogic.

Kontener WWW jest częścią serwera WWW, a serwer WWW jest częścią serwera aplikacji.

Serwer aplikacji

Serwer WWW składa się z kontenera WWW, podczas gdy serwer aplikacji składa się z kontenera WWW oraz kontenera EJB.


„Web Server składa się z pojemnika internetowej”: zgodnie youtu.be/ATObcDPLa40 Ten film, to jest fałszywa
Vyshnav Ramesh Thrissur

20

W skrócie, serwer sieciowy to serwer, który udostępnia użytkownikom strony internetowe za pośrednictwem protokołu http. Serwer aplikacji jest serwerem, który obsługuje logikę biznesową dla systemu. Często hostuje zarówno długo działające / procesy wsadowe i / lub usługi międzyoperacyjne nieprzeznaczone do spożycia przez ludzi (usługi REST / JSON, SOAP, RPC itp.).


2
Co oznacza termin „logika biznesowa hosta”? Jak się to wykonuje?
TwiggedToday

Czy logika biznesowa jest udostępniana klientowi za pośrednictwem usług sieciowych?
TwiggedToday

Może być obsługiwany za pośrednictwem usług internetowych lub może być obsługiwany przez dowolny inny interfejs (TCP, MQ, płaskie pliki w udziale (nie polecam ostatniego)).
C. Ross,

Może to być mylące. Serwer aplikacji niczego nie hostuje. Twój kod obsługuje logikę biznesową, a serwer aplikacji działa jako klej między tym a stronami internetowymi, o które proszą użytkownicy.
Pithikos,

18

Serwer WWW obsługuje wyłącznie żądania HTTP / HTTPS. Służy do treści w Internecie przy użyciu protokołu HTTP / HTTPS.

Serwer aplikacji obsługuje logikę biznesową programów aplikacyjnych za pośrednictwem dowolnej liczby protokołów, w tym ewentualnie HTTP. Program aplikacyjny może korzystać z tej logiki, tak jak wywołuje metodę na obiekcie. W większości przypadków serwer udostępnia tę logikę biznesową za pomocą interfejsu API komponentu, takiego jak model komponentu EJB (Enterprise JavaBean) znaleziony na serwerach aplikacji Java EE (Java Platform, Enterprise Edition). Najważniejsze jest to, że serwer WWW ujawnia wszystko poprzez protokół http, podczas gdy serwer aplikacji nie jest do niego ograniczony. Serwer aplikacji oferuje zatem znacznie więcej usług niż serwer WWW, które zazwyczaj obejmują:

  • Interfejs API (zastrzeżony lub nie)
  • Równoważenie obciążenia, przełączanie awaryjne ...
  • Zarządzanie cyklem życia obiektu
  • Zarządzanie stanem (sesja)
  • Zarządzanie zasobami (np. Pule połączeń z bazą danych)

Większość serwerów aplikacji ma wbudowany serwer WWW, co oznacza, że ​​App Server może robić wszystko, co jest w stanie zrobić. Dodatkowo serwer aplikacji ma komponenty i funkcje do obsługi usług na poziomie aplikacji, takich jak pula połączeń, pule obiektów, obsługa transakcji, usługi przesyłania wiadomości itp.

Serwer aplikacji może (ale nie zawsze) działać na serwerze WWW w celu wykonania logiki programu, której wyniki mogą być następnie dostarczone przez serwer WWW. To jeden przykład scenariusza serwera WWW / serwera aplikacji. Dobrym przykładem w świecie Microsoft jest relacja Internet Information Server / SharePoint Server. IIS to serwer sieciowy; SharePoint to serwer aplikacji. SharePoint znajduje się „na szczycie” IIS, wykonuje określoną logikę i obsługuje wyniki za pośrednictwem IIS. W świecie Java istnieje podobny scenariusz, na przykład z Apache i Tomcat.

Ponieważ serwery sieciowe dobrze nadają się do treści statycznych, a serwery aplikacji do treści dynamicznych, większość środowisk produkcyjnych ma serwer WWW działający jako odwrotne proxy do serwera aplikacji. Oznacza to, że podczas obsługi żądania strony treść statyczna, taka jak obrazy / statyczny HTML, jest obsługiwana przez serwer WWW, który interpretuje żądanie. Przy użyciu pewnego rodzaju techniki filtrowania (głównie rozszerzenia żądanego zasobu) serwer sieciowy identyfikuje dynamiczne żądanie treści i w sposób transparentny przekazuje je do serwera aplikacji.

Przykładem takiej konfiguracji jest serwer HTTP Apache i serwer BEA WebLogic. Serwer HTTP Apache to serwer WWW, a BEA WebLogic to serwer aplikacji. W niektórych przypadkach serwery są ściśle zintegrowane, takie jak IIS i .NET Runtime. IIS to serwer WWW. gdy jest wyposażony w środowisko uruchomieniowe .NET, IIS może świadczyć usługi aplikacji


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
Ma jakieś wzmianki o innych rzeczach, ale dużo wydaje mi się plagiatem. Jak lista na końcu, jakby skopiowana z posta Dana. I „… odwróć serwer proxy na serwer aplikacji…” Również częściowo wykorzystuję HTTP Server i BEA WebLogic Server jako przykłady na końcu prawie to samo, co napisał Rutesh Makhijani.
brat

10

Serwer aplikacji jest zwykle projektowany i wdrażany w celu ułatwienia dłuższych procesów, które również będą wymagały więcej zasobów.

Serwer sieciowy jest używany do krótkich serii, które generalnie nie wymagają dużych zasobów. Ma to na celu głównie ułatwienie obsługi ruchu sieciowego.


10

Granica między nimi staje się coraz cieńsza.

Serwery aplikacji udostępniają klientom logikę biznesową. Oznacza to, że serwery aplikacji składają się z zestawu metod (choć nie tylko, może to być nawet komputer sieciowy umożliwiający wielu użytkownikom uruchamianie na nim oprogramowania) do wykonywania logiki biznesowej. Więc po prostu wyświetli pożądane wyniki, a nie treść HTML. (podobny do wywołania metody). Więc nie jest ściśle oparty na HTTP.

Ale serwery WWW przekazują treść HTML do przeglądarek internetowych (ściśle oparte na HTTP). Serwery WWW były w stanie obsłużyć tylko statyczne zasoby internetowe, ale pojawienie się skryptów po stronie serwera pozwoliło również serwerom na obsługę dynamicznej zawartości. Tam, gdzie serwer internetowy przyjmuje żądanie i kieruje je do odpowiednich skryptów (PHP, JSP, skrypty CGI itp.) W celu UTWORZENIA zawartości HTML, która zostanie wysłana do klienta. Po otrzymaniu treści serwer WWW wyśle ​​stronę HTML do klienta.

Jednak obecnie oba te serwery są używane razem. Gdzie serwer WWW przyjmuje żądanie, a następnie wywołuje skrypt w celu utworzenia treści HTML. Następnie skrypt ponownie wywoła serwer aplikacji LOGIC (np. Pobierz szczegóły transakcji), aby wypełnić treść HTML.

Oba serwery są efektywnie wykorzystywane.

Dlatego .... Możemy śmiało powiedzieć, że obecnie w większości przypadków serwery sieciowe są używane jako podzbiór serwerów aplikacji. ALE teatralnie tak nie jest.

Przeczytałem wiele artykułów na ten temat i uznałem ten artykuł za bardzo przydatny.


9

W języku Java jest jeszcze jeden: kontener WWW (a ściślej kontener serwletu). Powiedzmy, że pomiędzy serwerem WWW a serwerem aplikacji.

Kontener WWW w języku Java jest serwerem aplikacji, który zasadniczo implementuje tylko część JSP / Servlet Java EE i brakuje kilku podstawowych części Java EE, takich jak obsługa EJB. Przykładem jest Apache Tomcat.


8

Serwer aplikacji jest maszyną (w rzeczywistości wykonywalnym procesem działającym na niektórych komputerach), która „nasłuchuje” (na dowolnym kanale, przy użyciu dowolnego protokołu), od żądań klientów dotyczących dowolnej usługi, którą świadczy, a następnie robi coś na podstawie tych żądań. (może, ale nie musi, wiązać się z respektem dla klienta)

Serwer sieciowy działa na komputerze, który „nasłuchuje” konkretnie na kanale TCP / IP za pomocą jednego z protokołów „internetowych” (http, https, ftp itp.) I robi wszystko, co robi na podstawie tych przychodzących żądań. .. Ogólnie (zgodnie z pierwotną definicją) pobrał / wygenerował i zwrócił klientowi stronę internetową HTML, albo pobrany ze statycznego pliku HTML na serwerze, albo zbudowany dynamicznie na podstawie parametrów w przychodzącym żądaniu klienta.


3
czy możesz podać przykłady skrzynek do kąpieli.
frewper

Czy możesz podać przykłady obu? Dzięki.
LearningMath

8

Serwer WWW obsługuje protokół HTTP do obsługi stron internetowych. Serwer aplikacji może (ale nie zawsze) działać na serwerze WWW w celu wykonania logiki programu, której wyniki mogą być następnie dostarczone przez serwer WWW. To jeden przykład scenariusza serwera WWW / serwera aplikacji.

Dobrym przykładem w świecie Microsoft jest relacja Internet Information Server / SharePoint Server. IIS to serwer sieciowy; SharePoint to serwer aplikacji. SharePoint znajduje się „na szczycie” IIS, wykonuje określoną logikę i obsługuje wyniki za pośrednictwem IIS.

W świecie Java istnieje podobny scenariusz, na przykład z Apache i Tomcat.


8

Z jednej strony serwer WWW obsługuje treści internetowe (HTML i statyczne) za pośrednictwem protokołu HTTP. Z drugiej strony serwer aplikacji jest kontenerem, na którym można budować i udostępniać logikę biznesową i procesy aplikacjom klienckim za pomocą różnych protokołów, w tym HTTP w architekturze wielowarstwowej.

Serwer aplikacji oferuje zatem znacznie więcej usług niż serwer WWW, które zazwyczaj obejmują:

  • Interfejs API (zastrzeżony lub nie)
  • Zarządzanie cyklem życia obiektu,
  • Zarządzanie stanem (sesja),
  • Zarządzanie zasobami (np. Pule połączeń z bazą danych),
  • Równoważenie obciążenia, przełączanie awaryjne ...

AFAIK, ATG Dynamo był jednym z pierwszych serwerów aplikacji pod koniec lat 90-tych (zgodnie z powyższą definicją). Na początku 2000 roku było to panowanie niektórych zastrzeżonych serwerów aplikacji, takich jak ColdFusion (CFML AS), BroadVision (JavaScript po stronie serwera AS) itp. Ale tak naprawdę żaden nie przetrwał ery serwerów aplikacji Java.


6

Podstawowa znajomość :

W architekturze serwera klienta

Serwer:> Który obsługuje żądania.

Klient:> Który korzysta z usługi.

Serwer WWW i serwer aplikacji to aplikacje, które działają jak serwery dla swoich klientów.

Nazwiska otrzymywali na podstawie miejsca użytkowania.

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.

Stosowanie --

      we require low processing rates,

      regular processing practices involves.

Np .: Wszystkie płaskie serwery są ogólnie dostępne gotowe, które obsługują tylko treści internetowe.

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.

Stosowanie --

      we require multi point processing,

      specialized processing techniques involves like for AI.

Np .: serwery map Google, serwery wyszukiwania Google, serwery dokumentów Google, serwery Microsoft 365, serwery Microsoft Computer Vision dla AI.

Możemy je przyjąć jako poziomy / hierarchie w architekturze 4-poziomowej / n-poziomowej.

 So they can provide 
                    load balancing,
                    multiple security levels,
                    multiple active points,
                    even they can provide different request processing environments.

Kliknij ten link, aby uzyskać standardowe analogie architektury:

https://docs.microsoft.com/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)


5

Największą różnicą jest to, że serwer WWW obsługuje żądania HTTP, podczas gdy serwer aplikacji wykonuje logikę biznesową na dowolnej liczbie protokołów.


5

W rzeczywistości Apache to serwer WWW, a Tomcat to serwer aplikacji. Kiedy jako żądanie HTTP przychodzi do serwera WWW. Następnie statyczna zawartość odsyła z powrotem do przeglądarki przez serwer WWW. Czy istnieje logika do zrobienia, a następnie żądanie to zostanie wysłane do serwera aplikacji. po przetworzeniu logiki odpowiedź następnie wyślij na serwer WWW i wyślij do klienta.


4

Wszystko to po prostu komplikuje coś bardzo prostego. Serwer aplikacji zawiera serwer WWW, serwer aplikacji ma tylko kilka dodatkowych dodatków / rozszerzeń niż standardowe serwery WWW. Jeśli spojrzysz na TomEE jako przykład:

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

Zobaczysz, że Tomcat (kontener / serwer internetowy) to po prostu kolejne narzędzie w arsenale serwerów aplikacji. Możesz pobrać JPA i inne technologie na serwer WWW, jeśli chcesz, ale serwery aplikacji po prostu pakują wszystkie te rzeczy dla Twojej wygody. Aby zostać w pełni sklasyfikowanym jako serwer aplikacji, musisz zasadniczo przestrzegać listy narzędzi określonych przez jakiś standard.


2

Nie musi istnieć wyraźna linia podziału. Obecnie wiele programów łączy elementy zarówno - obsługi zapytań HTTP (serwer WWW) i obsługi logiki biznesowej (serwer aplikacji)


2

Od https://en.wikipedia.org/wiki/Web_server

Serwer WWW to system komputerowy, który przetwarza żądania za pośrednictwem protokołu HTTP, podstawowy protokół sieciowy używany do dystrybucji informacji w sieci World Wide Web. Termin ten może odnosić się do całego systemu, a konkretnie do oprogramowania, które akceptuje i nadzoruje żądania HTTP .

From https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

Serwer aplikacji działa za serwerem WWW (np. Apache lub Microsoft Internet Information Services (IIS)) i (prawie zawsze) przed bazą danych SQL (np. PostgreSQL, MySQL lub Oracle).

Aplikacje internetowe to kody komputerowe działające na serwerach aplikacji i napisane w języku (językach) obsługiwanym przez serwer aplikacji i wywołujące biblioteki wykonawcze oraz komponenty oferowane przez serwer aplikacji .


2

Serwer aplikacji i serwer WWW są używane do hostowania aplikacji WWW. Z drugiej strony Web Server zajmuje się kontenerem internetowym Application Server zajmuje się kontenerem internetowym, a także kontenerem EJB (Enterprise JavaBean) lub kontenerem COM + dla Microsoft dot Net.

Serwer WWW został zaprojektowany do obsługi statycznych treści HTTP, takich jak HTML, obrazy itp., A dla treści dynamicznych są dostępne wtyczki do obsługi języków skryptowych takich jak Perl, PHP, ASP, JSP itp. Ogranicza się to do protokołu HTTP. Poniższe serwery mogą generować dynamiczną zawartość HTTP.

Środowisko programistyczne serwera WWW:

IIS: ASP (.NET)

Apache Tomcat: Servlet

Jetty: Servlet

Apache: Php, CGI

Serwer aplikacji może robić wszystko, co serwer sieciowy potrafi i nasłuchuje przy użyciu dowolnego protokołu, a serwer aplikacji ma komponenty i funkcje do obsługi usług na poziomie aplikacji, takich jak pula połączeń, pula obiektów, obsługa transakcji, usługi przesyłania wiadomości itp.

Środowisko programowania serwera aplikacji:

MTS: COM +

WAS: EJB

JBoss: EJB

Serwer aplikacji WebLogic: EJB


1

Chociaż mogą się nakładać na siebie (niektóre serwery WWW mogą być nawet używane jako serwery aplikacji), największą różnicą IMHO jest model przetwarzania i zarządzanie sesją:

W modelu przetwarzania serwera WWW nacisk kładziony jest na obsługę żądań; pojęcie „sesji” jest prawie wirtualne. To znaczy, że „sesja” jest symulowana przez przeniesienie reprezentacji stanu między klientem a serwerem (stąd REST) ​​i / lub serializację jej do zewnętrznego trwałego magazynu (SQL Server, Memcached itp.).

Na serwerze aplikacji sesja jest zwykle bardziej wyraźna i często przyjmuje postać obiektu żyjącego w pamięci serwera aplikacji przez cały czas trwania „sesji”.


0

To zależy od konkretnej architektury. Niektóre serwery aplikacji mogą natywnie używać protokołów internetowych (XML / RPC / SOAP przez HTTP), więc różnica techniczna jest niewielka. Zazwyczaj serwer WWW jest skierowany do użytkownika, obsługujący różnorodne treści przez HTTP / HTTPS, podczas gdy serwer aplikacji nie jest przeznaczony do obsługi przez użytkownika i może używać niestandardowych lub nierutowalnych protokołów. Oczywiście w przypadku RIA / AJAX różnicę można jeszcze bardziej zaciemnić, obsługując tylko treści inne niż HTML (JSON / XML) dla klientów pompujących określone usługi zdalnego dostępu.


0

IMO, przede wszystkim chodzi o rozdzielenie obaw.

Z czysto technicznego punktu widzenia możesz zrobić wszystko (zawartość sieci + logika biznesowa) na jednym serwerze WWW. Jeśli to zrobisz, informacja zostanie osadzona w treści żądania HTML. Jaki byłby wpływ?

Na przykład wyobraź sobie, że masz 2 różne aplikacje, które renderują zupełnie inną treść HTML w przeglądarce. Jeśli podzielisz logikę biznesową na serwer aplikacji, możesz udostępnić różne serwery sieciowe wyszukujące te same dane na serwerze aplikacji za pomocą skryptów. Jeśli jednak nie rozdzielisz logiki i nie zatrzymasz jej na serwerze internetowym, za każdym razem, gdy zmienisz swój model biznesowy, skończysz na zmianie na każdym serwerze internetowym, który posiadasz, co zajmie więcej czasu, będzie mniej niezawodne i podatne na błędy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.