I have an orchestration that calls a WCF service using a two way WCF-BasicHttp send port. For test purposes my WCF service just takes a parameter, and returns a value so I know it doesn't have any time consuming logic. In fact with the WCFTestClient client tool I know the WCF service call takes only a few milliseconds.
When I call the WCF service in my orchestration the send shape takes roughly 7 seconds or so, and the receive shape takes about the same. So time spent in my orchestration for example could be 15 seconds and the send and receive shape for the wcf service takes over 90 of that.
The only thing I could think of was that the polling settings on my hosts were out of whack. I have 3 hosts, 1 for send ports, 1 for receive ports and one for orchestrations. Each is configured with the default configuration.
Further, my open, send and close timeout settings for the send port are 5,4, and 3 seconds respectively. Neither operation is timing out, and I am convinced the issue is not in the wcf service itself, it's in BizTalk or my BizTalk solution.
In the images below, notice the sndGetDemographics and recGetDemographicsResponse each take around 7 seconds to complete:
Seems to me your pipelines are to blame. If you are using XMLTransmit/XMLReceive, try moving towards PassThruTransmit & PassThruReceive pipelines.
It looks to me that way because the Receive event of the send port is perfect in respect to timing, only the Send event takes ages.
Just to be sure: you're not using any special WCF behaviors/inspectors?