Documente Academic
Documente Profesional
Documente Cultură
T3. SOA & WS Service Oriented Architectures & Web Services (C7) Dezvoltarea Aplicații Multistrat
T3. SOA & WS Service Oriented Architectures & Web Services (C7) Dezvoltarea Aplicații Multistrat
Pagina 2
Curs_7
Pagina 3
Agenda Capitolul 3
Pagina 4
Pagina 5
Elemente de calcul orientate spre servicii
Pagina 6
1) Contracte de servicii
2) Cuplaj liber de service
3) Abstracția serviciului
4) Reutilizarea serviciului
5) Autonomie de serviciu
6) Apatridia serviciului
7) Descoperirea serviciilor
8) Compozibilitatea serviciului
Pagina 7
Pagina 8
Contracte de servicii
Standardizare și proiectare
* Referință: Erl, Thomas, SOA: principiile proiectării serviciilor , PRENTICE HALL, 2008
8
Pagina 9
Pagina 10
Abstracție de serviciu
Ascunderea informațiilor și tipuri de meta-abstractizare
10
Pagina 11
Reutilizarea serviciului
Proiectare comercială și agnostică
11
Pagina 12
Autonomia serviciului
Prelucrarea limitelor și controlul
12
Pagina 13
Serviciu de apatridie
Design apatrid
13
Pagina 14
Descoperirea serviciilor
Interpretabilitate și comunicare
Pagina 15
15
Pagina 16
16
Pagina 17
Tipuri de servicii
17
Pagina 18
Studiu de caz:
Colaborare pentru servicii de afaceri
● Proiectare colaborare:
○ PlanningProjectBusinessWorkflowService [Compus
Serviciu]
○ ConsolidatingProjectCurrentReleaseViewDomainService
[Serviciul de activități]
○ AuditingPlanificareProiectBusinessWorkflowService
[Serviciul de activități]
○ ProjectEntityRepository [Serviciul entității]
○ ProjectEntityFactory [Serviciul utilitar]
● Strategii practice de implementare:
○ Caz_1: colaborare fațadă locală
○ Caz_2: colaborare la distanță fațadă HTTP (ca HTTP
Servicii de primăvară)
18
Pagina 19
● Stiluri de implementare :
○ Comunicare la distanță HTTP | RMI (stilul serviciilor de primăvară)
○ Mesaje HTTP (stil REST *).
○ Mesaje Simple Object Access Protocol (SOAP).
○ Mesaje Java Messaging Services (JMS).
○ Mesaje SMTP (Simple Mail Transfer Protocol).
19
Pagina 20
20
Pagina 21
21
Pagina 22
Pagina 23
● Resurse și URI-uri :
○ resursele sunt piesa centrală a arhitecturilor REST: ar putea fi
structuri bazate pe date (sau servicii pure de procesare);
○ resursele trebuie să aibă identificatori unici pe bază de web ca URI-uri.
● Reprezentări :
○ o resursă ar avea o singură stare, dar ar putea fi accesibilă
cu mai multe formate : XML, JSON, HTML, CSV, XLS, TXT.
● Adresabilitate :
○ fiecare informație sau funcționalitate valoroasă a unui serviciu web
aplicația ar trebui să fie accesibilă ca resursă cu un URI;
○ URI-urile și reprezentările accesibile publicului ar trebui să acopere toate
acțiuni posibile pe resursele web ca API CRUD.
23
Pagina 24
● Conectivitate :
○ dependențe de resurse (funcționale sau compoziție de date
dependențe) ar trebui descrise ca un grafic de legătură cu
HTTP-URI-uri;
○ reprezentările accesibile publicului ar trebui să acopere toate linkurile către
alte resurse conexe: API-ul de localizare a graficului.
● Interfață uniformă :
○ Resursele și serviciile trebuie gestionate în același mod de către
o interfață uniformă : folosind elementele protocolului HTTP.
● Apatridia :
○ Serverul nu ar trebui să gestioneze sesiunile din partea clientului: resursă
statele se află pe server și vor fi partajate de clienți, așa că
că starea cererii rămâne pe responsabilitatea clientului .
24
Pagina 25
Pagina 26
26
Pagina 27
27
Pagina 28
28
Pagina 29
● Strategii structurale :
○ Generați DTO-uri din structuri de entități - utilizați tipuri de entități
pentru a defini tipurile DTO.
○ Generați DTO utilizând structuri dedicate EntityView -
Folosiți EntityView Types ca sistem de tastare distinct pentru
definiți structurile DTO.
● Strategii de fabrică
○ Fabrica de metode - Implementarea metodelor de producere a DTO
static în cadrul claselor de entități;
○ Fabrica de clase (alături de fabricile de entități) pentru a găzdui DTO
producând metode.
● Constructori de documente
○ Convertiți instanțele DTO în formate XML / JSON folosind
Biblioteci JAXB / JSON.
29
Pagina 30
Resurse REST
ȘTERGE
OBȚINE JSON / XML
Entități de date
ȘTERGE
OBȚINE JSON / XML RestURL
Entități de date Resurse REST
A PUNE POST
Resurse REST
A PUNE
POST
ȘTERGE
OBȚINE JSON / XML
Entități de date
Solicitări URL
A PUNE
POST
RESURSE Resurse ca
Documente JSON / XML 30
Pagina 31
ȘTERGE
RestURL
OBȚINE JSON / XML Entitate JPA
Entități de date
Resurse REST
A PUNE
POST
Entitate JPA
ȘTERGE
OBȚINE JSON / XML
Entități de date
31
Pagina 32
Diverse:
● Arhitecturi
○ REST Oriented Computing
○ Arhitectură orientată REST
● Limbi de descriere API RESTful
○ Specificație OpenAPI (fost Swagger) - specificație
pentru definirea interfețelor
○ OData - Protocol pentru definirea API-urilor REST
○ RAML - Limbaj de modelare API RESTful
○ RSDL (RESTful Service Description Language)
● Limbi de interogare RESTful
○ RSQL (legătură1)
○ Spring Query DSL (legătură2, link3)
○ GraphQL
○ RESTSQL
32
Pagina 33
33
Pagina 34
REFERINȚELE CURSULUI
● Modele de proiectare
○ [Evans, 2004] Eric Evans, Proiectare bazată pe domeniu: abordarea complexității în inima
software , Addison-Wesley, 2004 [PoDDD]
○ [Fowler și colab., 2002] Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt,
Robert Mee, Randy Stafford, Patterns of Enterprise Application Architecture , Addison
Wesley, 2002 [PoEAA ]
○ [Yener & Theedom, 2015] Murat Yener, Alex Theedom, Professional Java® EE Design
Patterns, John Wiley & Sons, Inc., 2015
○ [Alur și colab., 2003] Deepak Alur, John Crupi, Dan Malks, Core J2EE Patterns. Cel mai bun
Practici și strategii de proiectare , ediția a II-a, Prentice Hall, 2003 [ PoJEE ]
● Primăvară și JEE
○ [Cosmina et.al., 2017] Iuliana Cosmina, Rob Harrop, Chris Schaefer, Clarence Ho, Pro
Primăvara 5: Un ghid aprofundat al cadrului de primăvară și instrumentele sale, Apress, 2017
○ [Goncalves, 2013] Antonio Goncalves, Beginning Java EE 7, Apress Media, LLC,
2013
34