php - soa - .au programme architecture et design patterns php et soa soa en quelques mots questions

Download PHP - SOA - .Au programme Architecture et design patterns PHP et SOA SOA en quelques mots Questions

Post on 17-Dec-2018

214 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Alexandre HeimburgerR&D

PHP - SOAphp comme socle technologique dune architecture

oriente service

1

Pour commencer, un sondage...

Avez vous dj utilis ou implment une SOA ?

Avez vous dj utilis ou implment des webservices (API google, API flickr, soap) ?

...Monsieur Jourdain faisait bien de la prose sans le savoir !

2

Au programme

Architecture et design patterns

PHP et SOA

SOA en quelques mots

Questions Rponses

SCA / SDO

3

SOA en quelques mots

"Une vision d'un systme destine traiter toute application comme un fournisseur de services", Symposium DNG 2003

4

1970

2010

Langages objets (C++, Java)Architecture distribues ORB (Corba / DCOM)

Systmes semi-ouverts dans lentreprise

Serveurs dapplication .NET / J2EE / PHPWeb services

Plus de limite louverture

Langages procduraux (C, fortran)Architecture monolityque

Systmes ferms

module objets composants services

Vers plus douverture...

5

introprablit

compositionprennit

ouverturescalabilit

Les enjeux actuels dans le logiciel

6

Fort couplage

Trafic lev n*m

Donnes htrognes

Blocage des firewall

Sans SOA ...

7

Dcouplage des acteurs

Trafic organis

Donnes homognes

Support de toutes les topologies rseau

Avec SOA ...

8

Sans SOA ...

TaxReporters reporters = TaxeReporter.List();double [] taxes = new double(reporters.Count);i = 0;foreach (reporter in reporters) { TaxComputeMethod m = reporters(i).GetComputeMethod(); taxes[i] = m.ComputeTaxe(); i++;}

9

Avec SOA ...

TaxComputeService service = ServiceDirectory.discover(txctpsrv);double [] taxes = service.ComputeTaxes();

10

SOA vs POO

SOA rduit le nombre de liens entre les clients (couche prsentation) et la premire brique du serveur dapplication

SOA rend les objets sur chaque couche plus indpendants

SOA dcouple temporairement les couches grce un mode dappel synchrone ou asynchrone

SOA sans la POO nest rien

SOA fait intervenir des notions de processus mtier, dorchestration et de transaction qui apporte une complexit non ncessaire

11

SOA + web == web 2.0 ?

Concevoir des logiciels comme des services (amazon, google, yahoo)

Revoir les services comme des plates-formes (google, facebook)

Fournir des briques pour permettre la composition de nouveaux services (mashups)

des objectifs communs...

mais polmique il y a.

SOA propose des composants non applicable dans un environnement ouverts

Lamalgame peut faire peur aux entreprises

12

SOA est plus une philosophie quune technologie

SOA permet de rsoudre les problmes lis aux dveloppements dapplications web

SOA facilite le dveloppement et la maintenance

En bref

60% des entreprises opreront leurs applications mtiers par le biais d'une architecture SOA d'ici 2008, Gartner

13

Architecture et design patterns

"Tte la premire dans SOA...

14

Architecture

15

Webservice SOAP / WSDL

16

Service REST (yahoo, amazon, google)

17

Design patterns mis en oeuvre

Factory - dlgation de la cration dobjet ou service

Faade - composer des objets ou des services derrire une unique interface

Asynchronous query - viter les timeouts sur des requtes longues

Service proxy - interface gnrique dappels aux services

Router

- un point daccs unique pour le client

...

18

SOA sadapte aux applications, et non linverse

SOA est une collection de design pattern

SOA permet de dcoupler les couches logicielles et les composants lintrieur mme de chaque couche

Les webservices sont une implmentation de SOA parmi tant dautres

En bref

19

PHP et SOA

"Un challenger dans la cour des grands

20

Pourquoi PHP dans une SOA

PHP est largement utilis dans les applications 2.0

PHP 5 est un langage objet complet permettant dimplmenter les design pattern SOA

Sa facilit de mise en oeuvre lie son typage faible permet un time to market imbattable

Les environnements de dveloppement et les serveurs de production ne sont pas aussi complet que ceux tournant sous .NET / J2EE

Labsence de machine virtuelle ne facilite pas le messaging

21

Moins dapprentissage Moins de maintenance

22

Les solutions PHP

php 5 soap extension==> essentiellement SOAP

PEAR::SOAP==> essentiellement SOAP

NuSOAP==> essentiellement SOAP

Zend framework==> trs orient REST

SCA / SDO (PECL extension)==> la plus complte

23

PHP5 SOAP

Extension php native

Support SOAP 1.1, SOAP 1.2, WSDL 1.1

Fournit des fonctions client ET serveur

Les WSDL doivent tre fait la main

24

PHP5 SOAP

25

PEAR::SOAP

Module du PEAR repository

Fournit des fonctions client ET serveur

Les WSDL sont gnrs la vole

Marche avec PHP4

Dpend dautres modules PEAR : Mail, Mail_Mime, NET_*

Ecrit en PHP

26

NuSOAP

Fournit des fonctions client ET serveur

Les WSDL sont gnrs la vole

Marche avec PHP4

Conflit de nom de classe avec PHP5 SOAP

Ecrit en PHP

27

NuSOAP

28

Zend Framework : Zend_Service

Fournit des fonctions client ET serveur

Fournit des implmentation des services REST Google, Amazon, Flickr, Delicious

Pas dimplmentation SOAP

Ecrit en PHP

29

Zend Framework : Zend_Service

30

Jusquici tout va bien ...

mais tous les principes SOA ne sont pas respects...

Faire des SOA simples avec peu de lignes de code

En rduisant les cots de maintenance

Avec la possibilit de gnrer des wsdl

Lintroprabilit des protocoles de transport et des clients nest pas respecte

Ces solutions ne proposent pas encore de Service Proxy ou de faade pour assurer la transparence locale / remote

Les wsdl sont fastidieux crire31

SCA / SDO

"Le killer framework pour php SOA

32

Le package PECL SCA / PDO

33

Que fait SCA / SDO pour vous ?

Crer des services indpendants des technologies de transport et de communication

Sparer le code applicatif du code de transport

Consommer simplement des webservices extrieurs

Exposer simplement des webservices

... sans avoir diter les WSDL ou crer des fichiers de configuration.

34

Interoprabilit et composition

Flexibilit sur qui appelle mes services

Exposer autant de bindings que ncessaire (REST, SOAP, TCP...)

Flexibilit sur mes dpendances

Dclarer les dpendances en tant sr que la logique applicative na pas besoin de savoir comment les rsoudre (abstraction de base de donnes, abstraction dannuaire...)

Eviter de lier les composants entre eux. Prfrer lIoC (inversion of control) ou le pattern dinjection de dpendance

35

Un service SCA

Cest une simple classe PHP

Usage des annotations. Programmation par aspect (AOP cf java 5)

Dployer la classe dans Apache et le service (ses mthodes publiques) est expos via SOAP !!

36

Consommer un service via SCA

Service factory

Remote faade

37

Composer des services via SCA

IoC (cf Spring J2EE)

Composition

38

SDO : service data object

Tous les services nchangent pas que des donnes scalaires

SDO requiert une description pour les structures de donnes

Aujourdhui du XML

Demain, des classes PHP annotes

39

Utiliser SDO en 3 tapes

1

2

3

1. Crer un schma XSD pour lobjet

2. Annoter la classe pour mapper le schma

3. Documenter la mthode pour montrer o sont utiliss les objets

40

SCA : dautres types de transport

On a besoin de pouvoir appeler un service avec diffrents protocoles :

Client java (soap) Client javascript (json-rpc) Mashup : rest-rpc et dautres venir

@binding.json-rpc

@binding.rest-rpc...

41

A venir dans SCA / SDO

Des classes php pour les structures de donnes SDO . Plus facile que le XSD mais moins puissant (java bean ?)

Service de base de donnes simples : CRUD

De nouveaux bindings : Amliorer ATOM et RSS Nouveaut : google GData, Yahoo!

Possibilit dtendre les annotations, comme en JAVA 5

42

Pour conclure

SOA est bien plus quune technologie ou quune marque de grands diteurs

Pensons SOA pour favoriser louverture et lintroprabilit de nos applications, surtout dans le Web 2.0

Grce PHP 5, SOA peut sintgrer moindre cot dans toute application visant exposer des services

SCA / SDO, est une excellente solution pour btir des architectures orientes services compltes et adaptes lentreprise tendue

43

Pour aller plus loin

Introduction SOAhttp://www.dotnetguru.org/articles/dossiers/soadouceur/soaendouceur.htm

Design pattern SOAhttp://www.soaprpc.com/patterns/soa_pattern_catalog.html

Open Service Oriented Architecturehttp://www.osoa.org/display/Main/Home

PHP SOA Communityhttp://www.osoa.org/display/PHP/SOA+PHP+Homepage

44

htt