Просмотрел много разного кода, в т.ч. на
www.google.com/codesearch, но так для себя не понял, как отделить бизнес логику сервера от самой серверной части? Неужели обрабатывать приходящие данные в методе ReceiveCallback кейсом? А если надо запросы к базе данных сделать, дождаться ответа, сравнить с полученным у сервера данными и затем только отправить результат пользователю?
Как вообще организуется непосредственно логика обработки на асинхронном сервере? Может книги какие есть специализированные для C#?