SOAP & REST službyzacek/infs2/SoapRest.pdf · 2018-03-20 · Microservices Architecture...
Transcript of SOAP & REST službyzacek/infs2/SoapRest.pdf · 2018-03-20 · Microservices Architecture...
SOAP & REST službyRozdíly, architektury, použití …
Obsah
• Srovnání SOAP a REST služeb
• Service Oriented Architecture
• Microservice Architecture
• Příklady použití
• Nástroje pro vývoj SOAP a REST služeb (v Java)
2
Webová službaPOST /crmapi/CreateContactPersonManagement HTTP/1.1
SOAPAction: "CreateContactPerson"
Content-Type: text/xml; charset=utf-8
<SOAP-ENV:Envelope>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<CreateContactPersonRequest>
<contactEmail>[email protected]</contactEmail>
<contactMobile>420777222555</contactMobile>
<mktEmail>Y</mktEmail>
</CreateContactPersonRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
<SOAP-ENV:Envelope>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<CreateContactPersonResponse>
<crmCpRefNo>986089</crmCpRefNo>
<resultCode>0</resultCode>
<resultMessage></resultMessage>
</CreateContactPersonResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Webové a REST služby - příklad
3
REST službaPOST /crm/ContactPerson HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"ContactPerson": {
"contactEmail": "[email protected]",
"contactMobile": "420777222555",
"mktEmail": "Y"
}
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"ContactPerson": {
"crmCpRefNo": "986089"
"contactEmail": "[email protected]",
"contactMobile": "420777222555",
"mktEmail": "Y"
}
}
Webové a REST služby - rozdíly
SOAP Webové služby REST služby
SOAP je protokol REST je více architekturní vzor
SOAP zprostředkovává přístup ke službám REST zprostředkovává přístup k datovým zdrojům
Data v XML formátu podle SOAP protokolu Různé datové formáty, nejčastěji JSON
Specifikace WSDL+XSD Specifikace WADL, není všeobecně používaná
WS-Security + SSL Pouze SSL
Podporuje transakce - WS-Transaction Nepodporuje transakce
SOAP je náročnější na objem dat Vhodný formát dat je úspornější (např. JSON)
Volání nemohou být “kešovány” Volání mohou být “kešovány”
4
SOA Service Oriented Architecture
• Vzájemná komunikace aplikací prostřednictvím služeb definovaným komunikačním protokolem
• Providers – poskytovatelé služeb
• Consumers – uživatelé služeb
• Enterprise Service Bus - integrační/komunikační vrstva
5
SOA Komponenty
• Message-Oriented Middleware (MOM) – transportní infrastruktura
• Enterprise Service Bus (ESB) – integrační infrastruktura (routing, datové transformace, adaptéry)
• Business Process and Workflow Engines – komplexní business procesy
• Rule Engines – rozhodovací pravidla
• Complex Event Processing – detekce fraudu, zpracování eventů na základě analýzy dat, procesů, …
• Directory Services – definice služeb, endpointů
• Business Activity Monitoring – vizualizace business procesů, KPI monitoring
• Management, Administration, Monitoring
6
SOA Enterprise Service Bus
• Framework pro transformace, zpracování, routování a monitorování jednoduchých i komplexních datových struktur
• Jsou založeny na standardech a platformně nezávislé
• Poskytují:
adaptéry pro přístup ke službám různými protokoly (SOAP, HTTP, JMS, FTP, SMTP/POP3, …)
konfigurovatelné routování zpráv (synchronní, asynchronní) mezi různými messaging platformami
transakční zpracování (pro protokoly, které transakčnost podporují)
logování a zpracování chybových stavů
• Výhody
volné spojení (loose coupling) komponent a procesů
flexibilita v integraci aplikací (snadná možnost změny, náhrady služby, …)
zjednodušení vazeb mezi aplikacemi
možnost rychlé reakce na business požadavky
7
SOA Enterprise Service Bus – symboly scénářů
8
SOA Enterprise Service Bus - scénáře
• Virtualizace
• Zpřístupnění služby
9
SOA Enterprise Service Bus - scénáře
• Obohacení dat voláním služby
• Verzování služby
10
Service Oriented Architecture – výhody/nevýhody
✓ Přepoužitelnost služeb
✓ Jednotlivé aplikace mohou být vyvíjeny v různých technologiích.
✓ Interface služeb odpovídá zvolenému protokolu (SOAP, REST, …) a specifikaci
Výpadek aplikace má dopad na všechny aplikační služby (single point of failure)
Problémy jedné služby mohou negativně ovlivnit funkčnost ESB
Poměrné náročný management a monitoring infrastruktury
11
Microservice Architecture
12
Tradiční monolitické aplikace Aplikace v Microservice Architecture
Microservices Architecture
• Aplikace jsou složeny z malých nezávislých procesů, které vzájemně komunikují prostřednictvím API.
• Jednotlivé služby jsou samostatně „deploy-ovatelné“ a je možné je vyvíjet samostatně.
• Nezávislost na kontextu – funkčnost služby nesmí být závislá na kontextu (session)
13
Microservices Architecture – výhody/nevýhody
✓ Jednotlivé služby mohou být vyvíjeny v různých technologiích
✓ Interface služeb odpovídá zvolenému protokolu (SOAP, REST, …) a specifikaci
✓ Výpadek jedné služby má minimální dopad na okolí, ostatní instance služby mohou dále spolehlivě fungovat
✓ Vývoj jednotlivé služby je jednodušší, snadněji pochopitelný pro nové vývojáře
✓ Škálovatelnost
✓ Volné provázání – minimální vzájemná závislost
Složitější architektura – vzájemná komunikace mezi službami, více databází & transaction management.
Testování – testování služby vyžaduje všechny závislé služby
Deployment – komplexnost, vyžaduje koordinaci deploymentu jednotlivých služeb14
Využití v praxi – SOA & Web Services
• API Paypal, Salesforce, Clickatell SMS
• B2B komunikace při prodeji ADSL služeb
• Integrace aplikací u TELCO operátorů, bank, …
15
CRM ProvisioningDWH
Web Selfcare eShop
BillingMediation
Integration Platform
Web Portal Apps
Využití v praxi – Microservices & REST
• API Twitter, LinkedIn, Slack
• Webové aplikace vyvíjené pro různá zařízení
• Aplikace pro zpřístupnění bankovních služeb v rámci Směrnice EU o platebních službách (PSD2)
16
Nástroje pro vývoj SOAP a REST služeb
• Web ServicesAPI (Java)
JAX-WS – referenční implementace v Java Spring-WS Axis2 CXF
Testování SOAP UI
• Rest ServicesAPI (Java)
JAX-RS - referenční implementace v Java EE Jersey spring-web, spring-webmvc
Testování Postman SOAP UI
Swagger – framework pro design, generování/sestavení rozhraní služeb, dokumentace, testování
17
18
Workshop - Vývoj v React & Spring Boot
Děkuji za pozornost