Serwer aplikacji, serwer internetowy: jaka jest różnica?

23 sierpnia 2002

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

ZA:

Serwer WWW obsługuje wyłącznie żądania HTTP, podczas gdy serwer aplikacji obsługuje logikę biznesową do programów aplikacji za pośrednictwem dowolnej liczby protokołów.

Przyjrzyjmy się każdemu bardziej szczegółowo.

Serwer WWW

Serwer sieci Web obsługuje protokół HTTP. Gdy serwer sieci Web odbiera żądanie HTTP, odpowiada odpowiedzią HTTP, taką jak odesłanie strony HTML. Aby przetworzyć żądanie, serwer sieci Web może odpowiedzieć statyczną stroną HTML lub obrazem, wysłać przekierowanie lub delegować generowanie odpowiedzi dynamicznej do innego programu, takiego jak skrypty CGI, strony JSP (JavaServer Pages), serwlety, ASP (strony Active Server Pages) ), skryptów JavaScript po stronie serwera lub innej technologii po stronie serwera. Niezależnie od celu, takie programy działające po stronie serwera generują odpowiedź, najczęściej w formacie HTML, do przeglądania w przeglądarce internetowej.

Zrozum, że model delegacji serwera WWW jest dość prosty. Kiedy żądanie przychodzi do serwera WWW, serwer WWW po prostu przekazuje to żądanie do programu, który najlepiej go obsłuży. Serwer sieci Web nie zapewnia żadnej funkcjonalności poza prostym zapewnieniem środowiska, w którym program po stronie serwera może wykonywać i przekazywać wygenerowane odpowiedzi. Program po stronie serwera zwykle zapewnia sobie takie funkcje, jak przetwarzanie transakcji, łączność z bazą danych i przesyłanie wiadomości.

Chociaż sam serwer sieci Web może nie obsługiwać transakcji lub puli połączeń z bazą danych, może wykorzystywać różne strategie odporności na uszkodzenia i skalowalności, takie jak równoważenie obciążenia, buforowanie i tworzenie klastrów - funkcje często błędnie przypisywane jako funkcje zarezerwowane tylko dla serwerów aplikacji.

Serwer aplikacji

Jeśli chodzi o serwer aplikacji, zgodnie z naszą definicją, serwer aplikacji udostępnia logikę biznesową aplikacjom klienckim za pośrednictwem różnych protokołów, w tym prawdopodobnie HTTP. Podczas gdy serwer sieci Web zajmuje się głównie wysyłaniem kodu HTML do wyświetlenia w przeglądarce internetowej, serwer aplikacji zapewnia dostęp do logiki biznesowej do wykorzystania przez aplikacje klienckie. Aplikacja może używać tej logiki w taki sam sposób, jak wywoływałaby metodę na obiekcie (lub funkcji w świecie procedur).

Tacy klienci serwera aplikacji mogą obejmować GUI (graficzny interfejs użytkownika) działające na komputerze PC, serwerze WWW lub nawet na innych serwerach aplikacji. Informacje przesyłane tam i z powrotem między serwerem aplikacji a jego klientem nie są ograniczone do prostych znaczników wyświetlania. Zamiast tego informacja jest logiką programu. Ponieważ logika przyjmuje postać wywołań danych i metod, a nie statycznego kodu HTML, klient może zastosować ujawnioną logikę biznesową w dowolny sposób.

W większości przypadków serwer udostępnia tę logikę biznesową za pośrednictwem komponentu API, takiego jak model komponentu EJB (Enterprise JavaBean) znajdujący się na serwerach aplikacji J2EE (Java 2 Platform, Enterprise Edition). Ponadto serwer aplikacji zarządza własnymi zasobami. Takie obowiązki związane z utrzymywaniem bramek obejmują bezpieczeństwo, przetwarzanie transakcji, łączenie zasobów i przesyłanie wiadomości. Podobnie jak serwer WWW, serwer aplikacji może również wykorzystywać różne techniki skalowalności i odporności na uszkodzenia.

Przykład

Jako przykład rozważmy sklep internetowy, który dostarcza informacji o cenach i dostępności w czasie rzeczywistym. Najprawdopodobniej witryna zapewni formularz, za pomocą którego możesz wybrać produkt. Po przesłaniu zapytania witryna przeprowadza wyszukiwanie i zwraca wyniki osadzone na stronie HTML. Witryna może implementować tę funkcjonalność na wiele sposobów. Pokażę ci jeden scenariusz, który nie korzysta z serwera aplikacji, a inny, który go używa. Zobaczenie, czym różnią się te scenariusze, pomoże ci zobaczyć funkcję serwera aplikacji.

Scenariusz 1: serwer WWW bez serwera aplikacji

W pierwszym scenariuszu sam serwer sieci Web zapewnia funkcjonalność sklepu internetowego. Serwer WWW przyjmuje żądanie, a następnie przekazuje je do programu po stronie serwera, który może je obsłużyć. Program po stronie serwera wyszukuje informacje o cenach z bazy danych lub pliku prostego. Po pobraniu program działający na serwerze wykorzystuje te informacje do sformułowania odpowiedzi HTML, a następnie serwer sieci Web odsyła ją z powrotem do przeglądarki internetowej.

Podsumowując, serwer sieci Web po prostu przetwarza żądania HTTP, odpowiadając za pomocą stron HTML.

Scenariusz 2: serwer WWW z serwerem aplikacji

Scenariusz 2 przypomina scenariusz 1, ponieważ serwer sieci Web nadal deleguje generowanie odpowiedzi do skryptu. Można jednak teraz umieścić logikę biznesową dla wyszukiwania cen na serwerze aplikacji. Dzięki tej zmianie, zamiast skryptu, który wie, jak wyszukiwać dane i formułować odpowiedź, skrypt może po prostu wywołać usługę wyszukiwania serwera aplikacji. Skrypt może następnie użyć wyniku usługi, gdy skrypt generuje odpowiedź HTML.

W tym scenariuszu serwer aplikacji obsługuje logikę biznesową do wyszukiwania informacji o cenach produktu. Ta funkcja nie mówi nic o wyświetlaniu ani o tym, jak klient musi wykorzystywać informacje. Zamiast tego klient i serwer aplikacji przesyłają dane tam iz powrotem. Gdy klient wywołuje usługę wyszukiwania serwera aplikacji, usługa po prostu wyszukuje informacje i zwraca je do klienta.

Dzięki oddzieleniu logiki cenowej od kodu generującego odpowiedzi HTML, logika wyceny staje się znacznie bardziej wielokrotnego użytku między aplikacjami. Drugi klient, na przykład kasa fiskalna, może również zadzwonić do tej samej usługi, w której urzędnik sprawdza klienta. Natomiast w scenariuszu 1 usługi wyszukiwania cen nie można ponownie wykorzystać, ponieważ informacje są osadzone na stronie HTML. Podsumowując, w modelu ze scenariusza 2 serwer sieci Web obsługuje żądania HTTP, odpowiadając za pomocą strony HTML, podczas gdy serwer aplikacji obsługuje logikę aplikacji, przetwarzając żądania dotyczące cen i dostępności.

Ostrzeżenia

Ostatnio usługi XML sieci Web zatarły granicę między serwerami aplikacji a serwerami sieci Web. Przekazując ładunek XML do serwera WWW, serwer WWW może teraz przetwarzać dane i odpowiadać w podobny sposób, jak serwery aplikacji w przeszłości.

Ponadto większość serwerów aplikacji zawiera również serwer WWW, co oznacza, że ​​serwer WWW można traktować jako podzbiór serwera aplikacji. Podczas gdy serwery aplikacji zawierają funkcje serwera WWW, programiści rzadko wdrażają serwery aplikacji w takim charakterze. Zamiast tego, w razie potrzeby, często wdrażają samodzielne serwery WWW w tandemie z serwerami aplikacji. Takie rozdzielenie funkcjonalności zwiększa wydajność (proste żądania WWW nie wpłyną na wydajność serwera aplikacji), konfigurację wdrożenia (dedykowane serwery WWW, klastrowanie itd.) I pozwala na wybór najlepszego w swojej klasie produktu.

Tony Sintes jest niezależnym konsultantem i założycielem First Class Consulting, firmy konsultingowej specjalizującej się w łączeniu różnych systemów korporacyjnych i szkoleń. Poza First Class Consulting, Tony jest aktywnym niezależnym autorem, a także autorem książki Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Dowiedz się więcej na ten temat

  • Więcej artykułów na temat serwerów aplikacji można znaleźć w sekcji Java Application Servers w indeksie tematycznym JavaWorld

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Chcieć więcej? Pełny katalog pytań i odpowiedzi można znaleźć na stronie indeksu pytań i odpowiedzi dotyczących języka Java

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Przez ponad 100 wnikliwych porad Java z jednych z najlepszych umysłów w biznesie, wizyta JavaWorld” s Tips Java strona indeksu

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Dowiedz się więcej o serwerach aplikacji i serwerach internetowych z naszej dyskusji na temat języka Enterprise Java

    //forums.idg.net/[email protected]@.ee6b80a

  • Zarejestruj się, aby otrzymywać bezpłatny cotygodniowy biuletyn e-mailowy dotyczący oprogramowania Java Enterprise JavaWorld

    //www.javaworld.com/subscribe

  • Wiele artykułów związanych z IT znajdziesz w naszych siostrzanych publikacjach na .net

Ta historia: „Serwer aplikacji, serwer internetowy: Jaka jest różnica?” został pierwotnie opublikowany przez JavaWorld.