Если вы отправляете объекты, вы должны быть очень осторожны с тем, что вы делаете, и как вы планируете использовать эти объекты на другом конце. Все свойства должны быть сериализованы. Если вы собираетесь иметь большие объемы данных в этих объектах, вы можете вместо этого использовать двоичную сериализацию.
Кроме того, ознакомьтесь с рекомендациями, опубликованными здесь: Рекомендации по сериализации MSDN
Если вы собираетесь отправлять объекты, вы можете посмотреть либо опции .Net Remoting, либо службы WCF, если это применимо. Использование собственных обработчиков сокетов, а затем их использование для сложных операций требует много времени и усилий, особенно если вы раньше этого не делали.