Web Services – Managing Technical Debates Over WCF vs Web API

wcfweb-api

I'm managing a team of like 15 developers now, and we are stuck at a point on choosing the technology, where the team is broken into two completely opposite teams, debating over usage of WCF vs. Web API.

Team A which supports usage of Web API, brings forward these reasons:

  1. Web API is just the modern way of writing services (Wikipedia)
  2. WCF is an overhead for HTTP. It's a solution for TCP, and Net Pipes, and other protocols
  3. WCF models are not POCO, because of [DataContract] & [DataMember] and those attributes
  4. SOAP is not as readable and handy as JSON
  5. SOAP is an overhead for network compared to JSON (transport over HTTP)
  6. No method overloading

Team B which supports the usage of WCF, says:

  1. WCF supports multiple protocols (via configuration)
  2. WCF supports distributed transactions
  3. Many good examples and success stories exist for WCF (while Web API is still young)
  4. Duplex is excellent for two-way communication

This debate is continuing, and I don't know what to do now. Personally, I think that we should use a tool only for its right place of usage. In other words, we'd better use Web API, if we want to expose a service over HTTP, but use WCF when it comes to TCP and Duplex.

By searching the Internet, we can't get to a solid result. Many posts exist for supporting WCF, but on the contrary we also find people complaint about it. I know that the nature of this question might sound arguable, but we need some good hints to decide. We're stuck at a point where choosing a technology by chance might make us regret it later. We want to choose with open eyes.

Our usage would be mostly for web, and we would expose our services over HTTP. In some cases (say 5 to 10 percent) we might need distributed transactions though.

What should I do now? How do I manage this debate in a constructive way?

Best Answer

When both sides have good arguments and the opinions on the issue are too strong to come to a consensus, you as a manager need to make a decision and end the debate. Otherwise it will just turn in circles and fortify the positions of all participants even more. The longer you wait, the harder will it be for the "losing" side to admit defeat and work productively with the outcome.

Write down all the arguments, value their importance for the project, and then make your decision. When you can't, flip a coin. Your project can likely be completed succesfully with either technology, and wasting valuable time with unnecessary debates will just cost unnecessary money.