Ошибки бизнес-уровня и обработка сервисного уровня - лучший способ?

Мы создаем большое веб-приложение, которое имеет множество слоев. Для связи с бизнес-уровнем мы используем сервисный уровень, который веб-уровень вызывает, когда нужны данные. К сожалению, кажется, что если исключения генерируются на бизнес-уровне, кажется, что веб-службы упаковывают исключения и повторно генерируют их. Мы ищем четкий способ инкапсулировать ошибку и зарегистрировать ее, без того, чтобы WCF создавала новое исключение вокруг исходного.

Спасибо


person DavidAndroidDev    schedule 07.03.2011    source источник


Ответы (2)


FWIW, каждый из наших открытых методов уровня службы WCF перехватывает System.Exception и передает его помощнику HandleException (я думаю, это также может быть метод базового класса службы)

Обработать исключение:

  1. Регистрирует ошибку
  2. Применяет переформатирование исключений к ошибкам SOAP (в настоящее время мы используем экранирование исключений WCF)
  3. Применяет любую специфичную для исключения обработку (в формате if (ex is SomeTypeOfException) ...)
person StuartLC    schedule 07.03.2011

Есть разные способы сделать это. Я считаю, что представленное вами решение не так уж и плохо, хотя оно не сильно масштабируется (смешение обработки ошибок, характерной для бизнеса, с кодом, связанным с сетью, создает своего рода связь). Все это зависит от вашей архитектуры: вы можете добавить поверхностный, легкий слой, который преобразует бизнес-ошибки в веб-ошибки, которые обрабатываются в коде обработки ошибок веб-слоя. Вы также можете использовать AoP и перехватывать вызовы и переводить ошибки для слоев выше.

person Ricardo Ferreira    schedule 07.03.2011