TRsDomain.dk

Homepage of programmer Torben Warberg Rohde

Afsted til Værløse

Ryetvej plantegningDer er nu skrevet under, financieret osv. - og jeg er dermed ejer af Ryetvej 61, 2.mf.
Pr. 1. juli tilbringer jeg derfor en del tid på den nye adresse, hvor der skal males/hamres/skrues/find-selv-på-flere, hvorefter jeg 1. august endegyldigt forlader Vestergade *snøft* ;-)

Ryetvej bagside

 

Structuring extensive SOAP webservice APIs

Last year I spend some time building a webservice SOAP API for the Metimus system. Although it only covers selected bits of the full system it is still fairly extensive.

In the process I spend quite some time figuring out how to structure SOAP services when you go beyond the simple "RegisterForCompetition" type services... so I thought I'd share, since my attempts at Googling a solution where unsuccessful.

The problem I ran into
When you build a webservice API, the natural instinct is to attempt to make it look like a true OO API as much as possible. So you will want to:

  • Use objects for parameters and return types instead of primitives, which is no problem with the complex types of WSDL
  • Partition your solution into multiple services, as you would have multiple classes in an OO API (e.g. a CompanyHandler service, a UserHandler service etc.)

Now the problem arises when you try to e.g. use a return value "User" object from one service operation as a parameter for an operation on another service. Your solution will not compile!
The reason is that even though you know it's the same class, the client proxy-generator does not (whether it is .NETs WSDL.exe, Java or any other environment). There is no way around it - at least not without making life miserable for the client programmer (and the reason we wanted it OO'ish and shiny was to make it easy :-)

You have two basic choises: Either you partition it into multiple services and use primitives for all parameters - or you keep all operations in one big service and you get to use objects for parameters and return values.

I ended up using the "one big service" option. To make it a bit easier to maintain I then used the partial class feature of .NET, so I didn't end up with one insanely large file.

Further info and examples
A full explanation of the problem including sample code illustrating the problem can be seen here in this Experts-Exchange question I wrote. In case you do not have an account, here are the resource-links that was posted in the answer:

- Microsofts description
- Another explanation

Retro-bonanza webdesign

De Fede Må Svede screenshotFaldt lige over dette motionsløb "De fede må svede og de tynde må stønne". Ud over at navnet holder 100%, og arrangementet ser enormt hyggeligt ud, er det også et eksempel på absolut bleeding edge webdesign, i en ekstrem combo af 90'er-design og MS Word Art.

Du når måske ikke til Lolland d. 17. - men snyd ikke dig selv for et besøg på defedemaasvede.dk

Subsero flytter til 1253

Så er Subseros flytteplaner på plads. En gang i december måned flytter vi til Toldbodgade, hvor vi bliver samboende med bureauet Mantra.

Kortudsnit - Subsero i ToldbodgadeAltid dejligt med lidt ekstra planlægning og flyttearbejde oveni den normale december-travlhed ... ;-)

"Back to the future" - fysisk tænd/sluk knap!

Tænd/sluk-knap reklame på FacebookSå kom det endelig! "Fysisk" tænd/sluk knap er nu et top selling point.

Da jeg dagligt lever blandt Mac-skærme med "smarte" tænd/sluk-knapper har jeg faktisk lært at sætte pris på fysiske knapper. Mac-skærme kan kun slukkes omkring 20% af gangene - ja, du læste rigtigt, det er lykkedes dem at producere og sælge skærme til ca. 10.000 kr. hvor tænd/sluk-knappen er alvorligt defekt...

Slooow deletion as recycle bin fills up

I was going mad. It was taking forever to delete file in VS.NET, and reverting changes to a Subversion'ed file took just about as long as a total HD-format (at the time I did not connect the two).

Then I found a post where Matt explaines how emptying the recycle bin freed him of the same issue.... two mouse-clicks later VS.NET and Subversion was 3500% faster.

(I still run XP, so this might have been fixed in Vista+)

Cykelcross i Folkeparken 4000

Cross 2009 folkeparken Roskilde - Trappe ThumbI lørdags gik starten for 2. afdeling af cykelcross motionsserien cx-cup.dk.

Løjerne foregik i folkeparken i Roskilde, og ruten var lagt så der både var græs og fedtede jordstier - og naturligvis skulle man også op af trappen i amfiteateret!

Cross 2009 folkeparken Roskilde - Forfølgelse ThumbDet var for mig sæsonstart, og med ca. 0,1 timers træning i 2-3 uger var det ikke mærkeligt det gik lidt trægt. Men i mål kom jeg, med hverken alvorlige mekaniske eller kropslige defekter.

Nyt website

Så er afløseren for det gamle TRsDomain i luften.

Indholdet er indtil videre omtrent det samme, men designet har fået et facelift, og det er nu baseret på et CMS-system, så det er lidt nemmere at opdatere indholdet.
CMS-systemet er Umbraco som jeg først rodede med for noget tid siden inde på arbejde.

Forvent ikke daglige opdateringer og spændende reportager her på bloggen. Den er hovedsageligt lavet som opslagstavle for forskellige programmeringsrelaterede emner, så jeg selv kan finde det når jeg har glemt hvordan det liiige var det var :-)