onsdag, april 25, 2007

Typ problem

Nu ska ni få höra om en myra som gick ut i morgondiset sedan han druckit sin choklad. Jag blev så glad sedan jag löste det här att jag inte kan låta bli att dela med mig, kanske någon kan ha nytta av det?

I Quaero vill jag kunna hämta punkter och rapportera in punkter till en databas över internet. Den första idén jag hade var att använda en webservice för att styra åtkomst till databasen och dessutom erbjuda lite logik som kanske inte kan skrivas i stored procedures. Model typerna (de klasser som innehåller information om punkterna) fanns färdiga eftersom jag konstruerat dessa under utvecklingen av klienten. Visual Studio i all sin glans (barnförbjuden länk) byggde i princip webservicen åt mig och när jag sedan ville använda den ifrån klienten så behövde jag bara lägga till en referens. Snabbt och smidigt, eller? Inte riktigt.

I webservicen skickar jag (genom att serialisera/deserialisera dessa från/till XML) Target objekt och i klienten tar jag emot Target objekt, i båda projekt finns referens till mitt modelprojekt men när jag försöker kompilera klagar kompilatorn på att dessa är olika typer. Vad försiggår här egentligen? Jo, när jag i klienten skapar en referens genererar även Visual Studio nya typer åt mig som stämmer överens med webservicen. Det här låter ju bra om det inte vore så att jag ville använda de typer som jag redan vet skickas.

En webservice ska vara åtkomlig för vem som helst och därför antar Visual Studio att jag inte vet någonting om den förutom adress och då skapas typerna utifrån specifikationen som finns på den adressen.

Problemet med automatgenererad kod är att den genereras automatiskt. Lösningen är nämligen den att man i den automatgenererade koden kommenterar ut den typ som skapats utifrån webservicen och istället refererar till modellen som man har sedan tidigare. Å andra sidan hade jag aldrig hunnit färdigt om inte koden var just automatgenererad så som vanligt har myntet två sidor.

2 kommentarer:

Anonym sa...

Härligt att du får ordning på det :).

Har du läst kurser i det här med webbtjänster eller är det något du fått ta och lära dig på egen hand nu när du har jobbet?

Unknown sa...

Jag har inte läst någon kurs i webbtjänster. Däremot köpte jag två tegelstenstjocka böcker i ämnet men jag har inte hunnit läsa dem än och de handlar mer om webbtjänster generellt utifrån SOA och inte webbtjänster på .NET plattformen. Det hade varit väldigt intressant att gå en sådan kurs.