2011-10-05 3 views
2

ASP.NET MVC의 "모델"부분을 재사용 가능한 어셈블리로 캡슐화하는 데있어 수용 가능한/예상되는 최상의 방법이 있습니까?ASP.NET MVC 모델을 재사용 가능한 어셈블리로 캡슐화

기술 연습으로 다른 시스템 내에서 동일한 비즈니스/지속성 계층을 사용하고 싶습니다. 예를 들어 동일한 어셈블리를 ASP.NET MVC 앱과 기존 Windows 서비스로 컴파일합니다.

내 생각은 내 모델 (및 EntityFramework/DbContext/etc)을 별도의 어셈블리로 구현하는 것입니다. 그런 다음 내 MVC 프로젝트는 "모델"폴더를 완전히 생략하고 내 컨트롤러는 "모델 어셈블리"의 코드를 참조합니다. 필자는 항상 뷰의 "대상"으로 실제 비즈니스 객체보다 ViewModels을 선호 했으므로 Model 객체 대신 ViewModel 객체에 강력하게 유형화 된 모든 뷰를 갖게되어 매우 기쁩니다.

  1. 이 방법이 일반적인 방법입니까?
  2. ASP.NET MVC의 "구성 오버 규칙"교리를 위반합니까?
  3. 이 방법을 사용하면 특정 MVC 혜택을 얻을 수 있습니까?
  4. 이 접근법에 대한 다른 불쾌한 함정이 있습니까?

나는 ASP.NET MVC에서 ASP.NET, C# 및 Windows 서비스의 비교적 편안한 베테랑이지만 초보자입니다. 이 질문이 중복되는 경우 사과드립니다. 대부분의 "재사용 가능한 MVC"질문은 UI 구성 요소에 초점을 맞추고 전체 비즈니스/지속성 "계층"에 초점을 맞추지는 않습니다. 항상 그렇듯이 미리 통찰력을 주셔서 감사합니다!

답변

2

예, 많은 시스템이 개발 된 것을 보았습니다. 결국 당신은 다른 어떤 것과 마찬가지로 REST-over-WCF-on-IIS로도 잘 작동 할 수있는 "비즈니스 계층"으로 끝납니다.

아니요, 여러 프로젝트를 유지 관리하는 데 약간의 복잡성이 추가되지만, 제가 아는 모든 것을 잃지는 않습니다.

다른 이점은 컨트롤러와 모델 레이어가 더 견고하며 둘 사이의 종속성 삽입을 사용할 수 있기 때문입니다.

+0

한 명 이상의 표본 크기를 기대했습니다. ;) 그럼에도 불구하고, 나는 그것이 일반적으로 받아 들일만한 트랙에있는 것처럼 들리는 것을 듣게되어 기쁩니다. 감사! – mikemanne

+0

이 패턴을 따르는 많은 프레임 워크가 있습니다 (예 : S # arpArchitecture). –

관련 문제