XML is ugly and angle brackets are for plumbers. Unless you have a good reason to do so, you shouldn’t have to look at WSDL. Sharing this C# snippet here

[ServiceContract]
interface IHello
{
      [OperationContract]
      string SayHello(string name);
}

is a perfectly reasonable way to share contract between server and client, if you’ll be sticking to Indigo. A service can expose all the WS-MetadataExchange and XSD and WSDL you like so that other Web Service clients can bind to your service, but as long as you stay on the System.ServiceModel level and focus on writing a distributed systems solution instead of writing something that “does XML”, you won’t have to worry about all the goo that goes on in the basement. Staring at WSDL is about as interesting as looking at the output of “midl /Oicf”.

Updated: