Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.

Podobne prezentacje


Prezentacja na temat: "PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar."— Zapis prezentacji:

1 PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar

2 Plan Czym jest? Czym nie jest? Geneza i potrzeba Kod źródłowy Programowanie aspektowe Baza danych: Prevayler PAT

3 Czym jest? Platforma (framework), ale lekka http://patsystem.sf.net/ Ułatwia zapisywanie danych –Obiektowa Przyśpiesza tworzenie aplikacji Konieczna dodatkowa biblioteka Zmiana procesu kompilacji (Ant) Konieczny RAM

4 Czym nie jest? Nie pozwoli udostępnić danych bazy danych na zewnątrz (RDBMS) Nie ma ładnych narzędzi do podglądu danych Nie wspiera 2PC Rollback (ver. 1) GUI tworzymy samemu Nie będzie SQL

5 Geneza i potrzeba 2003: Pi –Problem z RDBMS –Prevayler Nadal pisanie kodu 2004: AOP –Programowanie aspektowe –Powstanie PAT 2005: Ax –Pierwsze wdrożenie

6 Geneza i potrzeba Ewolucja i elastyczność –Łatwe testy Prostota –Przejrzysta warstwa danych, POJO –Ładny kod; refaktoryzacja Wydajność –Szybkość przeszukiwania danych

7 Kod źródłowy

8 Przykładowa klasa Forum realizująca jakąś logikę biznesową –Nowa wiadomość –Wyszukiwanie wiadomości

9 public class Forum { public Forum() { }

10 public class Forum { private List messages; public Forum() { }

11 public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); }

12 public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); } public void newMessage(String message) { messages.add(new Message(message)); }

13 public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); } public void newMessage(String message) { messages.add(new Message(message)); } public String findMessageContaining(String substring) { for (Message message: messages.iterator()) if (message.matches(substring)) return message; }

14 @pat.bo public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); } @pat.transaction public void newMessage(String message) { messages.add(new Message(message)); } public String findMessageContaining(String substring) { for (Message message: messages.iterator()) if (message.matches(substring)) return message; }

15 Programowanie aspektowe

16 Magia Uzupełnia programowanie obiektowe Polepsza modularyzację Rozdziela zagadnienia Ala triggery, lecz odnośnie kodu Javy

17 Core + usługi (aspekty) Forum Users Topics persistence asynchronous invocation remoting etc..

18 Core + usługi (aspekty) Forum Users Topics persistence asynchronous invocation remoting etc..

19 Aspekt: tracing To także usługa –Przeplata wiele miejsc w kodzie –Jest ortogonalna do logiki biznesowej –Może być, lub nie być –Może być różnie zaimplementowana

20 Aspekt: tracing public ActionForward execute(...) { log.debug(„Starting loading data..”); List items = ItemsDao.loadAllItems(); //.... }

21 Aspekt: tracing public ActionForward execute(...) { List items = ItemsDao.loadAllItems(); //.... }

22 Aspekt? Jednostka, która definiuje: –coAspect.trace() –kiedyexecution –gdzie * *Action->execute(..) @marker->execute(..) ma być uruchomione

23 Aspekty W takim razie kilka przykładów aspektów....

24 Aspekt: toString() * -> toString(); public String toString() { return ToStringBuilder.reflectionToString( this, ToStringStyle.MULTI_LINE_STYLE ); }

25 Aspekt: onLoad(); dependency injection @InitializeMe Public class Car { private Garage garage; } Aspect.init(Object o) { o.garage = Globals.PUBLIC_GARAGE; }

26 Aspekt: autoryzacja Dostęp do metod klasy, atrybutów,... Nie zmieniamy kodów źródłowych Można w przyszłości wymienić system autoryzacji

27 Kto używa aspektów Spring JBoss AS Aplikacje użytkowe

28 Prevayler

29 Baza danych W pamięci RAM Logi transakcji na dysku twardym Szybka Prosta do obsłużenia Dla Javy ma jeden problem: kod transakcji

30 PAT

31 Na początku miał tylko uprościć Prevayler Okazał się platformą do szybkiego tworzenia aplikacji: –Aplikacje biznesowe –Szybkie prototypowanie Może działać razem z Tomcat, Struts, Ajax, Swing, Java5,...

32 PAT: Jak? pat-base-?.jar pat-prevayler-?.jar pat-aop-config-*.jar @pat.bo, @pat.transaction, @pat.root Kompilacja: statyczna, dynamiczna (Ant)

33 PAT: Klasy biznesowe Forum.java –Metody –Atrybuty

34 PAT: Metody biznesowe Metody: –Biznesowe, uaktualniające dane Mają „przetrwać” –Przeszukujące dane Mają być szybkie

35 PAT: Adnotacje Klasa biznesowa: @pat.bo Metoda biznesowa @pat.transaction

36 PAT: Wymóg korzenia

37 PAT: Pobieranie danych Zwykła iteracja / Nawigowanie –Java5 XPath JoSQL

38 PAT: Zapisywanie danych Tylko @pat.transaction na metodach –Aspekt, refleksja, podmiana PersistableAspect.takeSnapshot() –Raz co jakiś czas

39 Kiedy wykorzystywać Prototypowanie Elastyczność Prostota...

40 Prototypowanie public... execute(.... { List myListA = world.getEmployees(); List myListB = EmployeesDao.findAll(); List myListC = JDBCTemplate.findAll(); List myListD = SQL.execute(„SELECT * FROM...”) }

41 PAT: Zbiór aspektów RootCreation BusinessObjectCreation TopBusinessObjectCreation CommandInterceptor Identifiable PersistableAspect...

42 Co dalej po PAT? Zbiór aspektów: –Stringable –Struts (NotNull, Tracer) Prails –Generowanie całych aplikacji Wejście: Klasy biznesowe Wyjście: Gotowa aplikacja webowa

43 Czym jest? Platforma (framework), ale lekka Ułatwia zapisywanie danych Przyśpiesza tworzenie aplikacji Konieczna dodatkowa biblioteka Zmiana procesu kompilacji (Ant) Konieczny RAM Czym nie jest?

44 Dziękuję Pokaz praktyczny?


Pobierz ppt "PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar."

Podobne prezentacje


Reklamy Google