Avatar billede macfreak Nybegynder
03. maj 2009 - 19:07 Der er 6 kommentarer og
1 løsning

Beholde lav kobling med webservice?

Hej Eksperter!

Jeg sidder med et projekt hvor jeg skal lave et Receptionistsystem for et hotel. Klienten kommunikerer med serveren/databasen gennem en webservice denne udstiller. Til kommunikationen sendes flere klasser, f.eks. en Booking og en Guest, med som argumenter. Klienten opretter disse klasser vha. WSDL'en. Så langt så godt.

Klienten har jeg opdelt i 4 lag - GUI, Applikation, Domæne og Infrastruktur. Infrastruktur-laget sørger for kontakten med Webservicen, og er derfor den eneste der kender til de klasser som WSDL'en udstiller. Dette for at holde lav kobling til resten af systemet. Domæne-laget har sine egne repræsentationer af en Guest og en Booking.

Mit problem/spørgsmål:
De førnævnte klasser (fx. Booking, Guest) som sendes ml. Infrastruktur-laget og webservicen skal laves om til Domænets repræsentationer af klasserne, men jeg ønsker ikke at andre end infrastruktur-laget har  har direkte kenskab til Webservicen (gnm. service referencen), og ej heller at Infrastruktur-laget kender til Domæne-lagets klasser.

Hvordan får jeg på bedste vis lavet Webservice-klasserne om til Domæne-klasser og samtidig beholde lav kobling på tværs af systemet. Pt. har jeg en adapter/wrapper klasse ml. Infrastruktur og Domæne til at "wrappe" fra den ene til den anden repræsentation, men jeg synes der er flere ulemper ved dette, og kan ikke komme på en bedre løsning.

Findes der en standard/kotume til at løse dette problem?

Sikke en lang smøre, håber at det giver mening :)

På forhånd tak,

Jeppe
Avatar billede macfreak Nybegynder
04. maj 2009 - 11:56 #1
Bump
Avatar billede macfreak Nybegynder
05. maj 2009 - 21:29 #2
Bump bump bump... :)
Avatar billede sirius Nybegynder
06. maj 2009 - 20:40 #3
Hvordan har du bygget din solution op?

Jeg plejer typisk at have et project for hvert lag, og så har jeg typisk nogle projects for common utils og lign på tværs af solutions og så et project til model klasser der går på tværs af lagene.

På den måde kan du tage de autogenerede model klasser fra din WSDL og ligge dem ud i et project for sig selv. På den måde kan alle dine lag få kendskab til modellerne, og du slipper for at mappe mellem forskellige modeller mellem lagene.

og det vigtigste, det kun dit infrastruktur lag som behøves at have kendskab til din service :-)

/jacob
Avatar billede macfreak Nybegynder
06. maj 2009 - 22:34 #4
Tak for svar Jacob :)

Jeg har delt mine lag op i namespaces, men det kan godt være at det ikke er hensigtsmæssigt?

Hvordan kan jeg "hive" klasserne fra WSDL'en ud i et projekt for sig selv? Jeg troede at klasserne blev hentet direkte fra Web Referencen, som kun infrastruktur-laget har adgang til?
Jeg mener, kan jeg "kopiere" de klasser?

/ Jeppe
Avatar billede sirius Nybegynder
06. maj 2009 - 22:46 #5
Hvis du dobbeltklikker på din service reference kommer du i object browser, her kan du så dobbelt klikken på en model klasse, og du vil så komme i Reference.cs eller noget i den stil.

Her kan du så kopiere de forskellige klasser og sætte dem ind i et andet namespace / project. Der er godt nok lidt "støj" i de klasser, som attributter og lign. Men det er jo partielle klasser, så burde ikke være det store problem at abstrahere fra.

Du kan så builde din solution og så vælge update service reference, og servicen vil så bruge de modeller der findes allerede. (hvis du altså under configure service reference har sat flueben ved reuse types in referenced assemblies)

/jacob
Avatar billede macfreak Nybegynder
06. maj 2009 - 23:57 #6
Perfekt!

Det havde jeg ikke tænkt på :)

Giver du et svar?

/ Jeppe
Avatar billede sirius Nybegynder
08. maj 2009 - 13:01 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Politiets Efterretningstjeneste

Netværks- og/eller firewallspecialister til PET

Udviklings- og Forenklingsstyrelsen

Erfaren teamleder til årsopgørelsen

Udviklings- og Forenklingsstyrelsen

Scrum Master