Every article I have read about doing an async implementation for a WCF service requires modifying the interface for the WCF service (e.g. the return type of the operation goes from T to Task). However, I don't want to modify the operation signature as I have client code that doesn't know anything about the Task<> type. I just want the implementation to be synchronous.
I could implement the existing synchronous entry points by having a 'wrapper' method that makes a call to an internal async implementation method and then does an await, but that would block the thread calling into the wrapper, and that defeats the purpose of having an async implementation (which is to free up those threads so that they can serve other requests).
So, I need WCF to know that the implementation is async, but also know that the interface is not.