Web services i Lotus Notes / Domino 7
Sådan kan du komme igang med web services
|
Vi fokuserer selv på SOA arkitektur og webservices i vores egen infrastruktur og har fået store fordele af at centralisere services på standardiseret vis.
Artiklen er bygget op omkring følgende afsnit:






Hvad er en web service
En service der er tilgængelig over web....øhhh ja ok, men hvordan?
Overordnet kan ideen forklares udfra følgende principper:
- En service er et interface som beskriver en samling af operationer der er tilgængelige over nettet via standard XML baseret data udveksling
- En service er beskrevet via en standard XML notation kaldet WSDL, og kommunikeres med via SOAP XML beskeder
- Teknologien bruges ifm. IT arkitektur stilen SOA (Service Oriented Architecture)
Evt. "fremmedord" forklares efterfølgende.
Hvad er WSDL, SOAP & UDDI
Hvad er WSDL?
- WSDL står for Web Services Description Language
- WSDL er et XML dokument
- WSDL bruges til at beskrive Web services
- WSDL bruges også til at lokalisere Web services
Kort sagt:
WSDL en XML-baseret service beskrivelse af hvordan man kommunikerer med servicen/interfacet.
WSDL eksempel
Bemærk: Dette er et enkelt udklip at et WSDL dokument.
I eksemplet defines hvordan en forspørsel (request) og tilhørende svar (response) ser ud.
<message name="getTermRequest"> <part name="term" type="xs:string"/> </message> | Her defines hvilke dele en forspørgsel (request) består af. I eksemplet forventes første og eneste parameter at være en tekst værdi for argumentet "term". |
![]() | |
<message name="getTermResponse"> <part name="value" type="xs:string"/> </message> | Her defines hvilke dele et svar (response) består af. I eksemplet returnes en tekst værdi for "value", resultatet. |
![]() | |
<portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> | Her defines selve servicen og dens opbygning. I eksemplet defines services glossaryTerms med metoden/operationen getTerm som peger på sine input og output besked formater. |
Hvad er SOAP?
- SOAP står for Simple Object Access Protocol
- SOAP er en kommunikations protokol
- SOAP er et format til at sende beskeder
- SOAP er til kommunikation mellem applikationer
- SOAP er designet til kommunikation via Internettet
- SOAP er platform uafhængigt
- SOAP er programmeringssprog uafhængigt
- SOAP er baseret på XML
- SOAP er simpelt og åben for udvidelser
- SOAP muliggør det at komme uden om firewall udfordringer
Kort sagt:
SOAP bruges til at kalde service funktioner defineret i WSDL’en.
SOAP eksempel
Her er et eksempel hvor vi ønsker er at få aktiekursen for en IBM aktie.
Eksemplet viser SOAP formatet på en forspørgsel (request delen) sendt til en service hvor metoden "GetStockPrice" kaldes med argumentet "IBM". Og dernæst svaret (response delen), som returnere prisen 34.5 dollar.
REQUEST
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://…” soap:encodingStyle="http://…">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body></soap:Envelope>
RESPONSE
<?xml version="1.0"?>
<soap:Envelope xmlns:soap=”http://…” soap:encodingStyle="http://…">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body></soap:Envelope>
Hvad er UDDI?
- UDDI står for Universal Description, Discovery and Integration
- UDDI = directory af web service interfaces beskrevet i WSDL
- UDDI kommunikerer via SOAP
- UDDI er indbygget i Microsoft .NET platformen
Kort sagt:
UDDI er en directory service hvor virksomheder kan registrere og søge på Web services.
Håndtering af return datatyper
Når man udvikler brug af services er der to overordnede perspektiver, det at være provider (den som har lavet/kører services) og consumer (den som benytter servicen).
Som provider har man typisk værktøjer der genererer alle de nødvendige komponenter servicen består af, men som consumer, og her snakker jeg specielt om udvikleren der skal integrere til en service, er man afhængig af at kende lidt om den service man ønsker at benytte.
Det er WSDL dokumentet der her er centralt, da det definere alt det nødvendige vi skal bruge, som nævnt tidligere i artiklen.
Så med et WSDL dokument "i hånden" kan vi skabe de nødvendige forudsætning for at benytte servicen.
Simple datatyper
Datatyper, som:
- LotusScript: String, Integer, Double….
- Java: String, double, int, long….
mappes typisk implicit / indirekte
Komplekse datatyper
Datatyper som:
- Klasser og andre former for strukturer (Employee, Manager, Customer)
kræver udbyderens WSDL dokument og eksplicit generering af stub klasser.
(via bl.a. Apache Axis)
Senere versioner af Notes designeren har fået værktøjer til at gerenere disse stub klasser.
Hvorfor bruge web services
Der er flere grunde til at web services er værd at benytte:
- En simpel mekanisme til at sammenkoble løsninger uafhænigt af teknologi, enheder og lokationer
- Baseret på standard protokoller med universal support
- Billigere kommunikation over Internettet, ift. private og specialiserede netværk og produkter EDI o.lign.
- Fleksibilitet mht. transport mekanismer
- Løst koblede afhængigheder
- Selv beskrivende, en udvikler kan nemt forstå de beskrevne interfaces
- Automatiseret discovery. Løsninger kan selv finde ønskede services
- Muliggør forretnings orienteret service arkitektur.
Hvor bruges web services
Web services bruges overalt, både internt og eksternt i virksomheder og organisationer.
Eksempler fra internettet
- Google API
- Yahoo MAPS
- Amazon
- DR – playlister og meget andet
- Stock quotes
- og der er mange mange flere
Internt i virksomheder
- Indkapsling af forrentnings entiteter som vist nendenfor
Download eksempel kode
Du kan downloade nogle eksempel databaser med web service integration.
Slides + kode (zipped)
God fornøjelse :)