Природа любого общения в сети ненадежна. Утверждение:
Я изучал использование обратных вызовов, но также читал, что они могут быть ненадежными
Предполагая, что вы имеете в виду обратные вызовы WCF, они столь же ненадежны, как и сами клиенты / серверы, и все они используют один и тот же механизм.
Тем не менее, вы можете хранить клиента вашей службы WCF в HttpApplicationState
(если вызов для всего приложения) или HttpSessionState
(если вызов локально для сеанса).
При создании прокси убедитесь, что вы отметили опцию (или указали в контракте), что вы используете асинхронные вызовы.
Затем вы должны сделать вызов, используя обратный вызов (делегат), чтобы указать, когда асинхронный вызов завершен.
Когда вызов завершится, вы сохраните результат в состоянии сеанса.
Если об этом нужно знать клиенту на переднем крае, браузер должен будет опросить ваш сайт, проверить возвращаемый результат, перенаправить на страницу, которая может отображать результаты при заполнении результата. .