Integrasjon Web servicer

Fra itINFO
(Omdirigert fra Web servicer)
Hopp til: navigasjon, søk

NIF har ulike webservicer i forskjellige versjoner på de forskjellige miljøene (Miljøer).
Disse kan brukes til Integrasjon.
En webservice i utvikling vil først bli releaset til DEV, så til DST og dernest Produksjon.

NIF sine Web Servicer eksisterer i flere versjoner.

Versjoner, siste versjon øverst.
Versjon V4WS (Web service V4WS).
Versjon V4 (Web service V4).

Versjoner som snart vil bli utilgjengelig:
Versjon 3.2 (Ver3_2).
Versjon 3.1 (Ver3_1).
Versjon 3.0 (Ver3_0).
Versjon 2.2 (Ver2_2).
Versjon 2.0.1 (Ver2_0_1).

Tidligere versjoner som nå er stengt.
Versjon 1.0 (Ver1_0).


Interne Id'er

For oversikt over:


Eksempler

For eksempel av bruk i PHP
For eksempel av bruk i Java/axis2
For eksempel av bruk i Java/metro
For eksempel av bruk i Java/saaj

Begreper

Følgende forkortelser, begreper og definisjoner benyttes i dokumentasjonen.
Forkortelse, begrep Forklaring
IIS: Internet Information Services, webtjener
IoC: Inversion of Control
SOAP: Protokoll for utveksling av meldinger
SSL: Secure Socket Layer
SSO: Single Sign On
WCF: Windows Communication Foundation
WS-*: Spesifikasjoner for webtjenester
WSDL: Web Services Description Language
…: Illustrerer at det er kuttet vekk noe for å spare plass. For eksempel i utlisting av kode så vil kode som ikke er relevant være kuttet vekk.



Generelt

NIFs tjenestelag som er bygget for nye Min Idrett, mobilklienten til Min Idrett samt integrasjonspartnere til NIF, er bygget på «.NET 4.0» og «WCF 4.0».
Løsningen følger en «no config» tankegang der mesteparten av konfigurasjonen er gjort programmatisk.
Tjenestene baserer seg på kontrakter for å gjøre det lettere å kunne benytte disse i forskjellige tekniske miljøer slik som .NET, Java og PHP.
Kontraktene ligger adskilt i én egen modul slik at disse kan inkluderes i andre .NET-prosjekter.
Konfigureringen av tjenestene skjer via egne klasser. Det er fullt mulig å bytte konfigurasjonsklasser for å håndtere forskjellige konfigurasjonsscenarier.
Det er også lagt på forskjellige egenskaper på tjenestene.
Disse kan også, i noen tilfeller, byttes ut med andre implementasjoner.
Tjenestene baserer seg på WS-Security og SOAP 1.2.
Tjenestene benytter SSL for kryptering og er laget slik at de ikke kan benyttes uten.
Autentiseringen av tjenestene skjer ved bruk av klassen «Authentication» i kjernebiblioteket til NIF.
Brukernavn og passord sendes i «http headeren», derav kravet om SSL.
I så stor grad som mulig har man prøvd å unngå og direkte referere inn kjernemodulene til NIF.
I stedet benytter man seg av et fasadelag.
Dette for å forenkle utskiftninger/endringer i kjernemodulene.
Fasadelaget er et tynt lag med et minimum av funksjonalitet.
Laget fungerer som et bindeledd mellom tjenestelaget og kjernemodulene i NIF.



Detaljert beskrivelse av løsningen

Løsningen baserer seg på en «no config» tankegang. Dvs at den delen av konfigurasjonen som er relativt statisk er plassert i koden og ikke i web.config.
Dette vil gjøre det vesentlig enklere og hanskes med tjenestene i forskjellige miljøer (utvikling, test, produksjon etc.).
Løsningen er delt opp i forskjellige prosjekter; «ServicesLibrary» inneholder logikken under tjenestene, implementasjonen av tjenestene, egenskaper, konfigurasjon (kode), feilhåndtering, sikkerhetshåndtering etc. «Nif.ServicesContracts» inneholder alle kontraktene i form av tjenestenes grensesnitt, meldings- og dataklasser, samt «mappere».
Kontraktene er skilt ut slik at man kan referere inn kontraktsmodulet i andre .NET prosjekter. «Nif.Services.Wcf» er webprosjektet i løsningen, det er via dette IIS vil kjøre tjenestene.
I webprosjektet vil det i utgangspunktet bare finnes en web.config (se neste kapittel).
I tillegg finnes det et «common» prosjekt for noen ofte brukte hjelpeklasser, samt «IoC» konfigurasjonen for fasadelaget.
Merk at «IoC» konfigurasjonen for tjenestene er i «ServicesLibrary».

Rent funksjonelt så vil IIS benytte aktiveringsdelen i web.config for å finne ut hvilken «factory» som skal benyttes ved opprettelse av en tjeneste. Deretter så vil «factory’en» kofigurere opp «IoC-kontaineren» (i denne løsningen benyttes StructureMap for «IoC-kontainer») og så opprette en instans av «NifServiceHost».

«NifServiceHost» har som oppgave å sette opp konfigurasjonen, legge til egenskaper og sette opp riktig(e) «endpoints».
All logikken som trengs for å få opprettet rammene rundt den enkelte tjeneste finnes her eller refereres inn her.

Tjenesten vil da stort sett bare inneholde logikken bak hver tilbudte operasjon og eventuelle hjelpeklasser.
Hver tjeneste blir opprettet i en «PerCall» kontekst.
Dvs at når det kommer en forespørsel så vil det opprettes en instans av tjenesten som håndterer meldingen, eventuelt svarer på den og som deretter vil dø når operasjonen er utført. Hvis logikken i en tjeneste trenger data fra kjernebiblioteket til NIF så skal dette skje via fasadelaget.

Metodene i tjenestene benytter «response/request» objekter for meldingene. Alle metoder skal ha disse.
Hvis en tjeneste ikke skal returnere data så skal den returnere et «EmptyResponse» objekt som sier noe om operasjonen var vellykket eller ikke. Hvis en metode ikke trenger spesielle parametere inn så skal det sendes et «EmptyRequest» objekt.

Så å si alle «response/request» objekter arver fra «RequestBase», der baseklassen inneholder bla et brukerobjekt som benyttes til autorisasjon.
Selve autentiseringen av hvert tjenestekall foregår via et brukernavn og passord som sendes med hver melding i «http-headeren».

All bruk av tjenestene skal foregå via SSL, noe annet tillates ikke av tjenestelaget pr nå. Løsningen krever at brukernavn og passord blir sendt med som en del av SOAP meldingen.

Autorisasjon foregår via et «UserContext-objekt». For å få opprettet dette objektet med riktige verdier så må man benytte seg av «FacadeHelper» i fasadelaget.
Det er også viktig at moduler/objekter som krever «UserContext» ikke opprettes via StructureMap (se steg 2 i «Opprette nye tjenester»).

Nye WCF-Servicer for Kurs og Kompetanse


I forbindelse med innføring av ny kurs- og utdanningsløsning hos NIF, vil CourseService og QualificationService på sikt bli utilgjengelig og erstattes av to nye servicer, Course2Service og Competence2Service.

Gamle CourseService og QualificationService vil fortsatt være tilgjengelige, men de vil ikke forsynes med nye data etter 15.november 2016.

Notis Last ned dokumentasjon for Course2Service her: Dokumentasjon Course2Service


Notis Last ned dokumentasjon for Competence2Service her: Dokumentasjon Competence2Service


Notis Last ned dokumentasjon for Course2CommonService her: Dokumentasjon Course2CommonService



Notis If you need to read this text in another language, please do copy and paste the text into Google Translate



--Kim Størdal Toftner 10. nov 2011 kl. 17:31 (CET)