WCF и намечается, но вопрос был не об инструментах реализации, а о схеме взаимодействия. Интересуют не то что бы алгоритмы, а принципы взаимодействия.
Не понял вопроса. Основная идея всех подобных технологий - "прозрачность" распределённости. Соответственно, принципы взаимодействия при переходе к подобным моделям либо не меняются, либо меняются незначительно. В идеале desktop-клиент вообще никак не замечает, что работает с размещёнными на сервере объектами (если нет проблем со скоростью и качеством соединения). Любой web-сервис выглядит в программе как класс с методами. Конечно, на самом деле на клиенте это прокси/заглушка сервера, но клиента это не должно волновать.
Веб-программирование под ASP.NET - это вообще отдельная история. Это в первую очередь программирование под браузер.
Что касается сессий - для пользователя это всего лишь хэш-таблицы, словари типа "ключ-значение", живущие всё время жизни сеанса с клиентом. На случай аварий резервные копии сессии можно сериализовывать и сбрасывать в хранилища (например, базы данных). Помимо сессии (сеанса работы клиента) - объект Session - ещё есть аналогичная хэш-таблица для хранения общих для всех клиентов объектов - объект Application - живёт всё время жизни серверного приложения.
Соответствие пользователя и сессии сохраняется до тех пор, пока сохраняется соединение пользователя с сервером. В случае необходимости можно использовать имеющийся у сессии есть её уникальный идентификатор. Хотя, скажем, передача его клиенту и обратно - занятие сомнительное с точки зрения безопасности.