WCF made the mistake of trying to be all the things to all the people
The abstraction is simply broken
It tried to be a common abstraction over http, tcp, message queue etc. Which is just not possible
There's too many specifics in each of them to have any sort of common interface (in all but the most simple examples)