Integrasjon Web servicer

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

Generelt

NIFs tjenestelag er bygget for "Min Idrett", mobilklienten til Min Idrett samt integrasjonspartnere til NIF. Tjenestelaget 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.

Begreper

Følgende forkortelser, begreper og definisjoner benyttes i dokumentasjonen.
Forkortelse, begrep Forklaring
IIS: Internet Information Services, webtjener
IoC: Inversion of Control
SOAP: Simple Object Access Protocol
SSL: Secure Socket Layer
SSO: Single Sign On
WCF: Windows Communication Foundation
WS-*: Spesifikasjoner for webtjenester
WSDL: Web Services Description Language


Interne Id'er

For oversikt over:



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

Utfasede versjoner:
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).
Versjon 1.0 (Ver1_0).

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


Dokumentasjon

NIF V4 Services


Overgangsdokumentasjon for kurs og kompetanse

CourseService - Course2Service her: Dokumentasjon Course2Service
CompetenceService - Competence2Service her: Dokumentasjon Competence2Service
Course2CommonService her: Dokumentasjon Course2CommonService




--Lars Bekk 15. des 2017 kl. 19:26 (CET)