Rails_Projektowanie_systemow_klasy_enterprise_raprsy.pdf

(454 KB) Pobierz
Rails. Projektowanie
systemów klasy
enterprise
Autor:
Dan Chak
T³umaczenie: Andrzej Gra¿yñski
ISBN: 978-83-246-2198-9
Tytu³ orygina³u:
Enterprise Rails
Format: 168×237, stron: 328
Poznaj najbardziej zaawansowane tajniki Rails!
• Jak zorganizowaæ kod, wykorzystuj¹c system wtyczek lub modu³y?
• Jakie zalety posiada architektura SOA?
• Jak zwiêkszyæ wydajnoœæ Rails?
Rynek szkieletów aplikacji internetowych jest niezwykle urozmaicony. Wœród wielu
dostêpnych opcji mo¿na znaleŸæ tu rozwi¹zania przeznaczone dla projektów o ró¿nej
skali z³o¿onoœci, zarówno te mniej, jak i bardziej popularne. Warto jednak siêgn¹æ po
rozwi¹zanie absolutnie unikatowe i wyj¹tkowe – Rails. Szkielet ten œwietnie sprawdza
siê zarówno w projektach ma³ych, jak i tych klasy enterprise, a ponadto znany jest ze
swoich mo¿liwoœci, wydajnoœci oraz elastycznoœci. Warto tak¿e podkreœliæ, ¿e w pakiecie
razem z nim dostaniemy liczn¹, chêtn¹ do pomocy spo³ecznoœæ u¿ytkowników!
Autor ksi¹¿ki porusza interesuj¹ce kwestie zwi¹zane z budow¹ zaawansowanych
systemów informatycznych opartych o Rails. W trakcie lektury dowiesz siê, jak
wykorzystaæ system wtyczek jako œrodek organizuj¹cy Twój kod oraz jak w tej roli
sprawdz¹ siê modu³y. Kolejne rozdzia³y przynios¹ solidny zastrzyk wiedzy na temat
tworzenia rozbudowanego i bezpiecznego modelu danych, dziedziczenia wielotabelarycznego
oraz wykorzystania wyzwalaczy jako narzêdzia kontroli skomplikowanych zale¿noœci
w danych. Dan Chak du¿y nacisk k³adzie na zagadnienia zwi¹zane z SOA (skrót od
ang. Service Oriented Architecture) oraz wydajnoœci¹. Jest to genialna pozycja dla
wszystkich programistów i projektantów uczestnicz¹cych w projekcie wytwarzanym
z wykorzystaniem Rails.
• Komponenty aplikacji
• Organizacja kodu z wykorzystaniem wtyczek
• Rola modu³ów w porz¹dkowaniu kodu
• Budowa solidnego modelu danych
• Normalizacja modelu
• Obs³uga danych dziedzinowych
• Wykorzystanie wyzwalaczy w celu kontroli zale¿noœci w danych
• Dziedziczenie jedno- i wielotabelaryczne
• Zastosowanie modeli widokowych
• Architektura SOA
• Dostarczanie us³ug typu XML-RPC
• Us³ugi typu REST
• Zwiêkszenie wydajnoœci Rails
Obowi¹zkowa pozycja dla wszystkich programistów i projektantów korzystaj¹cych z Rails!
Spis tre ci
Wst�½p .............................................................................................................................9
1. Widok z góry ................................................................................................................ 19
Co to znaczy „enterprise?”
Powolny wzrost
Komponenty aplikacji
Warstwa danych
Warstwa aplikacyjna
Warstwa cache’owania
System komunikacyjny
Serwer WWW
Zapora sieciowa
19
21
24
24
26
29
32
33
33
2. Wtyczki jako rodek organizacji kodu ........................................................................35
Korzy ci
Tworzenie wäasnej wtyczki
Rozszerzanie klas wbudowanych
Rozszerzenia uniwersalne
Wdra anie
svn:externals
36
37
38
40
45
45
3. Organizacja kodu za pomocé modu ów .....................................................................47
Pliki i katalogi
Granice moduäu wyznaczajñ przestrzeþ nazw
Miödzymoduäowe skojarzenia klas modelowych
Relacje wzajemne
Modularyzacja jako wstöp do architektury usäugowej
Wymuszenie prawidäowej kolejno ci äadowania definicji klas
çwiczenia
47
49
50
51
51
53
54
3
Refaktoring
Wyodröbnianie moduäów fizycznych
Uwalnianie metod u ytkowych
54
54
55
4. Baza danych jak forteca .............................................................................................. 57
Baza danych jako czö è aplikacji
„Jedno rodowisko wyznacza reguäy”
„Nasi programi ci nie popeäniajñ bäödów”
„Baza danych moja i tylko moja”
Siadajñc na ramionach gigantów
Wybór wäa ciwego systemu bazy danych
À
propos migracji
Obalajñc mity…
Raporty, raporty…
58
58
58
59
59
59
60
62
63
5. Budowanie solidnego modelu danych ........................................................................ 67
Bilety do kina
Na poczñtek bardzo prosto
Ograniczenia
Obalamy mity
Integralno è referencyjna
Wprowadzenie do indeksowania
67
68
70
78
78
85
6. Refaktoryzacja bazy do trzeciej postaci normalnej ................................................... 87
Trzecia postaè normalna
Zacznij od normalizacji
Dziedziczenie tabel i domieszki
çwiczenia
Refaktoryzacja
87
91
92
95
96
7. Dane dziedzinowe ....................................................................................................... 97
Kody pocztowe i geograficzne dane dziedzinowe
Wzorzec projektowy — strategia dla tabel dziedzinowych
Refaktoryzacja od samego poczñtku
99
101
104
8. Klucze z o one i postaë normalna DKNF .................................................................. 107
Klucze naturalne — korzy ci i käopoty
Wybór kluczy naturalnych
Siedzñc ju na ramionach giganta…
Migracja do postaci normalnej DKNF
Klucze wielokolumnowe i ich implementacja w Rails
Odroczona kontrola integralno ci referencyjnej
Co za co …
108
111
112
113
116
120
122
4
_
Spis tre ci
çwiczenia
Refaktoryzacja
Klucz jednokolumnowy
Klucz wielokolumnowy
123
124
124
125
9. Wyzwalacze jako narz�½dzia kontroli skomplikowanych zale no ci
wewnétrz danych .......................................................................................................127
Kontrola ograniczeþ za pomocñ wyzwalaczy
Anatomia funkcji w jözyku PL/pgSQL
To tylko äaþcuchy…
Zmienne lokalne i przypisywanie im warto ci
Bloki
Dodatkowe cechy wyzwalacza
Wyzwalacz — äagodna zapora lub bezpiecznik
Instrukcje warunkowe
127
130
131
131
132
132
132
133
10. Dziedziczenie wielotabelaryczne ............................................................................. 135
O co chodzi?
Polimorfizm — co to jest?
Dziedziczenie a dane fizyczne
Dziedziczenie jednotabelaryczne
Dziedziczenie wielotabelaryczne
Alternatywa wyäñczajñca dla zbioru kolumn
Implementacja MTI w Rails
Klasy-fabryki
çwiczenia
Refaktoryzacja
Z STI do MTI
Z :polymorphic => true do MTI
135
137
138
140
140
143
145
151
152
152
152
153
11. Modele widokowe ..................................................................................................... 155
Widoki
Definiowanie widoku
Definiowanie klasy modelowej na bazie widoku
Specyfika widoków
Dodawanie, modyfikowanie i usuwanie rekordów
Ograniczenia i klucze obce
Indeksowanie
çwiczenia
Refaktoryzacja
156
156
157
158
159
159
160
161
161
Spis tre ci
_
5
12. Widoki zmaterializowane ......................................................................................... 163
Reguäy rzñdzñce widokami zmaterializowanymi
Widok ródäowy
Formatowanie widoku
Tabela docelowa
Funkcje od wie ajñce i uniewa niajñce
Zarzñdzanie zale no ciami czasowymi
Kto za to päaci?
Od wie anie i uniewa nianie sterowane wyzwalaczami
Tabela movie_showtimes
Tabela movies
Tabela theatres
Tabela orders
Tabela purchased_tickets
Ukrycie implementacji dziöki widokowi uzgadniajñcemu
Periodyczne od wie anie
Indeksowanie widoku zmaterializowanego
To siö naprawdö opäaca…
Kaskadowe cache’owanie widoków
çwiczenia
164
165
166
168
169
171
172
175
176
178
178
179
180
181
183
184
185
186
187
13. SOA — zaczynamy .................................................................................................... 189
Czym jest SOA?
Dlaczego SOA?
Wspóädzielenie zasobów
Redukcja obciñ enia baz danych
Skalowalno è i cache’owanie
Lokalna redukcja zäo ono ci
Podsumowanie
çwiczenia
189
192
193
196
202
202
205
205
14. Specyfika SOA ............................................................................................................ 207
Specyfika usäug
Ukryta implementacja
Przystöpne API
Projektowanie API
Nie rozdrabniaj siö
Ogranicz kontakty
Korzystaj ze wspóäbie no ci
Tylko to — i nic wiöcej
207
207
210
211
211
213
214
215
6
_
Spis tre ci
Zgłoś jeśli naruszono regulamin