4

ViewModel을 사용하여 View에서 다른 모델 및 소스의 다른 데이터를 저장하는 것으로 이해합니다. 모델은 항상 원하는 것을 담고 있지 않기 때문입니다.MVC를 사용하는 모든 단일보기에서 ViewModels를 사용해야합니까?

모든 단일보기에 대해 ViewModel을 사용하는 것이 적절한 지 알아 내려고하고 있습니다. 내가 요구하는 이유는 일관성있는 이유 때문입니다. 모델 자체 만 필요로하는 뷰와 ViewModel을 가져야하는 뷰를 가질 수 있습니다. 모든 조회수간에 이들을 혼합하는 것이 좋습니까? 또는 모든 뷰에 ViewModel이 있어야합니까?

Entity Framework 4.1 Code First를 사용하고 있기 때문에 내 모델이 데이터베이스와 직접 관련되어 있으므로 알아 두어야 할 중요한 사항입니다.

답변

13

이것은 필수 사항은 아니지만 모범 사례입니다.

데이터베이스를 최대한 프리젠 테이션에서 분리하고 ViewModel (동일한 경우이더라도)을 사용하면 분리가 가능합니다. 또한 일을 일관되게 유지하므로 모델을 사용하지 않고 일부만 볼 수 있습니다. 이러한 유형의 디자인을 통해 조회수가 고려해야 할 모든 데이터를 생각하고 최적화를 파악하고 데이터 중복이 발생했는지 확인하고 데이터를 한 위치에 유지할 수 있는지 확인하십시오.

ViewModelView ....이 계약서 인 View을 사용하려면 X가 작동해야합니다.

조금 더 많은 작업이 끝나면 결국 갚을 수 있습니다.

+0

+1 우수 사례 + 데이터베이스와의 연결 해제는 좋은 점입니다. –

+0

좋아, 나는이 물건의 일부를 디자인하는 방법을 처음 접했을 뿐이었다. 내가 찾은 바에 따르면 ViewModels가 Demeter의 법칙을 위반하지 않도록 도울 수 있다는 것입니다. – TIHan

7

개인적으로 내 모델에서 내 의견에 전송되는 내용을 추상화하려고합니다.

요구 사항이 변경되고 뷰 모델을 사용하면 모델을 오염시키지 않고 필요한 데이터 조각을 신속하게 포함 할 수 있습니다.

이것은 모델이 프레임 워크에 의해 생성 될 때 더 많은 역할을합니다. 프레임 워크 관련 모델이 변경되면 모델의 세부 사항을 추상화하여 미래에 실제로 구현할 수 있습니다.

귀하의 의견이 귀하의 컨트롤러 및 모델과 독립적임을 기억해야합니다. 뷰 모델을 활용하면 뷰가 모델 자체에 바인딩 될 때보 다 컨트롤러 메서드에서 뷰를보다 쉽게 ​​재사용 할 수 있습니다.

+1

+1 또한 DB 모델을 오염시키지 않아도된다는 좋은 지적을합니다. – Kelsey

관련 문제