2009-08-24 2 views
5

컨트롤러에서 asp.net 멤버십 클래스에 액세스하고 결과를 서비스 계층에 전달해야합니까, 아니면 서비스 계층에서 직접 액세스해야합니까?asp.net 컨트롤러 또는 서비스 계층의 멤버십 클래스를 호출 하시겠습니까?

한 손으로 이것은 서비스 계층에서 처리해야하는 비즈니스 로직처럼 보이기 때문에 찢겨났습니다.하지만이 서비스는 Windows 네임 스페이스가 될 수 있으므로 웹 네임 스페이스에 연결하고 싶지는 않습니다. 도로.

답변

6

답변 IoC를 사용하여 서비스 계층에서 사용하는 멤버 인터페이스를 만듭니다. 웹 사이트의 구현은 웹 네임 스페이스를 사용할 수 있습니다. 그리고 윈도우 애플 리케이션은 다른 구현을 할 수 있습니다. 종속성을 주입 할 수 있기 때문에 서비스 레이어를 변경하지 않아도됩니다 :-)

+0

이것은 나의 다음 공격 계획이 될 것입니다. 유효성을 확인해 주셔서 감사합니다. –

0

System.Web을 사용하는 것이 실제로 문제가됩니까? System.Configuration 또는 System.IO에 연결하는 것과 다릅니다. 모든 응용 프로그램은 "오프라인"인지 여부에 상관없이 응용 프로그램을 사용할 수 있습니다.

필자는 웹 응용 프로그램을 "winforms"어셈블리와 같이 더 고전적 인 어셈블리에 정기적으로 연결하여 유용한 컬렉션 개체 등에 액세스합니다.

+0

제 생각에 winforms로 변경하면 관련없는 어셈블리에 의존하지 않는 것이 더 정확할 것이라고 생각했습니다. 그것이 다소 사소한 것으로 인정된다. –

3

ASP.NET 멤버십은 웹 전용이므로 컨트롤러에서 액세스해야합니다. MHO는 서비스 계층이 웹에 하드 와이어되어서는 안된다는 것입니다. 따라서 사용자를 추가/제거하려면 컨트롤러를 통해 수행하십시오.

OTOH는 서비스 레이어에서 웹 전용이 아닌 Thread.CurrentPrincipal.Identity을 읽을 수 있지만 ASP.NET 멤버십과 완전히 호환됩니다. 따라서 현재 사용자를 확보하기 만하면 우려를 해소하지 않고도 할 수 있습니다.

관련 문제