SlideShare a Scribd company logo
1 of 28
Framework w architekturze SOA,
            czyli nasz pomysł na Enterprise PHP


 Olgierd Mrozik
 Bartosz Sobolewski

Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
PHP – język wolnych programistów


Dlaczego PHP stał
się ulubionym
językiem
programistów
webowych?




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
PHP – język wolnych programistów



Dlaczego jeszcze PHP
stał się ulubionym
językiem programistów
webowych?



pretty hot programmer
Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Kiedy kończy się zabawa…
Czy w PHP można napisać profesjonalną aplikację biznesową?

ang.: „PHP will probably be easier to develop initially. But you can
guarantee that, if you've got anything even resembling a deadline,
your code will become horribly unreadable given enough time. Since
you talk”

                                                           <?php Lorem ipsum dolor sit
pol.:                                                      amet, consectetur adipiscing
                                                           elit. Pellentesque porttitor,
                                                   =       tortor id scelerisque gravida,
wolność programowania + deadline
                                                           lorem nibh mollis mi, ac
                                                           porttitor nunc turpis imperdiet
                                                           leo. ?>



Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Kiedy kończy się zabawa…
Czy w PHP można napisać profesjonalną aplikację biznesową?




                                                                    J2EE, .NET
         PHP

                                                                    good boys
 baaaad boy




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Get it under control - Enterprise PHP
 Czyli jak wprowadzić PHP pod strzechy największych firm.



     Even my Enterprise
     could use a PHP
     that way




    God, I’m happy .NET and that coffee thing stays on Earth


Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Twitto - A web framework in a tweet
 1: require __DIR__.'/c.php';
 2: if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
        throw new Exception('Error');
 3:
 4: $c();




                                                                    Źródło: http://twitto.org

Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Framework SOA – Motywacja
• Przyśpieszenie wytwarzania aplikacji
• Łatwa integracja z innymi systemami
       – Synchronizacja
       – Import, Export
       – WebServices
• Skalowalność
       – Database Sharding
       – Łatwe wdrożenie w chmurze
       – Obsługa CDN

Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Framework SOA – Motywacja cd.
• Obsługa powtarzalnych funkcjonalności „w standardzie”
           Walidacja danych
       –
           Obsługa cache
       –
           Autoryzacja użytkowników (LDAP, OpenID)
       –
           Zarządzanie użytkownikami
       –
           Konfiguracja ustawień aplikacji i indywidualnych użytkownika
       –
           Instalator aplikacji, wykonywanie kopii zapasowych
       –




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Framework SOA - Inspiracje
• SOA
       – Service Oriented Architecture
• CBD
       – Component Based Development
• Multi-tier
       – Architektura wielowarstwowa
• MVC
       – Model-View-Controler


Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
1. Usługi




• Odpowiednik funkcji i metod
• Świadczy funkcjonalność innym usługom
• Bezpośredni dostęp do wszystkich usług

Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
2. Komponenty




• Odpowiednik klas i przestrzeni nazw
• Zbiór usług realizujących powiązaną funkcjonalność
• Mogą być dowolnie przemieszczane w strukturze FW i
  aplikacji
Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
3. Warstwy




• Danych, Biznesowa, Prezentacji
• Rozlokowane są na nich komponenty
• Ściśle przestrzegany kierunek wywoływania usług
       – od warstwy prezentacji do danych
Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
4. Framework




• Najbardziej ogólne komponenty
• Nie związany z żadną konkretną aplikacją


Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
5. Aplikacja




• Realizuje wyspecyfikowaną funkcjonalność
• Definiuje interfejs i logikę
• Jedna instancja frameworka może obsługiwać wiele
  aplikacji na serwerze
Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
6. Moduł




• Realizuje najczęściej powtarzane funkcjonalności
• Dołączany do aplikacji


Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Architektura frameworka cd.
7. Grupa
   aplikacji




• Kilka aplikacji działających jak jedna
• Zbudowana z aplikacji i modułów
• Aplikacje można dodawać i usuwać „w locie”

Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Innowacyjne rozwiązania
• Wrappery danych
       – przykład już za chwilę …
• Memcached z obsługą tagów
       – brak w ZendFramework i Ruby on Rails
• Generowanie interfejsu ExtJs z PHP
       – bez przepisania ExtJs na obiekty PHP jak w ExtPHP lub PHP-Ext
• Dokumentacja dostępna „od ręki”
       – bez potrzeby generowania plików


Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych
• Pozwalają na pobieranie danych z aplikacji w wielu
  formatach
• Nie ma potrzeby definiowania dodatkowych usług
• Przyjmują parametry w kilku formatach i na kilka
  sposobów




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd.
 1: final class Component_PT_Example {
        public function srv_pt_getData(){
 2:
           return array(
 3:
               array(
 4:
                  'name'     => 'Taboret',
 5:
                  'price'    => 64.34,
 6:
                  'quantity' => 134,
 7:
               ),
 8:
               array(
 9:
                  'name'     => 'Stół',
10:
                  'price'    => 456,
11:
                  'quantity' => 14,
12:
               ),
13:
           );
14:
        }
15:
16: }



Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd.
http://localhost/index.php?service=pt/getData
http://

array(
    array(
       'name'                   => 'Taboret',
       'price'                  => 64.34,
       'quantity'               => 134,
    ),
    array(
       'name'                   => 'Stół',
       'price'                  => 456,
       'quantity'               => 14,
    ),
);




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd. – JSON
http://localhost/index.php?service=json/pt/getData
http://

[
    {quot;namequot;: quot;Taboretquot;, quot;pricequot;: 64.34, quot;quantityquot;: 134},
    {quot;namequot;: quot;Stu00f3u0142quot;, quot;pricequot;: 456, quot;quantityquot;: 14}
]




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd. – CSV
http://localhost/index.php?service=csv/pt/getData
http://

name, price, quantity
quot;Taboretquot;, 64.34, 134
quot;Stółquot;, 456, 14




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd. – XML
http://localhost/index.php?service=xml/pt/getData
http://

<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<records>
  <record>
    <name>Taboret</name>
    <price>64.34</price>
    <quantity>134</quantity>
  </record>
  <record>
    <name>Stół</name>
    <price>456</price>
    <quantity>14</quantity>
  </record>
</records>




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd. – PHP
http://localhost/index.php?service=php/pt/getData
http://

a:2:{i:0;a:3:{s:4:quot;namequot;;s:7:quot;Taboretquot;;s:5:quot;pricequot;;d:64.34;
s:8:quot;quantityquot;;i:134;}i:1;a:3:{s:4:quot;namequot;;s:6:quot;Stółquot;;s:5:quot;pricequot;;
i:456;s:8:quot;quantityquot;;i:14;}}




1: $array = unserialize($dane);




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Wrappery danych cd. – parametry JSON
 1: final class Component_PT_Example {
        public function srv_pt_keysValues(array $array){
 2:
           return array(
 3:
               „keysquot;   => array_keys($array),
 4:
               „valuesquot; => array_values($array),
 5:
           );
 6:
        }
 7:
 8: }

http://localhost/index.php
    ?service=json/pt/keysValues
    &params={quot;abcquot;:123,quot;fooquot;:456}

{quot;keysquot;:[quot;abcquot;,quot;fooquot;],quot;valuesquot;:[123,456]}




Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
Odkryj nowe możliwości

More Related Content

Similar to Framework w architekturze SOA

Oferta pracy Asp. Net Developer Kraków
Oferta pracy Asp. Net Developer KrakówOferta pracy Asp. Net Developer Kraków
Oferta pracy Asp. Net Developer KrakówJoanna Ochocińska
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyWydawnictwo Helion
 
Programista Webowy .Net Katowice
Programista Webowy .Net KatowiceProgramista Webowy .Net Katowice
Programista Webowy .Net KatowiceJoanna Ochocińska
 
Oferta pracy Asp .Net Developer Kraków
Oferta pracy Asp .Net Developer KrakówOferta pracy Asp .Net Developer Kraków
Oferta pracy Asp .Net Developer KrakówJoanna Ochocińska
 
Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyWydawnictwo Helion
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej PlatformyAMP
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej PlatformyAMP
 
Prezentacja AMP
Prezentacja AMPPrezentacja AMP
Prezentacja AMPAMP
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej PlatformyAMP
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej PlatformyAMP
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiLogicaltrust pl
 

Similar to Framework w architekturze SOA (20)

Java. Sztuka programowania
Java. Sztuka programowaniaJava. Sztuka programowania
Java. Sztuka programowania
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
C# i .NET
C# i .NETC# i .NET
C# i .NET
 
Oferta pracy Asp. Net Developer Kraków
Oferta pracy Asp. Net Developer KrakówOferta pracy Asp. Net Developer Kraków
Oferta pracy Asp. Net Developer Kraków
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalisty
 
Visual C# .NET. Encyklopedia
Visual C# .NET. EncyklopediaVisual C# .NET. Encyklopedia
Visual C# .NET. Encyklopedia
 
Programista Webowy .Net Katowice
Programista Webowy .Net KatowiceProgramista Webowy .Net Katowice
Programista Webowy .Net Katowice
 
ASP. Net Developer Katowice
ASP. Net Developer KatowiceASP. Net Developer Katowice
ASP. Net Developer Katowice
 
Netcamp #10 - Technologia, biznes czy socjologia – w ktorym kierunku dryfuje ...
Netcamp #10 - Technologia, biznes czy socjologia – w ktorym kierunku dryfuje ...Netcamp #10 - Technologia, biznes czy socjologia – w ktorym kierunku dryfuje ...
Netcamp #10 - Technologia, biznes czy socjologia – w ktorym kierunku dryfuje ...
 
Oferta pracy Asp .Net Developer Kraków
Oferta pracy Asp .Net Developer KrakówOferta pracy Asp .Net Developer Kraków
Oferta pracy Asp .Net Developer Kraków
 
ASP. Net Developer Katowice
ASP. Net Developer KatowiceASP. Net Developer Katowice
ASP. Net Developer Katowice
 
Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programisty
 
8 jaromir dzialo
8 jaromir dzialo8 jaromir dzialo
8 jaromir dzialo
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej Platformy
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej Platformy
 
Prezentacja AMP
Prezentacja AMPPrezentacja AMP
Prezentacja AMP
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej Platformy
 
Prezentacja Nowej Platformy
Prezentacja Nowej PlatformyPrezentacja Nowej Platformy
Prezentacja Nowej Platformy
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
 

More from 3camp

Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawekOchrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek3camp
 
HTTPS bez wymówek
HTTPS bez wymówekHTTPS bez wymówek
HTTPS bez wymówek3camp
 
Jak udokumentować bazę danych
Jak udokumentować bazę danychJak udokumentować bazę danych
Jak udokumentować bazę danych3camp
 
ORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowaniaORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowania3camp
 
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.3camp
 
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...3camp
 
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie AndroidWykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie Android3camp
 
Learn you some rx for the greater good
Learn you some rx for the greater goodLearn you some rx for the greater good
Learn you some rx for the greater good3camp
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Reakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyceReakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyce3camp
 
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”3camp
 
AngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektuAngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektu3camp
 
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...3camp
 
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?3camp
 
Artur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupachArtur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupach3camp
 
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...3camp
 
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnieMarcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie3camp
 
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...3camp
 
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...3camp
 
Marcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk ModelMarcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk Model3camp
 

More from 3camp (20)

Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawekOchrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
 
HTTPS bez wymówek
HTTPS bez wymówekHTTPS bez wymówek
HTTPS bez wymówek
 
Jak udokumentować bazę danych
Jak udokumentować bazę danychJak udokumentować bazę danych
Jak udokumentować bazę danych
 
ORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowaniaORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowania
 
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
 
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
 
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie AndroidWykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie Android
 
Learn you some rx for the greater good
Learn you some rx for the greater goodLearn you some rx for the greater good
Learn you some rx for the greater good
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Reakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyceReakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyce
 
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
 
AngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektuAngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektu
 
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
 
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
 
Artur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupachArtur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupach
 
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
 
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnieMarcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
 
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
 
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
 
Marcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk ModelMarcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk Model
 

Framework w architekturze SOA

  • 1. Framework w architekturze SOA, czyli nasz pomysł na Enterprise PHP Olgierd Mrozik Bartosz Sobolewski Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 2. PHP – język wolnych programistów Dlaczego PHP stał się ulubionym językiem programistów webowych? Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 3. PHP – język wolnych programistów Dlaczego jeszcze PHP stał się ulubionym językiem programistów webowych? pretty hot programmer Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 4. Kiedy kończy się zabawa… Czy w PHP można napisać profesjonalną aplikację biznesową? ang.: „PHP will probably be easier to develop initially. But you can guarantee that, if you've got anything even resembling a deadline, your code will become horribly unreadable given enough time. Since you talk” <?php Lorem ipsum dolor sit pol.: amet, consectetur adipiscing elit. Pellentesque porttitor, = tortor id scelerisque gravida, wolność programowania + deadline lorem nibh mollis mi, ac porttitor nunc turpis imperdiet leo. ?> Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 5. Kiedy kończy się zabawa… Czy w PHP można napisać profesjonalną aplikację biznesową? J2EE, .NET PHP good boys baaaad boy Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 6. Get it under control - Enterprise PHP Czyli jak wprowadzić PHP pod strzechy największych firm. Even my Enterprise could use a PHP that way God, I’m happy .NET and that coffee thing stays on Earth Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 7. Twitto - A web framework in a tweet 1: require __DIR__.'/c.php'; 2: if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); 3: 4: $c(); Źródło: http://twitto.org Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 8. Framework SOA – Motywacja • Przyśpieszenie wytwarzania aplikacji • Łatwa integracja z innymi systemami – Synchronizacja – Import, Export – WebServices • Skalowalność – Database Sharding – Łatwe wdrożenie w chmurze – Obsługa CDN Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 9. Framework SOA – Motywacja cd. • Obsługa powtarzalnych funkcjonalności „w standardzie” Walidacja danych – Obsługa cache – Autoryzacja użytkowników (LDAP, OpenID) – Zarządzanie użytkownikami – Konfiguracja ustawień aplikacji i indywidualnych użytkownika – Instalator aplikacji, wykonywanie kopii zapasowych – Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 10. Framework SOA - Inspiracje • SOA – Service Oriented Architecture • CBD – Component Based Development • Multi-tier – Architektura wielowarstwowa • MVC – Model-View-Controler Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 11. Architektura frameworka Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 12. Architektura frameworka cd. 1. Usługi • Odpowiednik funkcji i metod • Świadczy funkcjonalność innym usługom • Bezpośredni dostęp do wszystkich usług Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 13. Architektura frameworka cd. 2. Komponenty • Odpowiednik klas i przestrzeni nazw • Zbiór usług realizujących powiązaną funkcjonalność • Mogą być dowolnie przemieszczane w strukturze FW i aplikacji Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 14. Architektura frameworka cd. 3. Warstwy • Danych, Biznesowa, Prezentacji • Rozlokowane są na nich komponenty • Ściśle przestrzegany kierunek wywoływania usług – od warstwy prezentacji do danych Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 15. Architektura frameworka cd. 4. Framework • Najbardziej ogólne komponenty • Nie związany z żadną konkretną aplikacją Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 16. Architektura frameworka cd. 5. Aplikacja • Realizuje wyspecyfikowaną funkcjonalność • Definiuje interfejs i logikę • Jedna instancja frameworka może obsługiwać wiele aplikacji na serwerze Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 17. Architektura frameworka cd. 6. Moduł • Realizuje najczęściej powtarzane funkcjonalności • Dołączany do aplikacji Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 18. Architektura frameworka cd. 7. Grupa aplikacji • Kilka aplikacji działających jak jedna • Zbudowana z aplikacji i modułów • Aplikacje można dodawać i usuwać „w locie” Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 19. Innowacyjne rozwiązania • Wrappery danych – przykład już za chwilę … • Memcached z obsługą tagów – brak w ZendFramework i Ruby on Rails • Generowanie interfejsu ExtJs z PHP – bez przepisania ExtJs na obiekty PHP jak w ExtPHP lub PHP-Ext • Dokumentacja dostępna „od ręki” – bez potrzeby generowania plików Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 20. Wrappery danych • Pozwalają na pobieranie danych z aplikacji w wielu formatach • Nie ma potrzeby definiowania dodatkowych usług • Przyjmują parametry w kilku formatach i na kilka sposobów Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 21. Wrappery danych cd. 1: final class Component_PT_Example { public function srv_pt_getData(){ 2: return array( 3: array( 4: 'name' => 'Taboret', 5: 'price' => 64.34, 6: 'quantity' => 134, 7: ), 8: array( 9: 'name' => 'Stół', 10: 'price' => 456, 11: 'quantity' => 14, 12: ), 13: ); 14: } 15: 16: } Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 22. Wrappery danych cd. http://localhost/index.php?service=pt/getData http:// array( array( 'name' => 'Taboret', 'price' => 64.34, 'quantity' => 134, ), array( 'name' => 'Stół', 'price' => 456, 'quantity' => 14, ), ); Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 23. Wrappery danych cd. – JSON http://localhost/index.php?service=json/pt/getData http:// [ {quot;namequot;: quot;Taboretquot;, quot;pricequot;: 64.34, quot;quantityquot;: 134}, {quot;namequot;: quot;Stu00f3u0142quot;, quot;pricequot;: 456, quot;quantityquot;: 14} ] Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 24. Wrappery danych cd. – CSV http://localhost/index.php?service=csv/pt/getData http:// name, price, quantity quot;Taboretquot;, 64.34, 134 quot;Stółquot;, 456, 14 Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 25. Wrappery danych cd. – XML http://localhost/index.php?service=xml/pt/getData http:// <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <records> <record> <name>Taboret</name> <price>64.34</price> <quantity>134</quantity> </record> <record> <name>Stół</name> <price>456</price> <quantity>14</quantity> </record> </records> Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 26. Wrappery danych cd. – PHP http://localhost/index.php?service=php/pt/getData http:// a:2:{i:0;a:3:{s:4:quot;namequot;;s:7:quot;Taboretquot;;s:5:quot;pricequot;;d:64.34; s:8:quot;quantityquot;;i:134;}i:1;a:3:{s:4:quot;namequot;;s:6:quot;Stółquot;;s:5:quot;pricequot;; i:456;s:8:quot;quantityquot;;i:14;}} 1: $array = unserialize($dane); Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk
  • 27. Wrappery danych cd. – parametry JSON 1: final class Component_PT_Example { public function srv_pt_keysValues(array $array){ 2: return array( 3: „keysquot; => array_keys($array), 4: „valuesquot; => array_values($array), 5: ); 6: } 7: 8: } http://localhost/index.php ?service=json/pt/keysValues &params={quot;abcquot;:123,quot;fooquot;:456} {quot;keysquot;:[quot;abcquot;,quot;fooquot;],quot;valuesquot;:[123,456]} Copyrights: SmartMedia sp. z o.o., Chodkiewicza 22, 80-506 Gdańsk

Editor's Notes

  1. <number>
  2. 1. Dlaczego PHP stał się ulubionym językiem programistów webowych? 2. Czemu chętnie używaliśmy PHP do realizacji dynamicznych stron www, sklepów internetowych, prostych aplikacji? 3. Znamy swietnie PHP, ale czy da się w nim napisac aplikacje dla biznesu?<number>
  3. <number>
  4. 1. Dlaczego PHP stał się ulubionym językiem programistów webowych? 2. Czemu chętnie używaliśmy PHP do realizacji dynamicznych stron www, sklepów internetowych, prostych aplikacji? 3. Znamy swietnie PHP, ale czy da się w nim napisac aplikacje dla biznesu?<number>
  5. <number>
  6. Enterprise PHP, jak?metodologie prowadzenia projektuTestyDokumentacjaStandardy kodowaniaOdpowiedni framework6
  7. Fala microbloging, tweeterTweet to 140 znaków wiadomościKonkurs na aplikację webową w 140 znakach<number>
  8. <number>
  9. <number>
  10. <number>
  11. <number>
  12. <number>
  13. <number>
  14. <number>
  15. <number>
  16. <number>
  17. <number>
  18. <number>
  19. <number>
  20. <number>
  21. <number>
  22. <number>
  23. <number>
  24. <number>
  25. <number>
  26. <number>
  27. <number>
  28. 28