2011-04-19 4 views
1

작업 메서드에서 컨텍스트를 사용자 지정 비즈니스/도우미 클래스에 전달하는 가장 좋은 방법은 무엇입니까? 내가 만들고있는 도우미/비즈니스 클래스에는 현재 로그인 한 사용자, UrlHelper 클래스 (URL 생성 용) 인스턴스 및 ASP.NET MVC의 인프라와 관련된 기타 데이터가 필요합니다.ASP.NET MVC : 컨텍스트를 사용자 지정 클래스에 전달

저는 컨트롤러의 인스턴스를 전달할 생각이었습니다. 이게 낫겠 니? 가장 좋은 방법은 무엇입니까?

답변

5

내가 만들고있는 헬퍼/비즈니스 클래스에는 현재 로그인 한 사용자와 같은 정보가 필요합니다.

가능성이 낮습니다. IMHO 사용자 이름 => User.Identity.Name으로 충분하며이 비즈니스 계층에 문자열 매개 변수로 전달 될 수 있습니다.

UrlHelper 클래스의 인스턴스

같지도 (URL을 생성한다). URL 생성은 비즈니스 계층의 책임이 아닙니다. Url 속성을 가진 컨트롤러에서 URL을 직접 전달하여 자유 의지로 URL을 생성 할 수 있습니다 (다시 문자열 매개 변수로).

결론 : 인프라에서 비즈니스 로직을 분리하십시오. 기본적으로 비즈니스 로직을 호출하는 경우 이라는 유일한 개념 인 URL 도우미은 거의 의미가 없습니다. 웹 계층의 경계를 넘으면 더 이상 URL 도우미가 없습니다.

+0

나는 대답을 좋아한다. 내 클래스가 비즈니스 논리를 포함하는 웹 서비스와 통신하는 대부분 애플리케이션/UI 로직을 포함하는 도우미 클래스 인 경우 어떻게 될까요? 그런 다음 도우미 클래스가 ASP.NET MVC의 인프라와 결합 될 수 있습니까? – burnt1ce

+0

@ burnnt1ce, 예, 도우미 클래스 (HtmlHelper, UrlHelper, ...) 인 경우 ASP.NET MVC 인프라와 결합하여 필요한 정보를 비즈니스 계층에 전달하는 것이 완벽합니다. –

+0

빠른 답장을 보내 주셔서 감사합니다. 보기 모델에서도 동일한 작업을 수행 할 수 있습니까? 일부 뷰 모델의 경우 컨트롤러 컨텍스트와 비즈니스 엔터티를 뷰 모델의 생성자에 전달하고 싶습니다. – burnt1ce

1

비즈니스 도우미 레이어에 이미있는 연결 패스 값 유형 또는 매개 변수/dto 클래스를 줄입니다.

웹/UI 계층과 관련된 것을 전달하지 마십시오.

관련 문제