Architektura systemów zarządzania przedsiębiorstwem Wzorce projektowe

Martin Fowler

Kategoria: Inżynieria oprogramowania Algorytmy, Wzorce projektowe
Wydawnictwo: HELION

Ilość stron: 496
ISBN: 83-7361-715-9

Systemy informatyczne służące do zarządzania przedsiębiorstwem to zwykle ogromne aplikacje. Operują na milionach rekordów, przesyłają gigabajty danych i są obsługiwane przez dziesiątki użytkowników. Sprawne działanie takiej aplikacji jest niezwykle istotne dla funkcjonowania przedsiębiorstwa, dlatego musi ona być stabilna, a przed wdrożeniem - gruntownie przetestowana. Przy tworzeniu aplikacji tego typu wykorzystuje się opracowane już rozwiązania, zwane wzorcami projektowymi. Wzorce projektowe to modele poszczególnych komponentów aplikacji -- należy jedynie zaimplementować je w wybranym języku programowania.

Książka "Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe" to przegląd wzorców wykorzystywanych przy projektowaniu aplikacji korporacyjnych. Opisuje zasady podziału aplikacji na warstwy i zasady współpracy pomiędzy warstwami; przedstawia także modele komponentów wchodzących w skład każdej z nich.

  • Warstwy w aplikacjach biznesowych
  • Wzorce logiki aplikacji
  • Wzorce architektury źródła danych
  • Wzorce mapowania obiektowo-relacyjnego
  • Wzorce prezentacji
  • Wzorce dystrybucji
  • Wzorce stanu sesji
  • Wzorce podstawowe
  • Spis treści:

    Część I Wprowadzenie (29)

    Rozdział 1. Warstwy aplikacji (31)

    • Podział warstwowy w aplikacjach dla przedsiębiorstw (32)
    • Trzy główne warstwy (33)
    • Układ warstw (35)

    Rozdział 2. Porządkowanie logiki dziedziny (37)

    • Wybór wzorca (40)
    • Warstwa usług (42)

    Rozdział 3. Mapowanie do relacyjnych baz danych (43)

    • Wzorce architektury (43)
    • Problem zachowań (47)
    • Odczyt danych (48)
    • Wzorce mapowania struktury (49)
      • Mapowanie relacji (49)
      • Dziedziczenie (52)
    • Proces budowy mapowania (54)
      • Podwójne mapowanie (55)
    • Metadane (55)
    • Połączenie z bazą danych (56)
    • Inne problemy mapowania (58)
    • Warto przeczytać (58)

    Rozdział 4. Prezentacja w sieci WWW (59)

    • Wzorce widoku (62)
    • Wzorce kontrolera danych wejściowych (64)
    • Warto przeczytać (64)

    Rozdział 5. Przetwarzanie współbieżne (65)

    • Problemy przetwarzania współbieżnego (66)
    • Konteksty przetwarzania (67)
    • Izolacja i niezmienność (68)
    • Optymistyczne i pesymistyczne sterowanie współbieżnością (68)
      • Zapobieganie niespójnym odczytom (69)
      • Zakleszczenia (70)
    • Transakcje (71)
      • ACID (72)
      • Zasoby transakcyjne (72)
      • Zwiększanie żywotności przez ograniczanie izolacji (73)
      • Transakcje biznesowe i systemowe (74)
    • Wzorce sterowania współbieżnością w trybie offline (76)
    • Serwery aplikacji (77)
    • Warto przeczytać (78)

    Rozdział 6. Stan sesji (79)

    • Zalety sesji bezstanowej (79)
    • Stan sesji (80)
      • Metody przechowywania danych stanu sesji (81)

    Rozdział 7. Obiekty rozproszone (85)

    • Zwodnicze obiekty rozproszone (85)
    • Interfejsy lokalne i interfejsy zdalne (86)
    • Kiedy stosować architekturę rozproszoną (87)
    • Granice dystrybucji (88)
    • Interfejsy dystrybucji (89)

    Rozdział 8. Podsumowanie (91)

    • Warstwa dziedziny, czyli początek (92)
    • Warstwa źródła danych, czyli krok drugi (93)
      • Źródło danych dla schematu Transaction Script (110) (93)
      • Źródło danych dla schematu Table Module (125) (93)
      • Źródło danych dla schematu Domain Model (116) (94)
    • Warstwa prezentacji (94)
    • Wzorce a technologia (95)
      • Java i J2EE (95)
      • .NET (96)
      • Procedury przechowywane (97)
      • Usługi WWW (97)
    • Inne systemy warstw aplikacji (98)

    Część II Wzorce (101)

    Rozdział 9. Wzorce logiki dziedziny (103)

    • Transaction Script (Skrypt transakcji) (103)
      • Na czym polega (103)
      • Kiedy używamy (105)
      • Problem obliczania przychodu (105)
    • Domain Model (Model dziedziny) (109)
      • Na czym polega (109)
      • Kiedy używamy (111)
      • Warto przeczytać (112)
      • Przykład: uznanie przychodu (Java) (112)
    • Table Module (Moduł tabeli) (117)
      • Na czym polega (118)
      • Kiedy używamy (120)
      • Przykład: uznanie przychodu (C#) (120)
    • Service Layer (Warstwa usług) (124)
      • Na czym polega (125)
      • Kiedy używamy (127)
      • Warto przeczytać (127)
      • Przykład: uznanie przychodu (Java) (127)

    Rozdział 10. Wzorce architektury źródła danych (133)

    • Table Data Gateway (Brama danych tabeli) (133)
      • Na czym polega (133)
      • Kiedy używamy (134)
      • Warto przeczytać (135)
      • Przykład: brama tabeli osób (C#) (135)
      • Przykład: brama oparta na zbiorach danych ADO.NET (C#) (137)
    • Row Data Gateway (Brama danych wiersza) (140)
      • Na czym polega (140)
      • Kiedy używamy (142)
      • Przykład: brama rekordu osoby (Java) (142)
      • Przykład: uchwyt danych dla obiektu dziedziny (Java) (146)
    • Active Record (Rekord aktywny) (147)
      • Na czym polega (147)
      • Kiedy używamy (148)
      • Przykład: prosta tabela osób (Java) (148)
    • Data Mapper (Odwzorowanie danych) (152)
      • Na czym polega (152)
      • Kiedy używamy (156)
      • Przykład: proste odwzorowanie obiektowo-relacyjne (Java) (157)
      • Przykład: wyłączanie metod wyszukujących (Java) (162)
      • Przykład: tworzenie obiektu pustego (Java) (165)

    Rozdział 11. Wzorce zachowań dla mapowania obiektowo-relacyjnego (169)

    • Unit of Work (Jednostka pracy) (169)
      • Na czym polega (170)
      • Kiedy używamy (173)
      • Przykład: rejestracja przez obiekt (Java) (174)
    • Identity Map (Mapa tożsamości) (178)
      • Na czym polega (178)
      • Kiedy używamy (180)
      • Przykład: metody mapy tożsamości (Java) (181)
    • Lazy Load (Opóźnione ładowanie) (182)
      • Na czym polega (182)
      • Kiedy używamy (184)
      • Przykład: opóźniona inicjalizacja (Java) (185)
      • Przykład: wirtualny pośrednik (Java) (185)
      • Przykład: uchwyt wartości (Java) (187)
      • Przykład: widmo (C#) (188)

    Rozdział 12. Wzorce struktury dla mapowania obiektowo-relacyjnego (197)

    • Identity Field (Pole tożsamości) (197)
      • Na czym polega (197)
      • Kiedy używamy (201)
      • Warto przeczytać (201)
      • Przykład: liczba całkowita jako klucz (C#) (201)
      • Przykład: tabela kluczy (Java) (203)
      • Przykład: klucz złożony (Java) (205)
    • Foreign Key Mapping (Odwzorowanie do klucza obcego) (216)
      • Na czym polega (216)
      • Kiedy używamy (218)
      • Przykład: odwołanie jednowartościowe (Java) (219)
      • Przykład: wyszukiwanie w wielu tabelach (Java) (222)
      • Przykład: kolekcja odwołań (C#) (223)
    • Association Table Mapping (Odwzorowanie do tabeli asocjacji) (226)
      • Na czym polega (226)
      • Kiedy używamy (227)
      • Przykład: pracownicy i umiejętności (C#) (227)
      • Przykład: odwzorowanie z kodem SQL (Java) (230)
      • Przykład: jedno zapytanie do obsługi wielu pracowników (Java) (234)
    • Dependent Mapping (Odwzorowanie składowych) (239)
      • Na czym polega (239)
      • Kiedy używamy (240)
      • Przykład: albumy i ścieżki (Java) (241)
    • Embedded Value (Wartość osadzona) (244)
      • Na czym polega (244)
      • Kiedy używamy (244)
      • Warto przeczytać (245)
      • Przykład: prosty obiekt wartości (Java) (245)
    • Serialized LOB (Duży obiekt serializowany) (247)
      • Na czym polega (247)
      • Kiedy używamy (248)
      • Przykład: serializowanie hierarchii działów firmy do postaci XML (Java) (249)
    • Single Table Inheritance (Odwzorowanie dziedziczenia do pojedynczej tabeli) (252)
      • Na czym polega (252)
      • Kiedy używamy (253)
      • Przykład: tabela zawodników (C#) (253)
    • Class Table Inheritance (Odwzorowanie dziedziczenia do tabel klas) (259)
      • Na czym polega (259)
      • Kiedy używamy (260)
      • Warto przeczytać (260)
      • Przykład: zawodnicy (C#) (260)
    • Concrete Table Inheritance (Odwzorowanie dziedziczenia do tabel konkretnych) (266)
      • Na czym polega (266)
      • Kiedy używamy (268)
      • Przykład: zawodnicy (C#) (268)
    • Inheritance Mappers (Klasy odwzorowania dziedziczenia) (274)
      • Na czym polega (275)
      • Kiedy używamy (276)

    Rozdział 13. Wzorce odwzorowań obiektów i relacyjnych metadanych (277)

    • Metadata Mapping (Odwzorowanie metadanych) (277)
      • Na czym polega (277)
      • Kiedy używamy (279)
      • Przykład: użycie metadanych i odzwierciedlania (Java) (280)
    • Query Object (Obiekt zapytania) (287)
      • Na czym polega (287)
      • Kiedy używamy (288)
      • Warto przeczytać (289)
      • Przykład: prosty wzorzec Obiekt zapytania (Java) (289)
    • Repository (Magazyn) (293)
      • Na czym polega (294)
      • Kiedy używamy (295)
      • Warto przeczytać (296)
      • Przykład: odnajdywanie osób utrzymywanych przez podaną osobę (Java) (296)
      • Przykład: zamiana strategii wzorca Repository (Java) (297)

    Rozdział 14. Wzorce prezentacji internetowych (299)

    • Model View Controller (Model kontrolera widoku) (299)
      • Na czym polega (299)
      • Kiedy używamy (301)
    • Page Controller (Kontroler strony) (302)
      • Na czym polega (302)
      • Kiedy używamy (303)
      • Przykład: prosta prezentacja z serwletem pełniącym funkcję kontrolera oraz stroną JSP pełniącą rolę widoku (Java) (304)
      • Przykład: zastosowanie strony JSP do obsługi żądania (Java) (306)
      • Przykład: mechanizm obsługi stron wykorzystujący kod schowany (C#) (309)
    • Front Controller (Kontroler fasady) (313)
      • Na czym polega (313)
      • Kiedy używamy (315)
      • Warto przeczytać (315)
      • Przykład: prosta prezentacja (Java) (315)
    • Template View (Szablon widoku) (318)
      • Na czym polega (318)
      • Kiedy używamy (322)
      • Przykład: wykorzystanie JSP jako widoku wraz z osobnym kontrolerem (Java) (322)
      • Przykład: strona ASP.NET (C#) (325)
    • Transform View (Widok przekształcający) (328)
      • Na czym polega (328)
      • Kiedy używamy (329)
      • Przykład: proste przekształcenie (Java) (330)
    • Two Step View (Widok dwuetapowy) (332)
      • Na czym polega (332)
      • Kiedy używamy (333)
      • Przykład: dwuetapowe przekształcenie XSLT (XSLT) (338)
      • Przykład: JSP i znaczniki niestandardowe (Java) (340)
    • Application Controller (Kontroler aplikacji) (345)
      • Na czym polega (345)
      • Kiedy używamy (347)
      • Warto przeczytać (347)
      • Przykład: kontroler aplikacji obsługujący model stanu (Java) (347)

    Rozdział 15. Wzorce dystrybucji (353)

    • Remote Facade (Zdalna fasada) (353)
      • Na czym polega (354)
      • Kiedy używamy (357)
      • Przykład: zastosowanie komponentu session bean i zdalnej fasady (Java) (357)
      • Przykład: usługa WWW (C#) (360)
    • Data Transfer Object (Obiekt transferu danych) (366)
      • Na czym polega (366)
      • Kiedy używamy (370)
      • Warto przeczytać (371)
      • Przykład: przekazywanie informacji o albumach (Java) (371)
      • Przykład: serializacja danych do postaci XML (Java) (375)

    Rozdział 16. Wzorce współbieżności autonomicznej (379)

    • Optimistic Offline Lock (Optymistyczna blokada autonomiczna) (379)
      • Na czym polega (380)
      • Kiedy używamy (383)
      • Przykład: warstwa dziedziny i wzorzec Data Mappers (165) (Java) (384)
    • Pessimistic Offline Lock (Pesymistyczna blokada autonomiczna) (389)
      • Na czym polega (390)
      • Kiedy używamy (393)
      • Przykład: prosty menedżer blokad (Java) (394)
    • Coarse-Grained Lock (Blokada gruboziarnista) (400)
      • Na czym polega (400)
      • Kiedy używamy (402)
      • Przykład: wspólna blokada Optimistic Offline Lock (416) (Java) (403)
      • Przykład: wspólna blokada Pessimistic Offline Lock (426) (Java) (408)
      • Przykład: blokowanie korzenia przy użyciu blokady Pessimistic Offline Lock (416) (Java) (409)
    • Implicit Lock (Blokada domyślna) (410)
      • Na czym polega (411)
      • Kiedy używamy (412)
      • Przykład: niejawna blokada Pessimistic Offline Lock (426) (Java) (412)

    Rozdział 17. Wzorce stanu sesji (415)

    • Client Session State (Stan sesji klienta) (415)
      • Na czym polega (415)
      • Kiedy używamy (416)
    • Server Session State (Stan sesji serwera) (418)
      • Na czym polega (418)
      • Kiedy używamy (420)
    • Database Session State (Stan sesji bazy danych) (421)
      • Na czym polega (421)
      • Kiedy używamy (423)

    Rozdział 18. Wzorce podstawowe (425)

    • Gateway (Brama) (425)
      • Na czym polega (426)
      • Kiedy używamy (426)
      • Przykład: brama pośrednicząca w korzystaniu z usługi rozsyłania komunikatów (Java) (427)
    • Mapper (Odwzorowanie) (432)
      • Na czym polega (432)
      • Kiedy używamy (433)
    • Layer Supertype (Typ bazowy warstwy) (434)
      • Na czym polega (434)
      • Kiedy używamy (434)
      • Przykład: obiekt domeny (Java) (434)
    • Separated Interface (Interfejs oddzielony) (435)
      • Na czym polega (435)
      • Kiedy używamy (437)
    • Registry (Rejestr) (438)
      • Na czym polega (438)
      • Kiedy używamy (440)
      • Przykład: rejestr bazujący na wzorcu Singleton (Java) (440)
      • Przykład: rejestr nadający się do zastosowania w środowiskach wielowątkowych (Java) (442)
    • Value Object (Obiekt wartości) (444)
      • Na czym polega (444)
      • Kiedy używamy (445)
    • Money (Pieniądze) (446)
      • Na czym polega (446)
      • Kiedy używamy (448)
      • Przykład: klasa Money (Java) (449)
    • Special Case (Przypadek szczególny) (453)
      • Na czym polega (453)
      • Kiedy używamy (454)
      • Warto przeczytać (454)
      • Przykład: prosta implementacja pustego obiektu (C#) (454)
    • Plugin (456)
      • Na czym polega (456)
      • Kiedy używamy (457)
      • Przykład: generator identyfikatorów (Java) (457)
    • Service Stub (Usługa zastępcza) (461)
      • Na czym polega (461)
      • Kiedy używamy (462)
      • Przykład: usługa podatkowa (Java) (462)
    • Record set (Zbiór rekordów) (465)
      • Na czym polega (465)
      • Kiedy używamy (467)

    Dodatki (469)



    Podobne książki:


    OCL precyzyjne modelowanie w UML Książka "OCL precyzyjne modelowanie w UML" jest poświęcona językowi OCL, służącemu do uściślania modeli oprogramowania, będącemu elementem standardu UML. W pierwszym rozdziale autorzy zaznajamiają Czytelnika z pojęciem ograniczania i tłumaczą,...
     
    Modelowanie systemów informatycznych w języku UML 2.1 w praktyce Książka przedstawia sposób modelowania systemów informacyjnych z wykorzystaniem podejścia obiektowego i języka UML 2.1. Czytelnik znajdzie w niej współczesne spojrzenie na modelowanie i projektowanie systemów informatycznych w ujęciu obiektowym...
     
    Algorytmy + struktury danych = programy wydanie siódme Klasyka informatykiProgramowanie to konstruktywna i twórcza działalność. W książce przedstawiono systematyczne przejścia do rozwiązania problemów programistycznych o charakterze zarówno naukowym, jak i praktycznym. W prezentowanych metodach szczególną...