Просто пытаюсь понять, что может случиться, если что-то пойдет не так с WCF. У меня есть реализация моего контракта на обслуживание, объявленная с InstanceContextMode of PerSession ...
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
Звонки происходят следующим образом:
Мой клиент вызывает сервер и вызывает GetServerUTC (), чтобы вернуть текущее время UTC сервера. Это односторонний вызов, и сервер перезвонит клиенту, когда он будет готов (тривиально в данном случае просто вернуть текущее время!)
Сервер перезванивает клиенту и для целей тестирования в реализации обратного вызова на клиенте я выкидываю исключение.
Это не обрабатывается на клиенте (в целях тестирования), и клиент аварийно завершает работу и закрывается.
На сервере я обрабатываю обработчик сбойных событий в ICommunicationObject ...
obj.Faults + = new EventHandler (EventService_Fapted);
Вопросы ...
Завершит ли сеанс текущее соединение на сервере.
Я полагаю, что я свободен делать то, что я хочу в этом методе, например ведение журнала или что-то, но я должен сделать что-то конкретное здесь, чтобы завершить сеанс, или WCF справится с этим?
С точки зрения лучшей практики, что мне делать, если обратный вызов нарушен? Означает ли это, что «что-то случилось с вашим клиентом» и это конец, или я что-то упускаю здесь?
Кроме того, есть ли другие обработчики с ошибками, с которыми я должен работать.
Я много читал о WCF, и мне кажется, что что-то неопределенно делать, если что-то идет не так. В настоящее время я внедряю конечный автомат на моем клиенте, который будет управлять соединением и определять, может ли действие пользователя произойти, в зависимости от того, существует ли соединение с сервером или это избыточное решение.
Любые советы будут действительно оценены;)