Результаты поиска не кажутся одноранговыми (поиск, как правило, связан с хранилищем данных, поэтому я догадываюсь об этом), и в этом случае HTTP, вероятно, соответствует вашим потребностям. Напишите свой сервер во что бы то ни было и используйте WebClient, предоставляя аутентификацию для каждого запроса. Вы можете использовать дайджест-аутентификацию, если беспокоитесь о безопасности. Недостатком XMPP является то, что вам нужно беспокоиться о том, чтобы оставаться на связи, и что в сети много посторонней информации. Например, наличие, iq, согласование протокола. Также ejabberd (не уверен в других - есть ли большой .Net XMPP сервер?) Имеет тенденцию пытаться договориться о SSL.
Если вас не беспокоит пропускная способность, вы, вероятно, не беспокоитесь ни о одном из вышеперечисленных, но, безусловно, самая простая модель программирования - это просто WebClient, запускающий запросы без сохранения состояния. Вы никогда не отключаетесь, и обработка ошибок проста.
OTOH ваш ответ на приведенный выше комментарий, по-видимому, подразумевает, что у вас могут быть некоторые P2P-элементы, и в этом случае HTTP, вероятно, не будет работать, если вы не включите небольшой обход сети и прокси-сервер, чтобы выставить одноранговые узлы как публичные адреса для каждого Другой. XMPP намного проще, чем это.
У нас есть сетевое приложение для лекционных кинотеатров, обеспечивающее плавную передачу 750 Мбит / с по XMPP. Вы, вероятно, найдете, что он хорошо справляется с нагрузкой.
Я рекомендую ejabberd на сервере (он кроссплатформенный и невероятный) и agsXMPP для клиента.