title: Contract-First SOA with WCF
body: <p>This question is more of a probe to discover what people are doing in the community, in practical situations, than a specifically targeted question. I have searched pretty broadly about this, and while I have found a lot of bloggers advocating contract-first service design and some comments backing them up, I have yet to find much practical information about implementing contract-first with WCF, the pros and cons of doing so in a real-world environment, etc. I have recently done some extensive research into SOA, primarily through Thomas Erl's books, and one of the primary concepts he advocates is contract-first design.</p>
  
  <p>My questions are as follows:</p>
  
  <ol>
  <li>How do you approach contract-first service design with .NET and WCF?</li>
  <li>Are there other tools besides svcutil that can generate both client and service from contract? (Anything that integrates with VS would be ideal)</li>
  <li>What real-world pros have you encountered with contract-first design and wCF?</li>
  <li>What real-world cons have you encountered with contract-first design and WCF?</li>
  </ol>
  
  <p>One of the major problems with contract-first development seems to be tooling. Svcutil is the only thing I have found that can generate service code from a contract, and it has some pretty poor output. Its single-file, chock full of attributes and code-generation artifacts, and it basically needs to be regenerated and replaced any time the contract is updated. I would prefer a better approach, preferably something that doesn't require regen-replace. I'm fine with manually creating the service-side contract even, assuming it is practical in a real-world scenario.</p>
  
  <p>EDIT:</p>
  
  <p>While WCSF solved my immediate needs, learning about <a href="http://code.google.com/apis/protocolbuffers/" rel="nofollow noreferrer">Protocol Buffers</a> and <a href="http://msdn.microsoft.com/en-us/library/cc487895.aspx" rel="nofollow noreferrer">Service Factory</a> are both intriguing tools that I am sure will help me in the future.</p>