Ted Neward and Adrian Trenaman discusses doing contract-first vs. code-first services here. It’s a good read. It starts out with Neward sort of being the devils advocate, but in the end he really expresses one of my main concerns: how to enable loose coupling. Loose coupling is one of the main promises of SOA, but it’s not like you automatically get that just because you’re using webservices. Loose coupling of data has always been hard, wether you are using RMI og WS-*. WS-* has made the technology coupling easier, but data is still just as hard.
Oh, and here is a link to Extensible Content Models that he mentions.