Sunteți pe pagina 1din 1

Pagina 1

T2. Arhitectura întreprinderii și


Componente [ C6 ]

2.4 Servicii de aplicații la distanță pentru afaceri

Dezvoltare software multi-nivel


Dezvoltarea Aplicațiilor Multistrat

Pagina 2

Capitolul 2. Întreprindere
Componente de arhitectură și
Servicii

Curs_6

Pagina 3

Agendă

● 2.4 Servicii de aplicații la distanță pentru afaceri


○ Modele de proiectare
■ (1) Servicii de aplicații și
■ (2) DTO-uri
○ Implementări
■ (3) Spring Remote Services: Servicii RMI
■ (4) Spring Remote Services: Servicii HTTP

Pagina 4

Straturi și servicii DDD

Pagina 5

Servicii de afaceri Arome


● Servicii de domeniu
● Servicii de aplicații
● Servicii de orchestrare
● Servicii compozite

Pagina 6

PoJEE: Fațada sesiunii [Recenzie]

● Principiu / domeniu:
○ controlul accesului clientului (restricționează dependențele) la
obiecte de afaceri din domeniul business.
● Elemente de model:
○ Fațada sesiunii;
○ Componenta de afaceri:
■ obiectul de afaceri;
■ obiect de acces la date ;
■ serviciul de aplicații .

Pagina 7

PoJEE: Fațada sesiunii


Diagrama structurală a clasei

Pagina 8

PoJEE: Serviciu de aplicații

● Principii / Domeniu de aplicare:


○ coordonarea centralizată a logicii de afaceri: componentă / nivel
integrare, servicii de persistenta, tranzactie
management etc .;
○ complementar fațadei de afaceri: BF se decuplează
componente de prezentare din componente de afaceri.

● Elemente de model:
○ Client (client de prezentare);
○ Servicii de aplicații;
○ Obiecte comerciale, servicii, obiecte de acces la date etc.

Pagina 9

PoJEE: Serviciu de aplicații


Diagrama structurală a clasei

Pagina 10

PoJEE: Serviciu de aplicații


Diagrama comportamentală a secvenței

10

Pagina 11

Servicii de aplicații de fațadă


Strategii de implementare

● Serviciu de aplicații fațadă ca


○ Servicii locale de afaceri pentru fațade
○ Servicii de afaceri la fațadă la distanță
■ Servicii comerciale distribuite
● Strategii de implementare a serviciilor de aplicații la distanță
○ Modelul componentelor distribuite JEE:
■ Enterprise Java Beans: EJB3
○ Servicii la distanță de primăvară
■ Servicii RMI de primăvară
■ Servicii HTTP de primăvară

11

Pagina 12

Obiect de transfer / transport de date DTO

● Flux de lucru Transfer de date / Transport


○ Curățarea datelor
○ Cartografiere / formatare date
○ Serializarea datelor
○ Schimb de date
● Tipuri de format Spring / JEE DTO
○ DTO binar Java
○ Document DTO
■ XML DTO
■ JSON DTO
■ XLS DTO

12

Pagina 13

PoJEE: Obiect de transport de date

● Principiu / domeniu:
○ transferul de date între straturile arhitecturale;
○ delimitarea contextului stratului: eliminați datele interne
dependențe între straturi;
○ optimizarea transferului de date în cadrul distribuit
medii;
● Elemente de model:
○ Componente interne x-Tier;
○ Obiecte de transport date.

13

Pagina 14

PoJEE: Obiect de transfer de date


Diagrama structurală a clasei

14

Pagina 15

PoJEE: Obiect de transfer de date


Diagrama comportamentală a secvenței

15

Pagina 16

DTO bazat pe modelul de domeniu


Strategii de implementare

● 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-uri din structuri suplimentare EntityView -
utilizați EntityView Types ca un sistem de tastare distinct pentru a defini
Structuri DTO
● Strategii de fabrică
○ Fabrica de metode - implementată în cadrul claselor de entități;
○ Fabrica de clase.

16

Pagina 17

SERVICII DE APLICARE
Componente Enterprise
● Servicii de aplicații cu
○ Componente Enterprise Platform Spring
■ Spring Remote Services
○ Componente JEE Platform Enterprise
■ Componente EJB: Enterprise JavaBeans:
Sesiuni Fasole

17

Pagina 18

Servicii la distanță de primăvară


● Tipuri de servicii de primăvară:
○ Servicii bazate pe RMI
○ Servicii bazate pe HTTP
○ Servicii web: HTTP REST Servicii complete
● Componente arhitecturale de service de primăvară:
○ Interfață fațadă
○ Componenta de implementare a serviciului
○ Exportator de servicii
■ de ex. RmiServiceExporter
■ de ex. HttpInvokerServiceExporter
○ Serviciu Invocator
■ de ex. RmiProxyFactoryBean
■ de exemplu, HttpInvokerProxyFactoryBean
18

Pagina 19

Servicii la distanță de primăvară


Componente de implementare a serviciului
● Componente arhitecturale pentru service de primăvară :
○ Interfață fațadă
■ Interfață Java de serviciu simplu - nu este specială
dependențe sau adnotări;
○ Componenta de implementare a serviciului
■ Clasa de service implementează interfața fațadei;
■ Marcat ca @Service (" ServiceName ");
■ Marcat ca @Transactional (opțional).

19

Pagina 20

Servicii la distanță de primăvară


[Partea server-exportator]

20

Pagina 21

Servicii la distanță de primăvară


[Partea client-proxy]

21

Pagina 22

Servicii la distanță RMI de primăvară


Exportator de servicii
● org.springframework.remoting.rmi. RmiServiceExporter
○ setServiceName () : pentru a completa adresa URL a serviciului la distanță;
○ setServiceInterface () : cu tip de interfață de fațadă;
○ setService () : cu instanță de implementare a serviciului.

URL: rmi: // localhost: 1099 / serviceName

22

Pagina 23

Servicii la distanță RMI de primăvară


Client Invocator
● org.springframework.remoting.rmi. RmiProxyFactoryBean
○ setServiceInterface () : cu tip de interfață de fațadă;
○ setServiceUrl () : cu URL generat de serviciu din primăvară
Implementarea serviciului la distanță care găzduiește containerul.

URL: rmi: // localhost: 1099 / serviceName

● Obțineți / Injectați instanța de serviciu și invocați serviciul de servicii


metode ca metode de afaceri locale.

23

Pagina 24

Servicii la distanță HTTP de primăvară


Serviciu Exportator HTTP
● org.springframework.remoting.httpinvoker. HttpInvokerService
Exportator :
○ setServiceInterface () : cu tip de interfață de fațadă;
○ setService () : cu instanță de implementare a serviciului.

URL: http: // localhost: 8080 / spring / invoker / httpInvoker / service


-> Calea de bază a aplicației Spring MVC: http: // localhost: 8080 / spring
-> HttpInvokerServiceExporter @Bean cale: / httpInvoker / service

24

Pagina 25

Servicii la distanță HTTP de primăvară


Configurarea aplicației Spring MVC

● Clasa WebInitializer se extinde


AbstractAnnotationConfigDispatcherServletInitializer
○ getRootConfigClasses (): AppJPAConfig
○ getServletConfigClasses (): HttpInvokerConfig
○ getServletMappings (): "/ invoker / *"
● App @Configuration ClassJPAConfig
○ @ComponentScan
○ @EnableJpaRepositories
● Class @Configuration HttpInvokerConfig
○ @Bean pentru HttpInvokerServiceExporter

25

Pagina 26

Servicii la distanță HTTP de primăvară


Client Invoker HTTP
● org.springframework.remoting.httpinvoker. HttpInvokerProxy
FactoryBean
○ setServiceInterface () : cu tip de interfață de fațadă;
○ setServiceUrl () : cu URL generat de serviciu din primăvară
Implementarea serviciului la distanță care găzduiește containerul.

URL: http: // localhost: 8080 / spring / invoker / httpInvoker / service

● Obțineți / Injectați instanța de serviciu și invocați serviciul de servicii


metode ca metode de afaceri locale.

26

Pagina 27

Practică: PRIMĂVARĂ
Flux de lucru pentru implementarea serviciului de date de primăvară

● Fluxul de lucru al serviciului de date și modelele structurale (cu niveluri):


○ Etapa 1: definiți agregatele pentru entitățile de bază
■ Model de agregare [vezi modelul JEE]
○ Etapa 2: definiți depozitele pe agregate
■ Model de depozit [vezi modelul de date Spring]
○ Etapa 3: Creați servicii de primăvară -Remote-Data și DTO-uri
■ Modelul serviciului de date
■ definiți tranzacțiile pe metodele Spring-Data Service
● @ org.springframework.transaction.annotation. Tranzacțional

27

Pagina 28

REFERINȚELE CURSULUI
● PoEAA
○ [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]
● PoJEE
○ [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]
● JEE
○ [Goncalves, 2013] Antonio Goncalves, Beginning Java EE 7, Apress Media, LLC,
2013
● Primăvara
○ [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 28

Pagina 29

Diverse Ref: OnLine


● PoEAA
○ https://martinfowler.com/eaaCatalog/
● DDD
○ https://martinfowler.com/tags/domain%20driven%20design.html
○ https://www.thoughtworks.com/insights/blog/domain-driven-design-services-architecture
○ http://dddcommunity.org/
○ https://dzone.com/refcardz/getting-started-domain-driven
○ https://www.codeproject.com/Articles/339725/Domain-Driven-Design-Clear-Your-Concepts
-Înainte de-Yo
● PoJEE
○ http://www.corej2eepatterns.com/
○ http://www.oracle.com/technetwork/java/patterns-139816.html
○ https://www.oreilly.com/ideas/modern-java-ee-design-patterns
● Logica afacerii
○ MSFT: https://msdn.microsoft.com/en-us/library/ee658103.aspx
○ https://ramj2ee.blogspot.ro/2013/12/all-design-patterns-links.html
● DIP
○ https://dzone.com/articles/design-patterns-explained-dependency-injection-wit
○ https://martinfowler.com/articles/dipInTheWild.html
○ http://www.labri.fr/perso/clement/enseignements/ao/DIP.pdf

29

Pagina 30

Ref.: Modele de proiectare

• Gregory Hohpe, Bobby Wolf, Enterprise Integration Patterns. Proiectare,


Construirea și implementarea soluțiilor de mesagerie , Addison-Wesley
Profesional, 2003 [PoEAI]
• [Vernon, 2013] Vaughn Vernon, Implementing Domain Driven Design , 2013
Pearson Education
• Cătălin Strîmbei, Dezvoltarea aplicațiilor orientate obiect pe platforma Java ,
Ed.UAIC, 2010, Cap.4 Model Driven Design: construirea unui model orientat
obiect reutilizabil al afacerii.

30

Pagina 31

Referințe: Spring Data JPA și Spring


Servicii la distanță

● Spring Data JPA


○ https://www.baeldung.com/the-persistence-layer-with-spri
ng-și-jpa
○ https://www.baeldung.com/the-persistence-layer-with-spri
ng-data-jpa
○ https://www.baeldung.com/spring-data-jpa-method-in-all-r
epositorii
○ https://www.boraji.com/spring-4-hibernate-5-jpa-2-integrat
ion-exemplu
● Spring Remote Services
○ Tutorial Baeldung
○ LogicBig Tutorial
○ HowToDoInJava Tutorial
○ https://apprize.info/javascript/spring_1/16.html
31

Pagina 32

Referințe
Implementați Spring Web App pe Tomcat (clasic)

● Instalați Tomcat 9
○ Ghid pas cu pas
■ Eclipse> tomcat-users.xml:
● Roluri> manager-scripturi, manager-gui
○ Debug Startup 404
■ Locația serverului: utilizați instalarea Tomcat
● Maven Tomcat Plugin
○ https://www.dev2qa.com/how-to-deploy-a-maven-pr
scoate-to-tomcat-from-eclipse /
■ folosiți tomcat7-maven-plugin v2.2
● URL de configurare (implementare)
○ http: // localhost: 8080 / manager / text

S-ar putea să vă placă și