최근 MVC 4 프로젝트의 개체를 처리하기 위해 리포지토리/서비스 디자인 패턴을 채택했습니다.리포지토리 및 정적 메서드
확실히 좋은 움직임 이었지만 문제가 있음을 발견했습니다. 이제 패턴을 적용한 결과가 나올 수 있으므로 해결책을 제안 할만한 사람이 있는지 살펴 보겠습니다. 내 요구에 맞는 디자인 패턴.
사용자 지정 사용자를 처리 할 저장소와 서비스가 있습니다. 이것은 사용자 가져 오기 및 모든 사용자 방법 수행에 완벽하게 작동합니다. 하지만 Repository/Service 디자인 패턴으로 옮기기 전에 모든 사용자 관련 메서드를 처리하는 정적 클래스가있었습니다. 이러한 방법의
하나는했다 : 당신이 볼 수 있듯이
public static Profile CurrentUser()
{
// TODO: Need to replace the Profile session when any permissions are changed....
var companyId = HttpContext.Current.Session["CompanyId"].ToString();
if (HttpContext.Current.User.Identity.IsAuthenticated && !string.IsNullOrEmpty(companyId))
{
var userId = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString();
var repository = new ProfileRepository(companyId);
return repository.Get(userId);
}
else
return null;
}
는,이 방법은 그들이에 로그인 한 경우 특정 사용자의 프로필을 반환 그렇지 않은 경우는 null를 돌려줍니다..
내 문제는 서비스 및 저장소에서 분리해야한다는 것입니다. 왜냐하면 모든 컨트롤러에서 호출해야하기 때문에 정적으로 만들었습니다.
이 문제를 해결하기 위해 ProfileContext라는 클래스를 만들었고 CurrentUser()는이 정적 클래스의 유일한 메서드입니다.
제 질문은 간단합니다. 이 방법이 CurrentUser 메서드를 처리하는 가장 좋은 방법일까요? 아니면 더 좋은 솔루션이 있습니까?
건배,
이것은 저장소 또는 서비스 클래스의 코드입니까? – Oscar
나는'depedency-injection'과'inversion-of-control' 태그를 보았습니다. 코드 예제에서 제공하지 않았으므로 실제로 사용합니까? –
그래, 내가 내 컨트롤러와 내 서비스에 사용하지만, 코드와 함께 당신과 얼굴 싶지 않았기 때문에이 질문에 그 코드를 포함하지 않았습니다 :) – r3plica