Как вы фиксируете ошибки, возникающие на стороне клиента при создании приложений RIA с использованием Flex и Silverlight? Каковы общие практики? Я видел несколько реализованных асинхронных js-вызовов к веб-службе, но хотел бы знать, как с этим справляется сообщество.
Вы ведете журнал на стороне клиента?
Ответы (5)
Во-первых, я постоянно использую ведение журнала на стороне клиента. то, как я справляюсь с этим, зависит от всего приложения.
если я использую шлюз AMF, то происходит вызов ошибки приложения, при каждой возникающей ошибке сервер уведомляется, на стороне сервера в BugZilla открывается ошибка (это то, что мы используем, вы можете использовать любой другой хук, который вы хотите ).
Если я использую приложение на основе веб-службы, тогда возникает вызов веб-службы для ошибки клиента.
можно было бы сказать, что вы не должны пробовать сервер с каждой ошибкой, я не согласен с этим комментарием, потому что ошибка на стороне клиента встречается редко, она проходит тщательный контроль качества перед тем, как быть передана клиенту, поэтому я хочу немедленно знать о каждой ошибке клиента испытывает.
В Silverlight мне нравится использовать WebClient для входа в какой-либо веб-сервис — вы можете сделать это непосредственно в приложении Silverlight, не обращаясь к JavaScript.
Чтобы перехватывать исключения, которые возникают, когда ваш код не находится в стеке, вы можете использовать Application.UnhandledException.
Я использовал тот же подход, что и Ави Цурель — вам нужно знать на стороне сервера, когда появилась ошибка в клиенте Flex. Если вы хотите собрать больше данных (все сообщения журнала, предупреждения), я бы использовал внутренний буфер и сбрасывал его асинхронно.
В любом случае, вам нужно принять во внимание, согласны ли ваши клиенты с таким подходом. Возможно, вам нужно их согласие, прежде чем отправлять сообщение об ошибке на сервер.
Я в основном выношу все ошибки наверх и фиксирую их в необработанном исключении. Я показываю дружественное сообщение пользователю. Однако в моем приложении я реализую интерфейс ILogger. Этот интерфейс может быть инициализирован с различными уровнями и обрабатывает любые сообщения. Вы можете настроить его так, чтобы пользователь мог добавить параметр инициализации, чтобы определить, следует ли передавать ошибки в службу, и я обычно заставляю регистратор писать сообщения с помощью Debug.WriteLine, если отладчик подключен, чтобы упростить трассировка проблем в режиме отладки.
В Silverlight вы можете рассмотреть блоки приложений ведения журнала и обработки исключений из Пакет интеграции Silverlight для предприятия Библиотека.