Обязательно посмотрите в сторону WCF. Там есть и TCP, и HTTP, и поддержка TLS (поверх хоть TCP, хоть HTTP), и автоматическая сериализация-десериализация, и асинхронные вызовы, и поддержка сессий...
Внутри WCF использует сообщения SOAP - хотя есть постараться, то можно их кодировать как угодно.