В основном, когда вы можете! NetTcp намного более эффективен, чем http - он кодирует двоичный файл, который экономит большую пропускную способность, и обладает другими свойствами, которые делают его действительно очень быстрым.
Проблема в том, что другой конец связи (у вас всегда есть сервер и клиент) также должен понимать этот протокол. Он специфичен для .NET, поэтому любой не-.NET клиент не сможет его использовать.
Кроме того, NetTcp обычно не использует порт 80, поэтому, если вы хотите использовать его через Интернет, вам придется открыть порты на брандмауэрах, чтобы пропускать трафик - не всегда легко и возможно.
Но если у вас есть сценарий интрасети - например, Среда локальной сети вашей компании - и у вас есть клиенты .NET, вызывающие вашу службу WCF, поэтому нет никакой причины , а не использовать NetTcp!