Ошибки бизнес-уровня и обработка сервисного уровня - лучший способ? - PullRequest
1 голос
/ 07 марта 2011

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

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

HandleException:

  1. Регистрирует ошибку
  2. Применяет переформатирование исключений к ошибкам SOAP (в настоящее время мы используем Экранирование исключений WCF )
  3. Применяет любую обработку, специфичную для исключений (формата if (ex is SomeTypeOfException) ...)
0 голосов
/ 07 марта 2011

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

...