Согласно модели ISO / OSI, TCP является транспортным уровнем. HTTP - прикладной уровень, реализованный поверх TCP. Так что HTTP всегда будет добавлять накладные расходы, несмотря ни на что.
Вообще. если HTTP решает изрядное количество проблем на уровне приложений, используйте его, потому что он хорошо зарекомендовал себя, хорошо взаимодействует и проверен. Если вам нужно проделать немалую работу, чтобы все заработало, даже когда ваше приложение использует HTTP, а с TCP все становится лучше и проще, то непременно используйте протокол более низкого уровня.
Что касается WCF, я понятия не имею, как выглядит их реализация только для TCP. Держу пари, что это проще, чем HTTP. HTTP, вероятно, используется в качестве «пуленепробиваемой» среды связи, а стоимость HTTP-издержек оправдывается тем, что протокол легко пересекает прокси-серверы и т. Д.