В Asp.Net (формы 4.0, а не MVC) я ищу потоковую безопасную методику для передачи сообщений об ошибках из объекта DAL, который был вызван тем, что служит объектом бизнес-уровня, на страницу Asp.Net.
Мне кажется, что нехорошо (и моя интуиция говорит, что неэффективно, но я могу ошибаться) мне просто выкидывать исключения на всем протяжении цепочки вызовов, чтобы оказаться в ловушке на странице.
В то же время я также не хочу, чтобы мне приходилось создавать экземпляры каждого объекта более низкого уровня, чтобы я мог захватить нестатическое поле сообщения, когда метод экземпляра по какой-то причине блокируется.
На данный момент у меня смешанный подход:
Page_Load(Object sender, EventArgs e){
//instantiate non-static class, with non-static methods
MyClass myClass = new MyClass();
if(!myClass.DoSomething()){
ErrorLabel.Text = myClass.ErrorMessage;
}
}
и
public Class MyClass{
.......
public string ErrorMessage{get;set;}
public bool DoSomething(){
try{
MyDalClass.DoSomeDataTricks();
return true;
}
catch (exception ex){
ErrorMessage = ex.Message;
return false;
}
}
}
и наконец:
public Class MyDalClass{ //non-static class
......
public static void DoSomeDataTricks(){ //static method
......
if(fooBar){
throw new Exception("Database Error: Cannot Find World Peace.");
}
}
}
Насколько известно выше, Thread-Safe в среде Asp.Net (если вы так не думаете, пожалуйста, скажите мне, почему), но я чувствую, что должен быть лучший путь, особенно на уровне DAL.
Лучшая практика?