Serwery aplikacji - Wydział Matematyki i Informatyki UŁ
Transkrypt
Serwery aplikacji - Wydział Matematyki i Informatyki UŁ
Serwery aplikacji mgr Radosław Matusik Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/˜radmat [email protected] mgr Radosław Matusik Serwery aplikacji Serwer aplikacji Serwer aplikacji to: Serwer wchodzący w skład sieci komputerowej, przeznaczony do zdalnego uruchamiania i użytkowania aplikacji. Zestaw oprogramowania (platforma) wspierająca programistę / developera przy tworzeniu aplikacji. Umożliwia oddzielenie logiki biznesowej od usług dostarczanych przez producenta platformy (bezpieczeństwo, zarządzanie transakcjami, skalowalność, czy też dostęp do baz danych). Do serwerów aplikacji należą m.in.: JBoss, BEA WebLogic, IBM WebSphere oraz platforma .NET Microsoftu. Program działający na zdalnej maszynie obsługujący żądania kierowane do aplikacji, do której dostęp zapewnia. Użytkownik łączy się za pośrednictwem przeglądarki internetowej, kieruje żądanie do wybranej aplikacji, a całość operacji odbywa się po stronie usługodawcy serwera. mgr Radosław Matusik Serwery aplikacji Architektura WWW Rysunek: Architektura mgr Radosław Matusik Serwery aplikacji Realizacja aplikacji WWW wymaga zastosowania rozszerzonej architektury WWW, w skład której wchodzą trzy programowe warstwy funkcjonalne: warstwa klienta warstwa aplikacji warstwa danych mgr Radosław Matusik Serwery aplikacji Architektura serwerów aplikacji Kluczowym składnikiem rozszerzonej architektury WWW, umożliwiającym wykonywanie aplikacji WWW, jest serwer aplikacji. Serwer aplikacji jest oprogramowaniem o charakterze systemowym, które odpowiada m.in. za obsługę komunikacji z warstwą klienta i warstwą danych. Dzięki temu programista tworzący aplikacje WWW nie musi samodzielnie implementować kodu obsługi protokołu HTTP (z klientem HTTP) ani kodu obsługi komunikacji SQL (z serwerem bazy danych). mgr Radosław Matusik Serwery aplikacji 1 Warstwa kliencka aplikacje klienckie aplety 2 Warstwa webowa Java Servlet Java Server Pages Java Server Faces 3 Warstwa serwerowa Enterprise Java Beans 4 Wymiana danych pomiędzy warstwami mgr Radosław Matusik Serwery aplikacji Architektura czterowarstwowa Architektura czterowarstwowa (4-tier architecture) zakłada, że komponenty aplikacji WWW dzielą się na dwie grupy: komponenty logiki prezentacji i komponenty logiki biznesowej. mgr Radosław Matusik Serwery aplikacji Architektura Model-View-Controller Architektura Model-View-Controller zakłada, że komponenty aplikacji WWW dzielą się na trzy grupy: komponenty sterujące (controller), komponenty prezentacji (view) i komponenty modelu (model). mgr Radosław Matusik Serwery aplikacji Rodzaje serwerów aplikacji Apache Tomcat GlassFish Bea Weblogic ZOPE (Z Object Publishing Environment) Windows 2003 Server .Net mgr Radosław Matusik Serwery aplikacji Usługi serwerów aplikacji pule zasobów (na przykład pule bazy danych i pule obiektów) rozproszone zarządzanie transakcjami asynchroniczna komunikacja programowa, zazwyczaj poprzez kolejkowanie wiadomości dokładnie zsynchronizowany model aktywacji obiektu automatyczne interfejsy usług sieci Web XML umożliwiające dostęp do obiektów biznesowych usługi wykrywania awarii i stanu aplikacji zintegrowane zabezpieczenia mgr Radosław Matusik Serwery aplikacji Klienci serwerów aplikacji 1 Klient HTML: statyczny brak lub minimalna logika porozumiewa się za pośrednictwem HTTP 2 Klient Java aplet java+HTML własna logika porozumiewa się za pośrednictwem IIOP lub JRMI mgr Radosław Matusik Serwery aplikacji Zalety serwerów aplikacji niski koszt utrzymania klienta obsługa standardów otwartych szerokie możliwości generowania i publikowania informacji mgr Radosław Matusik Serwery aplikacji Wymagania stawiane serwerom aplikacji integralność transakcji skalowalność, wydajność stabilność otwartość (w sensie obsługi standardów) bezpieczeństwo ochrona inwestycji mgr Radosław Matusik Serwery aplikacji Cechy serwerów aplikacji umożliwia tworzenie i obsługę aplikacji napisanych m.in. w C, C++, Javie obsługuje wydajnie transakcyjne relacyjne bazy danych, jest niezależny od producenta bazy oferuje dużą skalowalność (obsługa klastrów) zapewnia zintegrowane, zcentralizowane zarządzanie obsługuje standardy: HTTP, HTML, CGI, NSAPI (Netscape), ISAPI (Microsoft), Java zawiera środowisko do tworzenia, testowania, wdrażania i zarządzania aplikacjami mgr Radosław Matusik Serwery aplikacji Pliki konfiguracyjne w katalogu conf server.xml tomcat-users.xml web.xml mgr Radosław Matusik Serwery aplikacji Pliki konfiguracyjne w katalogu logs catalina.2016-02-20.log localhost access log.2016-02-20 mgr Radosław Matusik Serwery aplikacji Java Enterprise Edition Java Enterprise Edition (w skrócie J EE) jest standardem tworzenia zorientowanych na usługi aplikacji biznesowych (Service Oriented Architecture), utworzonym na bazie języka Java i technologii Java 2 Standard Edition. W praktyce jest to pewien zbiór (pakiet) różnorodnych technologii i frameworków, który umożliwia tworzenie aplikacji. mgr Radosław Matusik Serwery aplikacji Aplikacje webowe korzystają z grupy tych samych elementów, z których korzystają aplikacje biznesowe. Jednak formalnie aplikacje webowe powinny korzystać jedynie z: JavaServer Faces JavaServer Pages JavaServer Pages Standard Tag Library Java Servlet Jednym z najważniejszych elementów, które odróżniają aplikacje J EE od innych, jest konieczność ich uruchamiania na specjalnych serwerach aplikacji. Do aplikacji biznesowych często wykorzystywany jest serwer GlassFish, który oczywiście obsługuje także technologię EJB. mgr Radosław Matusik Serwery aplikacji Układ katalogów projektu w Netbeansie Struktura stworzonego za pomocą Netbeansa projektu jest następująca: 1 Web Pages META-INF WEB-INF 2 Source Packages 3 Libraries mgr Radosław Matusik Serwery aplikacji Serwlety Serwlet w Javie jest klasą, która rozszerza możliwości serwera aplikacji. Praktycznie jedynym wymaganiem jest, aby serwlet działał w trybie żądanie - odpowiedź. Serwlet wykonuje się w środowisku serwera WWW (aplikacji) i nie może funkcjonować autonomicznie. Serwer WWW musi zapewniać obsługę serwletów Java. mgr Radosław Matusik Serwery aplikacji Hierarchia dziedziczenia Interfejs Servlet Abstrakcyjna klasa GenericServlet Klasa HttpServlet mgr Radosław Matusik Serwery aplikacji Metody do* doGet() doPost() doHead() doTrace() doPut() doDelete() doOptions() doConnect() mgr Radosław Matusik Serwery aplikacji Interfejs HttpServletRequest Najbardziej istotne metody interfejsu HttpServletRequest: Object getParameter(String nazwa) Enumeration<String> getParameterNames() String getRemoteUser() Cookie[] getCookies() String getHeader(String nazwa) mgr Radosław Matusik Serwery aplikacji int getIntHeader(String nazwa) long getDataHeader(String nazwa) String getContextPath() String getServletPath() String getPathInfo() mgr Radosław Matusik Serwery aplikacji Interfejs HttpServletResponse Najbardziej istotne operacje, które będziemy wykonywać przesyłając odpowiedź klientowi (dzięki interfejsowi HttpServletRequest): przesyłanie odpowiedzi w postaci danych tekstowych lub binarnych tworzenie i przesyłanie ciasteczek dodawanie do odpowiedzi dowolnych nagłówków przekierowywanie żadań lub przesyłanie kodów błędu mgr Radosław Matusik Serwery aplikacji Życie serwletu W chwili uruchomienia aplikacji serwer aplikacji podejmuje następujące działania: załadowanie klasy serwletu utworzenie instancji serwletu wywołanie metody init() wywołanie metody service() mgr Radosław Matusik Serwery aplikacji Struktura serwletu protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } mgr Radosław Matusik Serwery aplikacji protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } mgr Radosław Matusik Serwery aplikacji Zalety i wady serwletu 1 Zalety: dostępne funkcje do obsługi typowych czynności mechanizm stosunkowo ustandaryzowany mechanizm uniwersalny i łatwo rozszerzalny stosunkowo bezpieczne 2 Wady: w bardziej złożonych środowiskach wydajność może pozostawiać wiele do życzenia (wymagania na RAM, garbage collection) występują istotne różnice pomiędzy różnymi środowiskami bazującymi na serwletach (np. por. - Tomcat, Oracle App. Server, IBM Websphere) mgr Radosław Matusik Serwery aplikacji