Wprowadzenie do implementacji
  architektur plug-in w PHP

       Damian Tylczyński
„Gdybym wiedział co robię, to przecież nie była by
praca badawcza„

- Albert Einstein
Funkcjonalność




  System
monolityczny
„smaller parts (modules) that can be
independently created and then used in different
systems to drive multiple functional...
Plug-in



                                     Niezmienna postać,
Stabilne API                         zmienna funkcjonal...
„LINUX is a monolithic style system. This is a
giant step back into the 1970s. That is like taking
an existing, working C ...
Spoiler:

Darwin, Linux, Windows NT
   nie są mikro-jądrami
XULRunner
Plug-in powinien skupić się
na wykonaniu pojedynczego zadania
Nie ArticlesPlugin

                      tylko:

● PagePlugin – wyświetlanie i edycja,
● CategoriesPlugin – kategoryzacja...
Nie UsersPlugin

                    tylko:

● AuthPlugin – ACL i autoryzacja,
● LoginPlugin – logowanie,

● RegisterPlugi...
Dostęp do bazy danych?

       Sesje?

    Także plug-in
(mikro) jądro

Udostępnienie fundamentalnego
  środowiska działania plug-in
Jądro i zdarzenia

Konfiguracja      Rejestracja               Uruchomienie
środowiska        i konfiguracja pluginów   ap...
Cykl życia pluginu:



  Instalacja,
  → Uruchomienie,
  → Działanie,
  Aktualizacja
  → Zatrzymanie,
  Usunięcie.
Zarządzanie pluginami
   Tak, to też plugin
Zależności

                                   Udostępnianie „narzędzi”


Pliki multimedialne
                            ...
Abstrakcja                                                System
                        M        C        V
bazy danych  ...
Plug-in musi mieć możliwość komunikacji
       z innymi częściami systemu
           (i z innymi pluginami)
Luźne wiązania
Pośrednik
Programowanie zdarzeniowe
Wysłanie




  Odebranie
Bąbelkowanie
Zatrzymywanie bąbelkowania
I funkcje domyślne też
getContext()




Obiekt kontekstu naszym pośrednikiem
          (wielozadaniowym)
Wstrzykiwanie zależności umożliwia
rozpropagowywanie obiektu kontekstu
Każdy plug-in
musi posiadać dostęp do własnego
        obiektu kontekstu

         Każda klasa.
         Każda usługa.
Usługi?
Usługa to zestaw funkcji posiadających
zunifikowane API, implementujące rozwiązanie
          pewnego problemu (uff...)
Dlaczego nie wszędzie zdarzenia?
 Na zdarzenie nie musi reagować
         żadna funkcja
Plugin != Usługa

Plugin > Usługa
LogsService – logowanie w aplikacji.

            Pluginy?
         LogsTxtPlugin
        LogsNullPlugin

       Zunifikow...
Kontekst musi udostępniać usługi
(zachowywać się jak kontener zależności)
Narzędzia


  Programowanie zdarzeniowe.
          Wzorzec filtra.
      Wzorzec dekoratora.
        Wzorzec strategii.
  ...
Stabilność

   Dziel i rządź                   GTD programowania

                          Zalety
Zrównoleglenie prac
   ...
Dziękuję za uwagę
Wprowadzenie do implementacji architektur plug-in w PHP
Wprowadzenie do implementacji architektur plug-in w PHP
Wprowadzenie do implementacji architektur plug-in w PHP
Wprowadzenie do implementacji architektur plug-in w PHP
Wprowadzenie do implementacji architektur plug-in w PHP
Wprowadzenie do implementacji architektur plug-in w PHP
Upcoming SlideShare
Loading in …5
×

Wprowadzenie do implementacji architektur plug-in w PHP

3,663 views

Published on

Autor: Damian Tylczyński
Aktualne serwisy internetowe coraz częściej przypominają rozbudowane aplikacje, tworzone w dużych zespołach programistów z myślą o długofalowym rozwoju. Opowiem jak okiełznać pokaźne bazy kodu i umożliwić elastyczną rozbudowę aplikacji dzięki architekturom typu plug-in.

Published in: Technology, Art & Photos
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,663
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Wprowadzenie do implementacji architektur plug-in w PHP

  1. 1. Wprowadzenie do implementacji architektur plug-in w PHP Damian Tylczyński
  2. 2. „Gdybym wiedział co robię, to przecież nie była by praca badawcza„ - Albert Einstein
  3. 3. Funkcjonalność System monolityczny
  4. 4. „smaller parts (modules) that can be independently created and then used in different systems to drive multiple functionalities” - Wikipedia, Modular design
  5. 5. Plug-in Niezmienna postać, Stabilne API zmienna funkcjonalność na żądanie System architektury plug-in Miejsce na dalszy rozwój Usługi systemu
  6. 6. „LINUX is a monolithic style system. This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea„ - Andy Tanenbaum
  7. 7. Spoiler: Darwin, Linux, Windows NT nie są mikro-jądrami
  8. 8. XULRunner
  9. 9. Plug-in powinien skupić się na wykonaniu pojedynczego zadania
  10. 10. Nie ArticlesPlugin tylko: ● PagePlugin – wyświetlanie i edycja, ● CategoriesPlugin – kategoryzacja, ● TagPlugin – tagi, ● CommentsPlugin – komentarze, ● ScorePlugin – ocenianie,
  11. 11. Nie UsersPlugin tylko: ● AuthPlugin – ACL i autoryzacja, ● LoginPlugin – logowanie, ● RegisterPlugin – rejestracja, ● UserDataPlugin – dane użytkownika,
  12. 12. Dostęp do bazy danych? Sesje? Także plug-in
  13. 13. (mikro) jądro Udostępnienie fundamentalnego środowiska działania plug-in
  14. 14. Jądro i zdarzenia Konfiguracja Rejestracja Uruchomienie środowiska i konfiguracja pluginów aplikacji
  15. 15. Cykl życia pluginu: Instalacja, → Uruchomienie, → Działanie, Aktualizacja → Zatrzymanie, Usunięcie.
  16. 16. Zarządzanie pluginami Tak, to też plugin
  17. 17. Zależności Udostępnianie „narzędzi” Pliki multimedialne Instalacja Plug-in to nie tylko „jakaś” funkcja do wywołania Reagowanie Aktualizacja Nadpisywanie
  18. 18. Abstrakcja System M C V bazy danych szablonów Obsługa Wywołanie Odpowiedź żądania akcji HTTP HTTP Zarządzanie Jądro plug-in Plug-iny
  19. 19. Plug-in musi mieć możliwość komunikacji z innymi częściami systemu (i z innymi pluginami)
  20. 20. Luźne wiązania
  21. 21. Pośrednik
  22. 22. Programowanie zdarzeniowe
  23. 23. Wysłanie Odebranie
  24. 24. Bąbelkowanie
  25. 25. Zatrzymywanie bąbelkowania
  26. 26. I funkcje domyślne też
  27. 27. getContext() Obiekt kontekstu naszym pośrednikiem (wielozadaniowym)
  28. 28. Wstrzykiwanie zależności umożliwia rozpropagowywanie obiektu kontekstu
  29. 29. Każdy plug-in musi posiadać dostęp do własnego obiektu kontekstu Każda klasa. Każda usługa.
  30. 30. Usługi?
  31. 31. Usługa to zestaw funkcji posiadających zunifikowane API, implementujące rozwiązanie pewnego problemu (uff...)
  32. 32. Dlaczego nie wszędzie zdarzenia? Na zdarzenie nie musi reagować żadna funkcja
  33. 33. Plugin != Usługa Plugin > Usługa
  34. 34. LogsService – logowanie w aplikacji. Pluginy? LogsTxtPlugin LogsNullPlugin Zunifikowany interfejs? log( $msg ) warn( $msg ) err( $msg )
  35. 35. Kontekst musi udostępniać usługi (zachowywać się jak kontener zależności)
  36. 36. Narzędzia Programowanie zdarzeniowe. Wzorzec filtra. Wzorzec dekoratora. Wzorzec strategii. Obiekty proxy. Kontener wstrzykiwania zależności.
  37. 37. Stabilność Dziel i rządź GTD programowania Zalety Zrównoleglenie prac Mniej zależności Bezpieczeństwo
  38. 38. Dziękuję za uwagę

×