Zaawansowane aplikacje internetowe

From Studia Informatyczne

Spis treści

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Celem wykładu jest omówienie metod projektowania i implementacji aplikacji biznesowych opartych o rozproszone komponenty usługowe. Przedstawione zostaną technologie XML umożliwiające integrację heterogenicznych modułów programowych. Omówione będą technologie konstrukcji komponentów usługowych, m.in. Web Services, Enterprise JavaBeans, CORBA, oraz metody ich wykorzystania do realizacji systemów klasy Workflow Management, m.in. BPEL. Poruszone zostaną zagadnienia opisu semantyki komponentów usługowych, ich odkrywania oraz wykorzystywania w środowiskach Grid Computing. Przedstawione będą technologie konstrukcji internetowych portali korporacyjnych opartych o rozproszone komponenty usługowe.

Sylabus

Autor sylabusa

  • Dr hab. inż. Maciej Zakrzewicz
  • E-mail: maciej.zakrzewicz@cs.put.poznan.pl

Autorzy kursu

  • Kurs został przygotowany przez zespół pracowników Instytutu Informatyki Politechniki Poznańskiej pod kierunkiem dr hab. inż. Macieja Zakrzewicza w składzie: dr inż. Mikołaj Morzy, dr inż. Marek Wojciechowski, dr inż. Juliusz Jezierski, mgr inż. Mariusz Masewicz, mgr inż. Paweł Boiński.

Wymagania wstępne

  • Sieci komputerowe
  • Programowanie obiektowe (język Java)
  • Bazy danych
  • Aplikacje WWW

Zawartość

  • Pierwszą część kursu (2h) stanowi wprowadzenie do problematyki architektur zorientowanych na usługi i przetwarzania Grid Computing.
  • Druga część kursu (3h) omawia podstawowe rozwiązania technologiczne umożliwiające implementację elektronicznej wymiany danych za pomocą dokumentów XML: koncepcję drzew DOM i ich odniesienie do struktury dokumentów XML, specyfikację biblioteki programisty W3C DOM API, implementację drzew DOM w języku Java, nawigację wewnątrz drzew DOM w języku Java, wprowadzenie do języka zapytań XPath ułatwiającego przeszukiwanie drzew DOM oraz parsery DOM, służące do automatycznego generowania drzew DOM na podstawie dokumentów XML.
  • Trzecia część kursu (3h) przedstawia architekturę CORBA, standard tworzenia rozproszonych aplikacji obiektowych. Wykład ma na celu wprowadzenie słuchacza w zagadnienia związane z tworzeniem rozproszonych, niezależnych od platformy aplikacji internetowych oraz przedstawienie niezbędnych podstaw architektury CORBA. W trakcie wykładu zostaną przedstawione podstawowe komponenty architektury: język definicji interfejsów IDL, brokera ORB, sposób zarządzania obiektami, oraz dodatkowe usługi i adaptery. Wykład zakończy krótka prezentacja tworzenia aplikacji CORBA w języku Java.
  • Czwarta część kursu (3h) obejmuje omówienie technologii Enterprise JavaBeans (EJB). Wykład rozpocznie się od wprowadzenia do technologii EJB i przedstawienia jej roli w ramach platformy Java EE. Następnie przedstawione będą dwa istniejące typy komponentów EJB: komponenty sesyjne i komunikatowe. Omówione będą sposoby korzystania z komponentów EJB z rozróżnieniem na klientów zdalnych i lokalnych. Na zakończenie omówione będzie przetwarzanie transakcyjne na poziomie komponentów EJB.
  • Piąta część kursu (2h) omawia technologię Web Services, umożliwiającą implementację rozproszonych komponentów programowych udostępnianych za pośrednictwem protokołu SOAP. Wykład obejmie przedstawienie architektury Web Services, protokołu komunikacyjnego SOAP, języka opisu interfejsu WSDL i rejestrów UDDI.
  • Szósta część kursu (3h) skupia się na implementacji procesów biznesowych w języku BPEL. Omówiona zostanie składnia języka i jego zastosowania do modelowania procesów opartych o wywołania komponentów Web Services.
  • Siódmą część kursu (2h) stanowi przedstawienie zaawansowanych mechanizmów dostępu do baz danych w aplikacjach Java EE. Wykład rozpocznie się od krótkiego wprowadzenia do technologii odwzorowania obiektowo-relacyjnego (O/RM). Następnie omówiona będzie najpopularniejsza z technologii O/RM – Hibernate. Dalsza część wykładu poświęcona będzie nowemu standardowi dostępu do baz danych z aplikacji Java - Java Persistence.
  • Ósma część kursu (2h) dotyczy techniki tworzenia aplikacji internetowych AJAX. Wykład obejmuje: omówienie założeń AJAX i motywacji dla powstania tej techniki, przedstawienie technologii składowych AJAX i ich ról oraz ilustrację sposobu tworzenia aplikacji AJAX na prostym przykładzie. Przedstawione i krótko omówione będą też dwa popularne rzeczywiste serwisy internetowe oparte o AJAX, które miały duże znaczenie dla rozpropagowania tej techniki. Wykład zakończy wskazanie zalet i wad techniki AJAX oraz krótkie podsumowanie.
  • Dziewiąta część kursu (2h) porusza koncepcję architektury Grid Computing. Omówione zostaną motywacje dla rozwoju środowisk Grid Computing, pierwsze zastosowania Grid Computing w projekcie SETI@home oraz narzędzia programowania tego typu środowisk.
  • Dziesiąta część kursu (6h) przedstawia problematykę poprawnego projektowania aplikacji internetowych. Podczas wykładu skupimy się na warstwach prezentacji i biznesowej. W pierwszej części omówione zostaną istotne elementy składające się na warstwę prezentacji: zarządzanie sesją, kontrola dostępu klienta, duplikacja formularzy, walidacja danych. Następnie przedstawione zostaną błędne praktyki i rozwiązania, które często są spotykane w warstwie prezentacji. Przedstawimy najważniejsze zasady związane z projektowaniem warstwy biznesowej, w szczególności skupimy się na poprawnym stosowaniu komponentów sesyjnych i encyjnych. Podobnie jak poprzednio, przedstawiony zostanie katalog często spotykanych błędów projektowych. Dalsza część wykładu będzie poświęcona refaktoryzacji istniejących już aplikacji – przedstawione zostaną proste modyfikacje poprawiające istniejący projekt i ulepszające aplikację. Następnie przedstawimy katalog wzorców projektowych Java EE. Zaprezentujemy pojęcie wzorca, kategoryzację wzorców, zalety stosowania wzorców oraz podstawy podejścia warstwowego, na którym bazuje architektura Java EE, a które jest niezbędne dla poprawnego zrozumienia idei i znaczenia stosowania wzorców projektowych. Kolejne części wykładu stanowią prezentację ponad dwudziestu wzorców projektowych, rozwiązujących problemy najczęściej spotykane w aplikacjach Java EE. Prezentacja została podzielona logicznie według warstw: jako pierwsze prezentowane są wzorce warstwy prezentacji, następnie wzorce warstwy biznesowej, a na koniec wzorce warstwy integracji.
  • Celem jedenastej częśći kursu (2h) jest przedstawienie architektury szkieletowej Spring (ang. Spring Framework). Po krótkim wprowadzeniu do architektury Spring zostaną zaprezentowane najważniejsze, z punktu widzenia budowy aplikacji webowych, cechy architektury. W pierwszej kolejności zostanie przedstawiona infrastruktura Spring. Następnie zostaną zaprezentowane dwa najważniejsze mechanizmy stosowane w Springu: mechanizm wstrzykiwania zależności oraz programowanie aspektowe. Kolejna część wykładu zostanie poświęcona koncepcji fabryk komponentów. Spring implementuje wiele wzorców projektowych. Jako przykładowa zostanie przedstawiona implementacja wzorca Data Access Object i szablon do współpracy z interfejsem JDBC. Pokrótce zostaną również omówione transakcje w środowisku aplikacji Spring. Wykład zakończy prezentacja Spring MVC – pełnej implementacji architektury model-widok-kontroler obejmującej wszystkie warstwy aplikacji webowej.

Literatura

  • Graham S., Simeonov S., Boubez T., Davis D., Daniels G., et al., Java. Usługi WWW. Vademecum profesjonalisty, Helion, ISBN: 83-7197-991-6, 2003
  • McGovern, J., Sims, O., Jain, A., et.al., Enterprise Service Oriented Architectures: Concepts, Challenges, Recommendations, Springer, ISBN 14-0203-704-X, 2006

Moduły

Wykłady

  1. Wprowadzenie (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  2. Komunikacja XML (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  3. CORBA (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  4. EJB (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  5. O/RM (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  6. Web Services (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  7. Workflow (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  8. AJAX (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  9. Grid Computing (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  10. Projektowanie (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  11. Wzorce projektowe J2EE (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  12. Architektura Spring (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  13. Zagadnienia zaawansowane, Flash, Test, WIKI, PDF-kolor, PDF-czb

Laboratoria

  1. XML 1 (DOM, programowa budowa dokumentu) (P. Boiński), WIKI, PDF
  2. XML 2 (parsery DOM) (P. Boiński), WIKI, PDF
  3. Corba (M.Morzy), WIKI, PDF
  4. EJB 1 (stanowy, bezstanowy, klient konsolowy) (M.Masewicz), WIKI, PDF, PLIKI
  5. EJB 2 (sesyjny z klientem webowym) (M.Masewicz), WIKI, PDF, PLIKI
  6. Hibernate (M.Wojciechowski), WIKI, PDF, PLIKI
  7. Java Persistence API (M.Wojciechowski), WIKI, PDF, PLIKI
  8. Web Services 1 (korzystanie w Javie z gotowego WS) (M.Morzy), WIKI, PDF
  9. Web Services 2 (tworzenie WS w Javie) (M.Morzy), WIKI, PDF
  10. Web Services 3 (tworzenie WS w ASP.NET) (M.Wojciechowski), WIKI, PDF, PLIKI
  11. Spring (M.Morzy), WIKI, PDF
  12. AJAX 1 (M.Masewicz), WIKI, PDF, PLIKI
  13. AJAX 2 (M.Masewicz), WIKI, PDF