Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00097 007774 10476156 na godz. na dobę w sumie
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java - książka
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java - książka
Autor: , , Liczba stron: 736
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-1391-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> j2ee - programowanie
Porównaj ceny (książka, ebook, audiobook).

Zwiększ swoją wydajność dzięki platformie WTP!

Eclipse to zintegrowane środowisko programistyczne. Projekt został zapoczątkowany przez firmę IBM, natomiast aktualnie jest rozwijany przez Fundację Eclipse. Dzięki licznym dodatkom, pluginom i podprojektom zyskał on ogromną popularność i jest w tej chwili jednym z narzędzi najczęściej wybieranych do tworzenia aplikacji w języku Java -- i nie tylko. Natomiast projekt WTP (skrót od ang. Web Tools Platform) dzięki swoim rozszerzeniom ułatwia tworzenie aplikacji WWW.

'Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java' jest długo oczekiwaną na polskim rynku książką, poświęconą tej właśnie platformie. Autorzy przedstawiają tu inspirującą historię tego rozwiązania, strukturę projektu oraz sposób konfiguracji Web Tools Platform. Kolejne rozdziały przybliżą Ci zagadnienia związane z warstwą prezentacji, logiki biznesowej i trwałości. Dowiesz się, w jaki sposób wykorzystać narzędzia dostarczane przez WTP do przyspieszenia prac w każdej z tych warstw. W zakresie podejmowanych zagadnień znajdują się również tematy związane z testami integracyjnymi i wydajnościowymi.

Poznaj jedną z najlepszych platform do tworzenia aplikacji WWW i nie tylko!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jŒzyku Java Autor: Naci Dai, Lawrence Mandel, Arthur Ryman T‡umaczenie: Przemys‡aw Szeremiota ISBN: 978-83-246-1391-5 Tytu‡ orygina‡u: COM+ Developer’s Guide Format: 168x237, stron: 744 ZwiŒksz swoj„ wydajno(cid:156)(cid:230) dziŒki platformie WTP! (cid:149) Jak wykorzysta(cid:230) (cid:156)rodowisko Eclipse do tworzenia aplikacji internetowych? (cid:149) W jaki spos(cid:243)b zorganizowa(cid:230) projekt aplikacji? (cid:149) Jak przeprowadzi(cid:230) w aplikacjach testy jednostkowe? Eclipse to zintegrowane (cid:156)rodowisko programistyczne. Projekt zosta‡ zapocz„tkowany przez firmŒ IBM, natomiast aktualnie jest rozwijany przez FundacjŒ Eclipse. DziŒki licznym dodatkom, pluginom i podprojektom zyska‡ on ogromn„ popularno(cid:156)(cid:230) i jest w tej chwili jednym z narzŒdzi najczŒ(cid:156)ciej wybieranych do tworzenia aplikacji w jŒzyku Java (cid:151) i nie tylko. Natomiast projekt WTP (skr(cid:243)t od ang. Web Tools Platform) dziŒki swoim rozszerzeniom u‡atwia tworzenie aplikacji WWW. (cid:132)Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jŒzyku Java(cid:148) jest d‡ugo oczekiwan„ na polskim rynku ksi„¿k„, po(cid:156)wiŒcon„ tej w‡a(cid:156)nie platformie. Autorzy przedstawiaj„ tu inspiruj„c„ historiŒ tego rozwi„zania, strukturŒ projektu oraz spos(cid:243)b konfiguracji Web Tools Platform. Kolejne rozdzia‡y przybli¿„ Ci zagadnienia zwi„zane z warstw„ prezentacji, logiki biznesowej i trwa‡o(cid:156)ci. Dowiesz siŒ, w jaki spos(cid:243)b wykorzysta(cid:230) narzŒdzia dostarczane przez WTP do przyspieszenia prac w ka¿dej z tych warstw. W zakresie podejmowanych zagadnieæ znajduj„ siŒ r(cid:243)wnie¿ tematy zwi„zane z testami integracyjnymi i wydajno(cid:156)ciowymi. (cid:149) Konfiguracja Web Tools Platform (cid:149) Architektura aplikacji WWW (cid:149) Podzia‡ projektu na warstwy (cid:149) Spos(cid:243)b wykorzystania narzŒdzia Maven (cid:149) Wykorzystanie us‡ug WWW (cid:149) Testowanie aplikacji WWW (cid:149) Rozszerzanie WTP Poznaj jedn„ z najlepszych platform do tworzenia aplikacji WWW i nie tylko! Wydawnictwo Helion ul. Ko(cid:156)ciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Spis treĂci Przedmowa ................................................................................................................ 13 WstÚp ........................................................................................................................ 15 PodziÚkowania ........................................................................................................... 19 O autorach ................................................................................................................. 21 CzÚĂÊ I Zaczynamy ............................................................................................... 23 Rozdziaï 1. Wprowadzenie ........................................................................................................... 25 Eclipse a tworzenie aplikacji WWW w Javie ................................................................. 25 ZawartoĂÊ ksiÈĝki ............................................................................................................ 26 Organizacja materiaïu w ksiÈĝce .................................................................................... 27 Kod ěródïowy przykïadów ............................................................................................. 30 League Planet .................................................................................................................. 30 Podsumowanie ............................................................................................................... 32 Rozdziaï 2. Wprowadzenie do Eclipse Web Tools Platform ........................................................... 33 Narodziny WTP ............................................................................................................. 33 Ekonomika WTP ............................................................................................................ 35 Redukcja nakïadów programistycznych .................................................................. 36 Generowanie przychodu .......................................................................................... 38 Struktura WTP ............................................................................................................... 42 Przedmiot WTP ....................................................................................................... 43 Projekty skïadowe WTP .......................................................................................... 44 Architektura WTP .................................................................................................... 46 Podprojekt WST ....................................................................................................... 48 Podprojekt JST ......................................................................................................... 53 6 Spis treĂci Uczestnictwo w WTP .................................................................................................... 55 Uĝytkowanie ............................................................................................................ 56 Monitorowanie grup dyskusyjnych ........................................................................ 56 Zgïoszenie problemu ............................................................................................... 56 Proponowanie ulepszeñ ........................................................................................... 57 Naprawienie bïÚdu ................................................................................................... 57 Opublikowanie artykuïu bÈdě poradnika ............................................................... 58 Formalne doïÈczenie do zespoïu ............................................................................. 58 PowiÚkszanie spoïecznoĂci ...................................................................................... 58 Podsumowanie ............................................................................................................... 59 Rozdziaï 3. Elementarz ................................................................................................................. 61 Wprowadzenie ................................................................................................................ 61 PodejĂcie 1. Aplikacje WWW J2EE ................................................................................ 64 Dodawanie Ărodowiska wykonawczego serwera .................................................... 66 Tworzenie dynamicznego projektu WWW ............................................................ 72 Tworzenie i edycja strony JSP ................................................................................. 76 Uruchomienie JSP na serwerze .............................................................................. 76 Podsumowanie podejĂcia 1. ..................................................................................... 80 PodejĂcie 2. Serwlety i skryptlety .................................................................................. 80 Dodanie do JSP skryptletu w jÚzyku Java ............................................................... 80 Debugowanie JSP ..................................................................................................... 81 Tworzenie serwletu ................................................................................................. 85 Debugowanie serwletu ............................................................................................ 89 Podsumowanie podejĂcia 2. ..................................................................................... 90 PodejĂcie 3. Odwoïania do bazy danych ....................................................................... 91 NawiÈzanie poïÈczenia z bazÈ danych ..................................................................... 93 Wykonywanie zapytañ SQL ..................................................................................... 96 Realizowanie odwoïañ do bazy danych do aplikacji WWW ................................... 99 Podsumowanie podejĂcia 3. ................................................................................... 103 PodejĂcie 4. Usïugi WWW ........................................................................................... 104 Instalowanie usïugi Web Service ........................................................................... 104 Korzystanie z testowej aplikacji klienckiej ............................................................ 107 Monitorowanie komunikatów SOAP ................................................................... 108 Podsumowanie podejĂcia 4. ................................................................................... 109 Podsumowanie ............................................................................................................. 109 Rozdziaï 4. Przygotowanie przestrzeni roboczej .......................................................................... 111 Instalowanie i aktualizowanie WTP ............................................................................ 111 Instalowane komponenty WTP ............................................................................. 112 Rodzaje kompilacji WTP ....................................................................................... 113 Instalacja za pomocÈ menedĝera aktualizacji ........................................................ 115 Instalowanie z archiwów ZIP ................................................................................ 118 Instalowanie materiaïów zewnÚtrznych ................................................................ 120 JDK ......................................................................................................................... 123 Weryfikowanie instalacji ........................................................................................ 124 Aktualizowanie WTP ............................................................................................. 125 Spis treĂci 7 Konfigurowanie WTP .................................................................................................. 126 Preferencje kategorii Connectivity ........................................................................ 127 Preferencje kategorii Internet ................................................................................ 127 Preferencje kategorii Server ................................................................................... 128 Preferencje kategorii Validation ............................................................................ 128 Preferencje kategorii Web and XML ..................................................................... 128 Preferencje kategorii Web Services ....................................................................... 129 Preferencje kategorii XDoclet ............................................................................... 130 Wspólne ustawienia ................................................................................................ 130 Podsumowanie ............................................................................................................. 131 CzÚĂÊ II Tworzenie aplikacji WWW w Javie ......................................................... 133 Rozdziaï 5. Architektura i projektowanie aplikacji WWW ............................................................ 135 Krajobraz WWW ........................................................................................................... 135 Aplikacje WWW ............................................................................................................ 137 Aplikacje WWW w Javie ......................................................................................... 138 Projekt aplikacji WWW z podziaïem na warstwy ................................................. 142 Wzorzec MVC w aplikacji WWW ......................................................................... 145 Szkielety aplikacyjne dla Javy ................................................................................. 149 Architektura usïugowa SOA ........................................................................................ 152 UdostÚpnianie usïug. Warstwa usïugowa ............................................................. 152 Studium przypadku — League Planet ........................................................................ 154 Podsumowanie ............................................................................................................. 156 Rozdziaï 6. Organizacja projektu ................................................................................................ 157 Typy projektów WWW i aplikacji J2EE ...................................................................... 158 Projekty WWW ....................................................................................................... 159 Moduïy J2EE .......................................................................................................... 160 Tworzenie aplikacji ................................................................................................ 160 Tworzenie aplikacji EJB ......................................................................................... 167 Tworzenie aplikacji EAR ....................................................................................... 173 Zaawansowane projekty WWW ................................................................................... 178 Modelowanie perspektywy projektowej ............................................................... 181 Przykïadowe projekty ................................................................................................... 184 Prosta aplikacja korporacyjna ................................................................................. 184 Podziaï moduïu WWW na wiele projektów ......................................................... 190 Tworzenie aplikacji WWW a Maven ..................................................................... 199 Podsumowanie ............................................................................................................. 214 Rozdziaï 7. Warstwa prezentacji ................................................................................................ 217 Wprowadzenie .............................................................................................................. 217 Projektowanie interakcji .............................................................................................. 218 Projektowanie grafiki ................................................................................................... 220 Struktura warstwy prezentacji ..................................................................................... 222 8 Spis treĂci PodejĂcie 1. Projekty statycznych stron WWW, HTML i edytory kodu ěródïowego .......................................................................................................... 225 Projekty statycznych aplikacji WWW .................................................................... 225 HTML .................................................................................................................... 228 Edytory kodu ěródïowego ..................................................................................... 236 Szablony .................................................................................................................. 239 Wstawki ................................................................................................................... 243 Podsumowanie podejĂcia 1. ................................................................................... 248 PodejĂcie 2. CSS ........................................................................................................... 248 Podsumowanie podejĂcia 2. ................................................................................... 253 PodejĂcie 3. JavaScript .................................................................................................. 253 Maskowanie adresu e-mail .................................................................................... 253 Walidacja danych wprowadzanych do formularza ............................................... 255 Podsumowanie podejĂcia 3. ................................................................................... 266 PodejĂcie 4. XML i XSLT ............................................................................................ 267 XML ........................................................................................................................ 267 XSLT ....................................................................................................................... 271 Podsumowanie podejĂcia 4. ................................................................................... 276 PodejĂcie 5. DTD ......................................................................................................... 276 Podsumowanie podejĂcia 5. ................................................................................... 281 PodejĂcie 6. Serwery, projekty dynamicznych aplikacji WWW i serwlety ................ 281 Serwery ................................................................................................................... 281 Projekty dynamicznych aplikacji WWW ............................................................... 288 Serwlety .................................................................................................................. 290 Podsumowanie podejĂcia 6. ................................................................................... 300 PodejĂcie 7. JSP ............................................................................................................ 300 Podsumowanie podejĂcia 7. ................................................................................... 310 PodejĂcie 8. Monitorowanie sesji HTTP ................................................................... 310 Sesje HTTP ............................................................................................................ 310 Monitor TCP/IP .................................................................................................... 311 PodglÈdanie sesji HTTP w monitorze TCP/IP ................................................... 312 Modyfikowanie i ponowne przesyïanie komunikatu ........................................... 317 Podsumowanie podejĂcia 8. ................................................................................... 317 Podsumowanie ............................................................................................................. 317 Rozdziaï 8. Warstwa logiki biznesowej ...................................................................................... 319 Typowy ukïad warstwy biznesowej ............................................................................ 322 PodejĂcie 1. Model dziedzinowy ................................................................................. 323 Projekty pomocnicze J2EE .................................................................................... 323 Model obiektowy ................................................................................................... 325 Warstwa usïugowa .................................................................................................. 332 Warstwa dostÚpu do danych .................................................................................. 336 Testy ........................................................................................................................ 342 Podsumowanie podejĂcia 1. ................................................................................... 346 Spis treĂci 9 PodejĂcie 2. Tworzenie sesyjnych komponentów EJB .............................................. 347 Dodawanie serwera JBoss ...................................................................................... 351 XDoclet ................................................................................................................... 354 Projekty EJB ........................................................................................................... 357 Tworzenie komponentów sesyjnych .................................................................... 360 Konstruowanie klienta WWW ............................................................................... 371 Uruchamianie aplikacji .......................................................................................... 374 WTP i komponenty EJB 3.0 .................................................................................. 377 Podsumowanie podejĂcia 2. ................................................................................... 379 PodejĂcie 3. Komponenty komunikatowe .................................................................. 380 Krótkie wprowadzenie do MDB ........................................................................... 380 Tworzenie komponentu komunikatowego .......................................................... 380 Tworzenie kolejki komunikatów w JBoss ............................................................ 384 Tworzenie klienta kolejki JMS .............................................................................. 385 Podsumowanie podejĂcia 3. ................................................................................... 388 Podsumowanie ............................................................................................................. 389 Rozdziaï 9. Warstwa trwaïoĂci ................................................................................................... 391 Projekty warstwy trwaïoĂci .......................................................................................... 392 Odwzorowanie obiektów w bazie danych za pomocÈ interfejsu JDBC ............. 394 Odwzorowanie obiektów w bazie danych za poĂrednictwem komponentów encyjnych ...................................................................................... 395 Odwzorowanie obiektów w bazie danych za poĂrednictwem gotowych szkieletów odwzorowania obiektowo-relacyjnego .............................. 396 PrzeglÈd Êwiczeñ .......................................................................................................... 397 PodejĂcie 1. Tworzenie bazy danych ........................................................................... 398 Podsumowanie podejĂcia 1. ................................................................................... 407 PodejĂcie 2. Warstwa danych ....................................................................................... 408 Podsumowanie podejĂcia 2. ................................................................................... 414 PodejĂcie 3. Komponenty encyjne .............................................................................. 414 Przygotowania w JBoss, Derby i XDoclet ............................................................ 415 Tworzenie komponentu CMP .............................................................................. 419 Definiowanie metody ejbCreate i metod wyszukujÈcych ................................... 423 Dodawanie DAO z wykorzystaniem CMP .......................................................... 430 Testowanie implementacji CMP .......................................................................... 433 Programowanie JPA w WTP ................................................................................. 437 Podsumowanie podejĂcia 3. ................................................................................... 441 Podsumowanie ............................................................................................................. 441 Rozdziaï 10. Usïugi WWW ........................................................................................................... 443 WSDL ........................................................................................................................... 444 SOAP ............................................................................................................................ 445 REST ............................................................................................................................. 446 Usïugi WWW à la REST .............................................................................................. 448 PrzeglÈd Êwiczeñ .......................................................................................................... 449 10 Spis treĂci PodejĂcie 1. Budowanie usïugi WWW „od góry” ....................................................... 450 XSD ......................................................................................................................... 450 WSDL ..................................................................................................................... 456 Wdraĝanie usïug WWW ......................................................................................... 462 Implementowanie usïugi WWW ........................................................................... 469 Testowanie usïugi w eksploratorze usïug WWW ................................................. 474 Podsumowanie podejĂcia 1. ................................................................................... 475 PodejĂcie 2. Budowanie usïugi WWW „od doïu” ....................................................... 477 Implementacja klasy usïugi .................................................................................... 478 Wdraĝanie usïugi .................................................................................................... 483 Podsumowanie podejĂcia 2. ................................................................................... 487 PodejĂcie 3. Generowanie proxy dla klientów usïugi WWW .................................... 487 Generowanie proxy klienckiego i testowej strony JSP ......................................... 488 Korzystanie z testowej klienckiej strony JSP ........................................................ 491 Podsumowanie podejĂcia 3. ................................................................................... 493 PodejĂcie 4. Kontrola interoperacyjnoĂci usïug WWW .............................................. 494 Kontrola komunikatów pod kÈtem zgodnoĂci z WS-I ......................................... 495 Podsumowanie podejĂcia 4. ................................................................................... 498 PodejĂcie 5. Wykorzystywanie usïug WWW w aplikacjach WWW ........................... 501 Generowanie klienta usïugi Query ....................................................................... 501 Tworzenie serwletów ............................................................................................. 502 Importowanie kodu interfejsu uĝytkownika ........................................................ 504 Testowanie interfejsu uĝytkownika ...................................................................... 515 Podsumowanie podejĂcia 5. ................................................................................... 519 PodejĂcie 6. Wyszukiwanie i publikowanie usïug WWW .......................................... 519 UDDI ..................................................................................................................... 520 WSIL ....................................................................................................................... 520 Podsumowanie podejĂcia 6. ................................................................................... 525 Podsumowanie ............................................................................................................. 525 Rozdziaï 11. Testy ........................................................................................................................ 527 Testy zautomatyzowane ............................................................................................... 529 PrzeglÈd zadañ z bieĝÈcego rozdziaïu .......................................................................... 530 PodejĂcie 1. Testy jednostkowe à la JUnit .................................................................. 530 Tworzenie projektu dla testów .............................................................................. 532 Przypadek testowy JUnit ....................................................................................... 532 Zestaw testów JUnit .............................................................................................. 537 Podsumowanie podejĂcia 1. ................................................................................... 538 PodejĂcie 2. Testy integracyjne à la Cactus ................................................................. 539 Podsumowanie podejĂcia 2. ................................................................................... 545 PodejĂcie 3. Testy systemowe à la HttpUnit .............................................................. 546 Podsumowanie podejĂcia 3. ................................................................................... 551 PodejĂcie 4. Testy wydajnoĂciowe à la TPTP ............................................................. 551 Tworzenie projektu testu wydajnoĂci ................................................................... 554 Test rejestrowania HTTP ...................................................................................... 554 Generowanie zestawienia wynikowego ................................................................ 556 Podsumowanie podejĂcia 4. ................................................................................... 558 Spis treĂci 11 PodejĂcie 5. Profilowanie aplikacji z TPTP ................................................................ 558 Podsumowanie podejĂcia 5. ................................................................................... 563 Podsumowanie ............................................................................................................. 563 CzÚĂÊ III Rozszerzanie WTP .................................................................................. 565 Rozdziaï 12. Dodawanie nowych serwerów ................................................................................. 567 Ogólnie o dodawaniu uniwersalnego adaptera serwera ............................................. 570 ¥rodowisko wykonawcze GlassFish ............................................................................ 571 Wtyczki adapterów serwerów ...................................................................................... 572 Dodawanie obsïugi do nowego Ărodowiska wykonawczego ..................................... 575 Dodawanie nowego typu serwera ............................................................................... 577 Dodawanie handlera Ărodowiska wykonawczego ....................................................... 578 Aspekty i komponenty Ărodowiska wykonawczego ................................................... 579 Rozszerzanie interfejsu narzÚdzi serwerowych .......................................................... 581 Definicja serwera .......................................................................................................... 583 Moduïy publikacji ........................................................................................................ 587 Test adaptera serwera ................................................................................................... 590 Podsumowanie ............................................................................................................. 598 Rozdziaï 13. Obsïuga nowych typów plików ................................................................................ 601 Tworzenie rozszerzenia DocBook .............................................................................. 603 Walidator DocBook ...................................................................................................... 603 Infrastruktura walidacji w WTP ............................................................................ 605 Implementacja walidatora dla DocBook ............................................................... 605 Tworzenie wïasnego typu markera ............................................................................. 618 Deklarowanie typu zawartoĂci DocBook .................................................................... 619 Podsumowanie ............................................................................................................. 624 Rozdziaï 14. Rozszerzenia dla WSDL ............................................................................................ 625 Tworzenie wtyczki rozszerzenia WSDL ..................................................................... 629 Rozszerzanie edytora WSDL ....................................................................................... 630 Dostosowywanie wyglÈdu elementów rozszerzajÈcych WSDL w panelu edycji wizualnej ...................................................................................... 632 Dodawanie elementów rozszerzajÈcych do edytora ............................................. 635 Dodawanie wïasnych akcji do widoku edycji wizualnej edytora WSDL ............ 644 Rozszerzanie walidacji WSDL ..................................................................................... 651 Dodatki do walidacji WSDL 1.1 ............................................................................ 652 Wïasne reguïy walidacji .......................................................................................... 656 Podsumowanie ............................................................................................................. 660 Rozdziaï 15. Dostosowywanie mechanizmu rozwiÈzywania URI dla zasobów .............................. 661 Tworzenie wtyczki rozszerzenia infrastruktury rozwiÈzywania zasobów ................ 664 Dodawanie zasobów do katalogu XML ...................................................................... 665 Katalog XML .......................................................................................................... 667 Dodawanie pojedynczego zasobu do katalogu XML ........................................... 667 Dodawanie do katalogu XML zestawu zasobów .................................................. 670 12 Spis treĂci Wïasna strategia rozwiÈzywania zasobów ................................................................... 673 Infrastruktura rozwiÈzywania URI dla zasobów .................................................. 675 Tworzenie folderu mechanizmu rozwiÈzywania URI ........................................ 678 Podsumowanie ............................................................................................................. 681 CzÚĂÊ IV Produkty i dodatki .................................................................................. 683 Rozdziaï 16. Inne narzÚdzia WWW bazujÈce na Eclipse ................................................................ 685 WWW w Javie ............................................................................................................... 686 BEA Workshop ....................................................................................................... 686 CodeGear JBuilder ................................................................................................. 686 Exadel Studio .......................................................................................................... 686 IBM Rational Application Developer ................................................................... 687 JBoss Tools (JBoss IDE) ........................................................................................ 688 MyEclipse ............................................................................................................... 688 ObjectWeb Lomboz ............................................................................................... 688 SAP NetWeaver Developer Studio ....................................................................... 689 W4T Eclipse ........................................................................................................... 689 WWW w Perlu .............................................................................................................. 689 EPIC ........................................................................................................................ 690 WWW w PHP ............................................................................................................... 690 Eclipse PHP Development Tools ......................................................................... 691 PHPEclipse ............................................................................................................. 691 WWW w Pythonie ........................................................................................................ 691 PyDev ...................................................................................................................... 691 WWW w Ruby .............................................................................................................. 692 RadRails .................................................................................................................. 692 Podsumowanie ............................................................................................................. 692 Sïowniczek ............................................................................................................... 693 Bibliografia .............................................................................................................. 701 Skorowidz ................................................................................................................ 709 Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 135 ROZDZIA’ 5. Architektura i projektowanie aplikacji WWW Pomyïki sÈ wrotami do odkryÊ. — James Joyce W tym rozdziale zajmiemy siÚ opisem dwóch rodzajów systemów WWW — infrastruktury aplikacji i infrastruktury usïugi. Wielu z nas tworzy aplikacje z interfejsem WWW. Owe in- terfejsy odwoïujÈ siÚ do warstw biznesowych aplikacji i utrwalajÈ pobrane dane w bazach danych. Dla takich rodzajów systemów architekturÚ warstwowÈ udostÚpnia infrastruktura aplikacji. Z kolei w przypadku infrastruktury usïugi mamy do czynienia ze wspóïpracÈ po- szczególnych usïug za poĂrednictwem WWW — bez udziaïu uĝytkowników. W tym przypad- ku mowa o architekturze zorientowanej na usïugi — SOA (od Service Oriented Architecture). Oba systemy majÈ cechy wspólne; w obu chodzi o zmontowanie rozlegïego i popraw- nego pod wzglÚdem struktury systemu WWW, opartego na prawidïach zasad obiektowoĂci. Przypomnimy wiÚc wiadomoĂci z wykïadów o projektowaniu obiektowym i zobaczymy, jak moĝna je zastosowaÊ do WWW. Krajobraz WWW SieÊ WWW ewoluuje od sieci stanowiÈcej noĂnik informacji dla odbiorców-uĝytkowników, w kierunku Ărodka komunikacji i wspóïpracy pomiÚdzy luděmi, ale i pomiÚdzy aplikacjami (zob. rysunek 5.1). SieÊ WWW dziaïa w oparciu o standardowe i otwarte protokoïy. Jest niejednorodna, rozproszona i szeroko dostÚpna. SieÊ WWW jest wiÚc niemal idealnÈ platformÈ do wymiany informacji i koordynacji dziaïañ. Budowanie aplikacji WWW i integrowanie tych aplikacji nie 136 CzÚĂÊ II • Tworzenie aplikacji WWW w Javie RYSUNEK 5.1. Aplikacje i usïugi WWW Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 137 sÈ juĝ oddzielnymi zadaniami. Podstawowym zaïoĝeniem SOA jest to, ĝe systemy WWW powinny byÊ montowane z usïug eksponujÈcych otoczeniu ĂciĂle zdefiniowane interfejsy, które pozwalajÈ na komunikacjÚ zarówno z uĝytkownikami, jak i aplikacjami. W Ăwiecie ukierunkowanym na usïugi mamy mnóstwo aplikacji sieciowych: aplikacje pïatnicze uruchamiane na komputerach typu mainframe, drukarki fotograficzne drukujÈce zdjÚcia z aparatu cyfrowego czy wsady Ăwieĝych wiadomoĂci z praktycznie dowolnej dzie- dziny. Wszystkie te aplikacje sÈ przykïadami systemów ĂwiadczÈcych pewne usïugi. Kaĝdy z takich „systemów-usïugodawców” eksponuje swoje zasoby za poĂrednictwem publicznego interfejsu definiujÈcego jego usïugÚ. Nowe aplikacje uĝywajÈ takich usïug i montujÈ z nich nowe aplikacje, które same mogÈ byÊ udostÚpniane równieĝ jako osobne usïugi. W tym pro- stym modelu usïugodawcy i usïugobiorcy moĝna ujÈÊ tworzenie aplikacji WWW nastÚpnej generacji, z prawie nieograniczonymi moĝliwoĂciami. Aplikacje WWW Prosta aplikacja WWW skïada siÚ z trzech logicznych warstw: warstwy prezentacji, warstwy logiki biznesowej i warstwy danych (zob. rysunek 5.2). To jedynie podstawowy podziaï ogól- ny, ale w faktycznej aplikacji moĝna wyróĝniaÊ logicznie dodatkowe warstwy, reprezentujÈce i wyodrÚbniajÈce poszczególne charakterystyczne elementy architektury aplikacji. Architek- tura fizyczna aplikacji jest tu nieistotna: wszystkie trzy warstwy mogÈ równie dobrze dziaïaÊ na pojedynczym serwerze aplikacyjnym i jednym komputerze albo na trzech i wiÚcej osob- nych serwerach aplikacyjnych. W J2EE architekturÈ fizycznÈ moĝna zarzÈdzaÊ niezaleĝnie od warstw logicznych aplikacji. RYSUNEK 5.2. Aplikacje i usïugi WWW 138 CzÚĂÊ II • Tworzenie aplikacji WWW w Javie Najwyĝsza warstwa to warstwa prezentacji. Jest to warstwa interfejsu uĝytkownika, mon- towana zazwyczaj na bazie jÚzyka HTML. Modele RIA (Rich Internet Application) i AJAX wprowadzajÈ zresztÈ do warstwy prezentacji nowsze technologie implementacji strony klienc- kiej, na przykïad Flash czy JavaScript. JeĂli interfejs uĝytkownika nie wymaga do uruchomienia niczego poza przeglÈdarkÈ WWW, okreĂlamy go mianem „cienkiego klienta” — ang. thin client. Adobe Flash Flash jest co prawda najpowszechniejszy wïaĂnie w bogatym interfejsie uĝytkownika, ale czÚsto wykorzystuje siÚ go równieĝ w aplikacjach wielowarstwowych. Flash ma wïasny obiektowy jÚzyk programowania — ActionScript 2.0 — i komponenty umoĝliwiajÈce odwoïywanie siÚ do usïug WWW i baz danych. WiÚcej informacji o tej stronie platformy Flash moĝna znaleěÊ pod adre- sem http://www.adobe.com/platform. Warstwa Ărodkowa to warstwa, w której realizuje siÚ tak zwanÈ logikÚ biznesowÈ apli- kacji. W tej warstwie bÚdÈ dziaïaÊ na przykïad obiekty realizujÈce dodanie druĝyny do ligi. Wydzielona warstwa logiki biznesowej nie jest zresztÈ zwiÈzana wyïÈcznie z aplikacjÈ WWW — porzÈdne wyodrÚbnienie warstwy umoĝliwia wykorzystanie jej równieĝ w innych systemach. Dolna warstwa to warstwa, gdzie realizowane jest zadanie przechowywania danych w spo- sób trwaïy. Najbardziej typowym ěródïem trwaïoĂci jest baza danych, ale równie dobrze mogÈ to byÊ pliki w systemie plików. W dalszej czÚĂci rozdziaïu zajmiemy siÚ kwestiami dotyczÈcymi poszczególnych wyróĝ- nionych tu warstw. W sieci WWW moĝna znaleěÊ mnóstwo przykïadów takich aplikacji; wszystkie udostÚpniajÈ jakieĂ usïugi warstwy biznesowej uĝytkownikom koñcowym. Aplika- cje te mogÈ byÊ ze sobÈ skojarzone (na przykïad odnoĂnikami hipertekstowymi), ale nie sÈ faktycznie zintegrowane — stanowiÈ raczej luěno powiÈzane „ekosystemy”, w których czyn- nikiem wiÈĝÈcym jest wïaĂnie uĝytkownik koñcowy. Tymczasem w systemie zorientowanym na usïugi aplikacje sÈ zintegrowane za poĂrednictwem tychĝe usïug; miejsce uĝytkowników w tych systemach zajmujÈ inne, zewnÚtrzne aplikacje WWW, a warstwa prezentacji jest za- stÚpowana warstwÈ usïugi. Aplikacje WWW w Javie Aplikacje WWW w jÚzyku Java wykorzystujÈ technologie opisane w specyfikacji J2EE i po- wszechne standardy ogólne, jak HTML, XMLO czy Web Service. Koncepcja warstwowego podziaïu aplikacji i systemów klient-serwer jest w informatyce obecna znacznie dïuĝej niĝ technologie WWW i jÚzyk Java. Chyba najcenniejszym wkïadem ze strony J2EE w tej dziedzinie byïo udostÚpnienie praktycznej i ustandaryzowanej specyfi- kacji. DziÚki temu powstaïo wiele komercyjnych i niekomercyjnych serwerów aplikacyjnych obsïugujÈcych tak ustanowiony standard. J2EE oferuje standardy dla modeli wykonawczych i programistycznych, wykorzystywa- nych w aplikacjach WWW. SÈ tu komponenty dla sesji klienckich, prezentacji, logiki bizneso- wej i logiki sterowania aplikacjÈ, a takĝe dla operacji biznesowych. SÈ tu teĝ zdefiniowane usïugi dotyczÈce rozproszenia, transakcyjnoĂci i zarzÈdzania danymi, umoĝliwiajÈce urucha- mianie tych komponentów w Ărodowiskach korporacyjnych. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 139 Aplikacje WWW w technologii J2EE sÈ przenoĂne pomiÚdzy zgodnymi ze specyfikacjÈ serwerami aplikacyjnymi. PrzenoĂnoĂÊ ta bazuje na dostÚpnoĂci kompletnego standardu re- gulujÈcego przebieg interakcji klientów z systemem, implementacjÚ poszczególnych kompo- nentów i sposób wykorzystania przez te komponenty interfejsów usïug w celu integrowania ich z innymi systemami korporacyjnymi. Model J2EE dzieli warstwÚ prezentacji na warstwy prezentacji strony klienta i strony serwera. Do modelowania i implementowania logiki bizne- sowej sïuĝÈ tu komponenty EJB. Warstwa danych jest realizowana równieĝ za pomocÈ kompo- nentów EJB, a takĝe za poĂrednictwem usïug dajÈcych dostÚp do korporacyjnych systemów informatycznych. J2EE definiuje osobne kontenery dla komponentów WWW i komponentów bizneso- wych (EJB) — zob. rysunek 5.3. Kontenery udostÚpniajÈ standardowe dla nich usïugi, obsïu- gujÈc rozproszenie, sesyjnoĂÊ i transakcyjnoĂÊ. Klienty mogÈ byÊ aplikacjami typu thin client (jak przeglÈdarka WWW) albo peïnoprawnymi i samodzielnymi aplikacjami. Wymagane do ko- munikacji protokoïy WWW sÈ obsïugiwane przez Ărodowiska wykonawcze po stronie serwera. RYSUNEK 5.3. Kontenery J2EE Kontener WWW obsïuguje komponenty takie jak strony JSP i serwlety. Komponenty te sÈ wykorzystywane powszechnie do realizacji warstwy prezentacji. Kontener komponentów EJB udostÚpnia Ărodowisko wykonawcze dla komponentów biznesowych i dostÚp do korporacyjnych systemów informatycznych. ¥rodowisko wykonawcze skïada siÚ z licznych ustandaryzowanych usïug, w tym usïug ïÈcznoĂci z bazami danych (JDBC), interfejsu transakcyjnego Java Transaction API i usïug transakcyjnoĂci (JTA/JST), architektury J2CA (Java 2 Connector), usïug uwierzytelniania 140 CzÚĂÊ II • Tworzenie aplikacji WWW w Javie i autoryzacji (JAAS), usïug interfejsu systemów nazw i katalogów (JNDI) i mnóstwa innych interfejsów realizujÈcych komunikacjÚ wewnÚtrznÈ i zewnÚtrznÈ, zapewniajÈcych rozszerzal- noĂÊ systemów J2EE. Projektowanie aplikacji WWW w jÚzyku Java Czasami jesteĂmy tak zaaferowani nowymi technologiami i systemami, ĝe zapominamy na- uki z przeszïoĂci. Stosowanie zasad inĝynierii oprogramowania, zwïaszcza zaĂ zasad obiekto- woĂci, jest dla nas w tych nowych technologiach wyzwaniem (Knight 2002). Owe nowe tech- nologie bywajÈ tak samo groěne, jak efektywne; mogÈ zachÚcaÊ do stosowania niekoniecznie najlepszych praktyk programistycznych. Na przykïad programowanie stron JSP kusi moĝ- liwoĂciÈ bezpoĂredniego odwoïywania siÚ do baz danych, ïatwo tu teĝ zapomnieÊ o zdatnoĂci kodu do ponownego wykorzystania. Komponenty EJB jako skïadowe biznesowych kom- ponentów aplikacji sÈ krytykowane za nadmiernÈ zïoĝonoĂÊ. XML promuje wspóïdzielenie i wielokrotne wykorzystanie, ale bywa naduĝywany. Aplikacje WWW pisane w Javie skïadajÈ siÚ od strony warstwy prezentacji ze stron JSP i serwletów. Zarówno JSP, jak i serwlety moĝna wykorzystaÊ przy tworzeniu architektur z wyodrÚbnionymi warstwami. W ten sposób buduje siÚ dwa najpopularniejsze typy aplika- cji WWW w Javie, które bÚdziemy oznaczaÊ jako model 1. i model 2. Otóĝ wedle modelu 1. ĝÈdania klientów sÈ przesyïane wprost do stron JSP, podczas gdy w modelu 2. sÈ one kiero- wane do serwletu kontrolujÈcego, który dopiero przekierowuje je do odpowiednich stron JSP. Obszerne opisy obu modeli moĝna znaleěÊ w podrozdziale 4.4, Web-Tier Application Framework Design, w ksiÈĝce Designing Enterprise Applications with the J2EE™ Platform (Singh 2002). Model 1. jest wykorzystywany w bardzo prostych aplikacjach WWW. Z kolei model 2. stanowi adap- tacjÚ wzorca projektowego MVC (Model View Controller) dla potrzeb aplikacji WWW. Wzor- cem projektowym MVC zajmiemy siÚ nieco póěniej (w podrozdziale „Wzorzec MVC w aplikacji WWW”). Wedle modelu 1. najwaĝniejszym celem jest przeniesienie moĝliwie duĝej iloĂci kodu obsïugujÈcego prezentacjÚ z klas Java do stron JSP. Elementy JSP sÈ popularne, poniewaĝ pozwalajÈ na zarzÈdzanie treĂciÈ (HTML, CSS, JavaScript czy XML) i na równoczesne stoso- wanie kodu w jÚzyku Java. W JSP moĝna wygodnie przetwarzaÊ ĝÈdania HTTP i generowaÊ odpowiedzi w postaci gotowych dokumentów HTML. Strony JSP dajÈ siÚ teĝ ïatwo zro- zumieÊ projektantom i twórcom WWW (którzy niekoniecznie sÈ wykwalifikowanymi pro- gramistami Java). W architekturze narzucanej przez model 1. caïa aplikacja jest w zasadzie realizowana na bazie JSP. Niektórzy podnoszÈ, ĝe mimo wszystko dochodzi do separacji treĂci i prezentacji, poniewaĝ wszystkie odwoïania do danych sÈ realizowane za pomocÈ kompo- nentów jÚzyka Java. Architektura modelu 1. sprawdza siÚ na szybko w niewielkich aplikacjach, ale dla wszystkich aplikacji obejmujÈcych wiÚcej niĝ kilka stron kodu trzeba jÈ uznaÊ za zwyczajnie zïÈ. JSP nie jest dobrym miejscem do realizowania logiki biznesowej i logiki ste- rowania aplikacjÈ. Model 1. w miarÚ wzrostu rozmiaru aplikacji szybko degeneruje projekt, wymuszajÈc zwielokrotnianie kodu i zwiÚkszajÈc zïoĝonoĂÊ. Wszystkie podstawowe warstwy logiczne typowej aplikacji sÈ tu sprasowane do postaci pojedynczego komponentu. Z punktu widzenia wyodrÚbniania róĝnych abstrakcji do róĝnych warstw i z punktu wi- dzenia zasad obiektowoĂci model 1. programowania z uĝyciem JSP jest najgorszy w tym, ĝe w pojedynczym skrypcie grupuje siÚ zadania naleĝÈce do oddzielnych warstw. Wedle modelu 1. JSP musi: Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 141 1. PrzyjmowaÊ dane wejĂciowe. 2. ObsïugiwaÊ logikÚ aplikacji (logikÚ biznesowÈ i logikÚ przepïywu sterowania). 3. GenerowaÊ dane wyjĂciowe (obsïugiwaÊ logikÚ prezentacji). Skoro wszystkie trzy warstwy zostaïy zwiÈzane w pojedynczym komponencie, nie moĝna ĝadnej z nich modyfikowaÊ ani testowaÊ z osobna. Do tego obsïuga wszystkich tych zadañ (opiszemy je osobno) równieĝ jest problematyczna. To samo dotyczyïoby wykorzystania samych serwletów (bo serwlet moĝna uznaÊ za skrypt z dodatkowymi osadzonymi elemen- tami XML czy HTML); do tego mieszanie kodu z tekstem utrudnia zarzÈdzanie kodem i diagnostykÚ kodu. Przyjmowanie danych wejĂciowych W ramach przyjmowania danych wejĂciowych skrypt otrzymuje do dyspozycji obiekt HttpServletRequest, bÚdÈcy reprezentacjÈ strumienia wejĂciowego HTTP, minimalnie tylko przetworzonÈ. W HTTP wyróĝniono trzy mechanizmy do przekazywania parametrów (me- toda kodowania parametrów w URL, metoda parametrów zapytañ i formularze) i we wszyst- kich dane sÈ przekazywane jako zwyczajne ciÈgi znaków. Kaĝdy ze skryptów skïadajÈcych siÚ na aplikacjÚ musi wiÚc „na wïasnÈ rÚkÚ” okreĂlaÊ sposób przekazywania parametrów, konwersjÚ parametrów na wartoĂci odpowiednich typów i weryfikacjÚ (walidacjÚ) tych war- toĂci. Brak wspólnego, wyodrÚbnionego kodu obsïugi danych wejĂciowych wymusza powiela- nie tego samego bÈdě podobnego kodu w wielu osobnych skryptach. Obsïuga logiki aplikacji KolejnÈ kwestiÈ problematycznÈ, dotyczÈcÈ zarówno obsïugi wejĂcia, jak i logiki aplikacji, jest brak hermetyzacji informacji przy odwoïaniach do danych ĝÈdania i danych sesji. Skrypt musi pobraÊ dane z ĝÈdania wejĂciowego po nazwie. Protokóï HTTP jest protokoïem bezstanowym, wiÚc dane wykorzystywane na wielu osobnych stronach JSP w kaĝdym skrypcie wymagajÈ- cym tych danych muszÈ albo byÊ zapisane w sesji skojarzonej z danym uĝytkownikiem, albo wielokrotnie odczytywane z zewnÚtrznego ěródïa danych. Na przykïad, jeĂli skrypt przekazuje dane logowania uĝytkownika jako dane formularza, kod zapisujÈcy te dane w sesji mógïby wyglÈdaÊ tak: Listing 5.1. Zapisywanie sesji z parametrami ĝÈdania HTTP password = request.getParameter( passwordField ); decrypted = this.decode( password ); request.getSession().setAttribute( password , decrypted); Zarówno zapis danych w atrybutach sesji, jak i zapis w zewnÚtrznym ěródle danych to efektywny zapis danych w zasiÚgu globalnym, a aplikacja odwoïuje siÚ do takich danych jak do sïownika, to znaczy poprzez ciÈgi z nazwami traktowanymi jako klucze wartoĂci. Tak skïadowanych danych nie dotyczÈ zwyczajne mechanizmy kontrolowania czasu ĝycia zmien- nych i w kaĝdym skrypcie czy teĝ na kaĝdej stronie korzystajÈcej z danych trzeba „ujawniÊ” 142 CzÚĂÊ II • Tworzenie aplikacji WWW w Javie stosowane nazewnictwo atrybutów-zmiennych. Nie moĝna wtedy w prosty sposób wyszu- kaÊ wszystkich odwoïañ do zmiennych za poĂrednictwem zwyczajnych mechanizmów pro- gramistycznych, co z kolei utrudnia modyfikowanie odwoïañ do danych. A jeĂli JSP nie hermetyzuje stosowanej konwencji nazewniczej, wiedza i niej i o niskopoziomowych prze- cieĝ szczegóïach implementacji protokoïu HTTP musi byÊ implementowana w caïoĂci apli- kacji, co skutecznie niweczy jej zdatnoĂÊ do adaptacji do nowych zastosowañ. Co wiÚcej, mamy tu teĝ potencjalne ěródïo bïÚdów, które mogÈ powstaÊ nie tylko wskutek zwyczajnej literówki w nazwie zmiennej, ale takĝe w wyniku zastosowania takiej samej nazwy w róĝ- nych skryptach do róĝnych celów. W miarÚ zwiÚkszania siÚ liczby stron JSP budowanej w ten sposób aplikacji, problemy te mogÈ okazaÊ siÚ przytïaczajÈce. Kiedy do realizacji logiki aplikacji wykorzystuje siÚ strony JSP, wprowadza siÚ do nich potencjalnie znaczÈce iloĂci kodu. Tymczasem techniki zarzÈdzania kodem w przypadku kodu osadzonego w JSP muszÈ z koniecznoĂci byÊ ograniczone. Mieszanina kodu i tekstu na stro- nach JSP utrudnia teĝ diagnostykÚ kodu. Co prawda w WTP znalazïy siÚ zarówno mechani- zmy asysty przy wprowadzaniu kodu w JSP, jak i mechanizmy interaktywnego debugowa- nia kodu, w przypadku prekompilowanych stron JSP trzeba bÚdzie debugowaÊ zïoĝony kod generowany przez serwer, co jest trudne. Z tych wzglÚdów naleĝaïoby minimalizowaÊ iloĂÊ kodu w stronach JSP i unikaÊ programowania tam logiki aplikacji. Obsïuga logiki biznesowej W JSP caïy kod ma strukturÚ monolitycznÈ. Co prawda moĝna w nim wydelegowaÊ zadania biznesowe do obiektów biznesowych, ale wciÈĝ mamy do czynienia z mieszaniem logiki apli- kacji i logiki biznesowej. Tymczasem nie da siÚ skutecznie przetestowaÊ niezaleĝnie od siebie poszczególnych fragmentów JSP, tak jak to jest moĝliwe w przypadku odrÚbnych klas jÚzyka Java (i testów jednostkowych). Do tego realizacja logiki biznesowej w JSP prowadzi do dalsze- go przeïadowania strony kodem, co utrudnia zarzÈdzanie tym kodem i konserwacjÚ projektu. Generowanie danych wyjĂciowych Przy generowaniu danych wyjĂciowych w prostym skrypcie miesza siÚ treĂÊ HTML bÈdě XML z danymi dynamicznymi. Powoduje to wiÈzanie wyglÈdu strony wynikowej z pozo- staïymi warstwami aplikacji. Zmiana wyglÈdu strony WWW czy choÊby przystosowanie aplikacji do potrzeb i ograniczeñ róĝnych urzÈdzeñ docelowych sÈ wtedy mocno utrudnione. A ta ostatnia trudnoĂÊ nabiera znaczenia, poniewaĝ sieÊ WWW nieustannie rozprzestrzenia siÚ na urzÈdzenia przenoĂne, w tym choÊby telefony komórkowe. JSP pomaga w uporaniu siÚ z tym problemem, pozwalajÈc projektantom WWW tworzyÊ wyglÈd stron, podczas gdy pro- gramiĂci Java realizujÈ logikÚ prezentacji w adnotacjach. Taki ukïad uwaĝa siÚ powszechnie za najbardziej odpowiednie zastosowanie stron JSP. Projekt aplikacji WWW z podziaïem na warstwy W architekturze z wyodrÚbnionymi warstwami powstaje system skïadajÈcy siÚ z kilku wy- raěnie oddzielonych czÚĂci (warstw), z moĝliwie ograniczonymi zaleĝnoĂciami i interakcjami pomiÚdzy tymi czÚĂciami. Taki system cechuje siÚ dobrym podziaïem problematyki aplika- cji, co oznacza, ĝe róĝne aspekty dziaïania aplikacji moĝna opracowywaÊ niezaleĝnie od siebie, Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 143 z minimalnym wpïywem (a docelowo z brakiem takiego wpïywu) na pozostaïe czÚĂci. Od- dzielajÈc od siebie poszczególne fragmenty systemu czynimy oprogramowanie wysoce ad- aptowalnym, ïatwo dostosowujÈcym siÚ do zmieniajÈcych siÚ w przyszïoĂci wymagañ. Warstwy obejmujÈ logikÚ pobierania danych i ich wyprowadzania (warstwa prezentacji), logikÚ aplika- cji, logikÚ biznesowÈ i zagadnienia trwaïoĂci danych. Wszystkie te warstwy moĝna wypro- wadziÊ z opisywanego wczeĂniej trzywarstwowego modelu wzorcowego; warstwa wejĂcia to skïadowa warstwy prezentacji. Warstwa logiki aplikacji jest czÚsto podzielona na logikÚ przepïywu sterowania w warstwie prezentacji i logikÚ biznesowÈ oraz przepïywy danych i procesów w warstwie logiki biznesowej. Logika utrwalania danych moĝe stanowiÊ osobnÈ warstwÚ danych; elementy tej logiki mogÈ znajdowaÊ siÚ w warstwie logiki biznesowej. Warstwa danych wejĂciowych Warstwa danych wejĂciowych albo teĝ warstwa wejĂcia obejmuje kod zajmujÈcy siÚ prze- twarzaniem i weryfikacjÈ poprawnoĂci skïadniowej danych wejĂciowych, a wiÚc strumieni SOAP, HTTP, SMPT i tak dalej; odpowiada teĝ za wyïuskiwanie wartoĂci parametrów z ĝÈdañ. Wedle wzorca MVC odpowiada ona kontrolerowi wejĂcia. Do zmontowania tej warstwy wykorzystujemy komponenty i interfejsy serwletów do obsïugi protokoïu HTTP. Sposobami uĝycia tych interfejsów i komponentów zajmiemy siÚ w dalszej czÚĂci rozdziaïu. Logika aplikacji Kod logiki aplikacji odpowiada za ogólny przepïyw sterowania w aplikacji WWW. CzÚsto ta warstwa okreĂlana jest mianem warstwy sklejajÈcej (ang. glue layer), oddzielajÈcej warstwÚ logiki biznesowej od logiki danych wejĂciowych i wyjĂciowych i zarzÈdzajÈcej stykiem tych warstw. Wymaga to zaszycia tutaj pewnej wiedzy o obu tych warstwach. W tej warstwie bÚdzie na przykïad dochodziÊ do konwersji pomiÚdzy wejĂciem i wyjĂciem warstwy prezentacji w po- staci ciÈgów znaków a komunikatami bÈdě wartoĂciami obiektów biznesowych. W aplikacji WWW ta warstwa moĝe równieĝ zarzÈdzaÊ interakcjÈ uĝytkownika z wieloma stronami aplika- cji jako sekwencjÈ kroków (przejĂciami pomiÚdzy stronami WWW). W MVC odpowiada to roli kontrolera aplikacji. Standard J2EE nie definiuje bezpoĂrednio komponentów do realizacji logiki aplikacji. Warstwa ta jest zazwyczaj implementowana w obrÚbie kontenera WWW J2EE i wykorzy- stuje podobne komponenty i interfejsy, jak te wykorzystywane w warstwie danych wej- Ăciowych. Sytuacja ta poprawia siÚ wyraěnie wraz z dodaniem do Java EE 5 specyfikacji JSF (JavaServer Faces). Logika biznesowa Kod logiki biznesowej, implementujÈcy tak zwane obiekty biznesowe, zajmuje siÚ wyïÈcz- nie wewnÚtrznymi i wïaĂciwymi zadaniami aplikacji, czyli jej procesami biznesowymi. Kod ten powinien byÊ kompletnie niezaleĝny od warstw zewnÚtrznych (prezentacji). W zïoĝonej aplikacji logika biznesowa bÚdzie najpewniej najbardziej rozbudowanym komponentem, ĂciĂle 144 CzÚĂÊ II • Tworzenie aplikacji WWW w Javie zwiÈzanym z kodem odwoïujÈcym siÚ do systemów zewnÚtrznych, w tym baz danych, korpo- racyjnych systemów informacyjnych (EIS) takich jak ERP (Enterprise Resource Planning) czy CRM (Client Relationship Management) i innych powiÈzanych usïug. We wzorcu MVC logice biznesowej odpowiada „model”. Obiekty realizujÈce logikÚ biznesowÈ nie powinny byÊ zaleĝne od obiektów pozosta- ïych warstw. W takim ukïadzie moĝna ïatwo implementowaÊ rdzenne zadania biznesowe aplikacji i umoĝliwiÊ realizacjÚ tych zadañ nie tylko w obrÚbie aplikacji J2EE, ale równieĝ w innych systemach. Nasza rekomendacja dotyczÈca projektowania warstwy biznesowej jest prosta: warstwa ta powinna byÊ moĝliwie uproszczona, implementowana w miarÚ moĝliwoĂci za pomocÈ zwyczajnych obiektów Javy i caïkowicie niezaleĝna od pozostaïych warstw archi- tektury aplikacji. Odwoïywanie siÚ tu do komponentu takiego jak JSP albo któregoĂ z in- terfejsów J2EE typowego dla specyfiki WWW (np. interfejsu ĝÈdania HTTP) jest tu niepo- ĝÈdane. Tak samo niepoĝÈdane byïoby korzystanie tu bezpoĂrednio z interfejsów utrwalania danych wykorzystywanych w warstwie trwaïoĂci. Bo co stanie siÚ z obiektami logiki bizne- sowej po póěniejszej zmianie technologii utrwalania danych? Prawidïowe ograniczenie takich zaleĝnoĂci eliminuje przyszïe problemy i umoĝliwia niezaleĝne wprowadzanie zmian w in- nych warstwach. TrwaïoĂÊ Logika biznesowa implementowana w postaci obiektów jÚzyka Java potrzebuje jakiegoĂ na- rzÚdzia do trwaïego skïadowania danych biznesowych. W wiÚkszoĂci aplikacji w tej roli wy- stÚpujÈ relacyjne bazy danych. Moĝna teĝ wykorzystywaÊ technologie alternatywne, jak bazy danych XML czy bazy obiektowe. Zadaniem warstwy trwaïoĂci jest udostÚpnienie tej funk- cjonalnoĂci w aplikacji. Logika biznesowa nie powinna byÊ zaleĝna od warstwy trwaïoĂci, wiÚc w modelu biznesowym nie naleĝy odwoïywaÊ siÚ wprost do interfejsów skïadowiska danych. Utrwalanie obiektów realizuje siÚ na róĝne sposoby, od obiektów DAO (Data Access Object), zaleĝnych zazwyczaj od interfejsów dostÚpu do baz danych i jÚzyków zapytañ takich jak SQL. Takie podejĂcie jest odpowiednie w przypadku niewielkiego zestawu prostych obiektów, z zaletÈ zwiÚkszonej elastycznoĂci. W innych podejĂciach uwzglÚdnia siÚ interfejs trwaïoĂci Java Persistence API (JPA), wyrafinowane szkielety ORM (Object-Relational Mapping), jak Hibernate czy TOPLink, oraz podejĂcia angaĝujÈce obiektowe bazy danych. Utrwalanie obiektów byïo przedmiotem intensywnych prac i szczegóïowe omawianie tego zagadnienia wykracza poza zakres tematyczny niniejszej ksiÈĝki. Prezentacja wyników Ta warstwa grupuje kod i zasoby niestanowiÈce kodu (pliki HTML, XML czy obrazki), lecz wykorzystywane do prezentowania wyników dziaïania aplikacji uĝytkownikowi. Zazwyczaj skïada siÚ z niewielkiej iloĂci kodu, a tenĝe kod dotyczy wyïÈcznie formatowania i prezen- towania danych. Na przykïad strona JSP warstwy prezentacji wyników moĝe zawieraÊ frag- menty kodu w jÚzyku Java, wypisujÈcego saldo konta na dynamicznie generowanej stronie WWW. We wzorcu MVC odpowiada to koncepcji widoku. Standard J2EE udostÚpnia komponenty JSP i serwlety przewidziane do implemento- wania warstwy prezentacji. Komponenty te sÈ obsïugiwane poprzez bogaty zestaw interfejsów do przetwarzania HTML i XML, tworzenia obrazków, zarzÈdzania adresami URL i ogólnie do obsïugi wszystkich zadañ zwiÈzanych z budowÈ interfejsu uĝytkownika poprzez WWW. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 145 Wzorzec MVC w aplikacji WWW Wzorzec MVC (Model-Controller-View) stanowi elegancki koncepcyjny model podziaïu zadañ w serwerowej stronie aplikacji WWW. AplikacjÚ implementuje siÚ jako poïÈczenie serwletów, stron JSP, usïug i wïaĂciwego kodu w jÚzyku Java. Prezentowane i polecane tutaj podejĂcie to jedno z moĝliwych podejĂÊ do podziaïu odpowiedzialnoĂci i wyeliminowania sïaboĂci tkwiÈcych w wykorzystywanych technologiach. Koncepcja MVC wywodzi siÚ z systemu Smalltalk-80 i promuje warstwowe podejĂcie przy projektowaniu i tworzeniu graficznych interfejsów uĝytkownika. Oto podstawowe koncepcje uczestniczÈce w MVC: „ model obsïugujÈcy logikÚ aplikacji i logikÚ biznesowÈ, „ widok obsïugujÈcy logikÚ prezentacji, „ kontroler przyjmujÈcy i rozprowadzajÈcy wejĂcie (z
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java
Autor:
, ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: