이 문제는 기술에 영향을받지 않지만 C# 및 ASP.NET으로 작업 중이며 의사 코드로 사용합니다. 더 나은 접근 방법은 무엇이며, 그 이유는 무엇입니까? 호출자에게 처리디자인 질문 - 비즈니스 계층 방법은 얼마나되어야합니까?
protected void Page_Load(object sender, EventArgs e) {
SomeBusinessClass.SomeBusinessMethod();
}
public class SomeBusinessClass {
public void SomeBusinessMethod() {
using (TransactionScope ts = new TransactionScope()) {
doStuff();
ts.Complete();
}
catch (Exception ex) {
LogError("An error occured while saving the order", ex);
}
}
}
}
위임 로깅, 트랜잭션 (transaction) 예외 :
캡슐화 로깅, 트랜잭션 및 예외 처리
protected void Page_Load(object sender, EventArgs e) { using (TransactionScope ts = new TransactionScope()) { try { SomeBusinessClass.SomeBusinessMethod(); ts.Complete(); } catch (Exception ex) { LogError("An error occured while saving the order", ex); } } } public class SomeBusinessClass { public void SomeBusinessMethod() { doStuff(); } }
이
내가 걱정하는 도입하여 내 비즈니스 로직 코드에서 로깅, 트랜잭션 등에 대한 의존성을 덜어 준다. 기음. 반면에 UI 코드는 훨씬 깨끗해 보입니다. 나는 전화를 할 수 없다. 내가 고려해야 할 다른 요소들을 알려주십시오.
저는 1을 선호합니다. 코드가 트랜잭션에 래핑되어야한다면 내 코드를 호출 할 클라이언트가 트랜잭션에서이를 감쌀 수도 있고 감쌀 수도 있습니다. 또한 UI 부분이 훨씬 깨끗해 보입니다.void를 반환하지 않음으로써 실패한 것이 있으면 사용자에게 알려주는 방법이 있습니다. – iJK
왜()와() Dispose()}를 둘 다 사용합니까? – queen3
queen3 : 좋은 점, 예제를 수정했습니다. – cdonner