Den Gode Webservice
skrevet af Niels Brinch
Når der skal udarbejdes en webservice, er der som regel mindst to parter der skal være enige om hvordan den skal se ud. Dem der udarbejder webservicen og dem som skal anvende den. Normalt er det simpelt nok. Webservicen udarbejdes og dem der skal bruge den, kalder den med de parametre den forventer.
Men hvad så når der indgår flere parter? Hvad hvis alle parter udvikles uafhængigt af hinanden? Hvad hvis der skal være sikkerhed og tryghed om, at webservice-kald autentificeres og autoriseres pålideligt på tværs af flere systemer? Så er der brug for en fælles aftale om hvordan alting gøres.
Den aftale eksisterer allerede og hedder Den Gode Webservice (DGWS). Det er et projekt som er udarbejdet af MedCom.
MedCom er et samarbejde mellem myndigheder, organisationer og private firmaer med tilknytning til den danske sundhedssektor.
Selvom der står "sundhedssektor" har DGWS spredt sig til flere dele af det offentlige og andre, som enten ønsker, kræver eller forventer at webservice-kommunikation følger de retningslinjer som er beskrevet deri.
For .NET-udviklere er der en relativ simpel måde at komme i gang på. Der er udviklet en komponent samt en række værktøjer som er beregnet til at understøtte DGWS. Komponenten stille gratis til rådighed herfra. Hvis man følger de officielle links kommer man til at mangle en fil som ellers nævnes i dokumentationen. Den har jeg i stedet googlet mig frem til findes her.
Der er fremragende dokumentation og værktøjerne er ualmindeligt gode. "Desværre" kræver det stadig du har kendskab til webservices, WSSE og til Den Gode Webservice, så du kommer ikke udenom at læse det generelle dokument om DGWS som findes i det første link.
Her er meget overordnet forløbet for anvendelse af komponenten og værktøjerne:
1. Skriv en xsd som beskriver de parametre som skal kunne indgå i dine webservices.
2. Lad et værktøj automatisk generere en WSDL som overholder DGWS.
3. Lad et værktøj generere C#-kode som implementerer førnævnte WSDL.
...og så skal det egentlige arbejde selvfølgelig til at begynde.
1 kommentarer |
1 Kommentarer:
Jeg bør nævne at jeg endte med IKKE at bruge den komponent som jeg nævner i artiklen. I stedet arbejdede jeg på et langt lavere abstraktionsniveau med rå tekst i xml-format som blev hentet fra tekst-filer, dannet i nogle StringBuilder's og sammensat til kald.
Send en kommentar
<< Tilbage