2010-12-14 4 views
1

대형 ASP.NET MVC 응용 프로그램 용 API를 만들고 싶습니다. 이 응용 프로그램은 모든 뷰에 대해 강력한 형식의 뷰 모델을 사용합니다. API의 가장 중요한 작업은 iPhone의 Objective C와 같은 다른 플랫폼에서 웹 사이트의 기능을 활성화하는 것입니다.ASP.NET MVC에서 API 용 ViewModels 재사용?

이제 ViewModels 및 기존 컨트롤러 액션을 처음부터 재사용 할 생각이었습니다. viewModel은 뷰 대신 컨트롤러에 의해 JSON 또는 Ajax 결과로 반환됩니다.

그러나 뷰 모델에는 항상 API에 유용하지는 않은 합성 정보가 많기 때문에 이에 대한 논의가있었습니다. 예를 들어, 일반적인 API 함수는 GetRanking()이 될 수 있습니다. Ranking() 액션에 속한 뷰 모델에는 실제로 현재 사용자의 이름과 순위에 대한 설명과 같은 더 많은 데이터가 있습니다.

이렇게 접근하는 가장 좋은 방법은 무엇입니까? API에 대해 별도의 작업을 작성하고 직렬화 된 도메인 객체를 반환하거나 현재 작업 및 뷰 모델을 재사용하고 불필요한 데이터를 무시하십시오.

답변

0

또는 세 번째 옵션 : 서비스 모델 집합 만들기. 장기적으로, 분리 된 ViewModels를 만드는 데있어서 큰 승리는보기가되며 엔터티는 독립적으로 변경할 수 있습니다. 서비스에는 버전 관리와 같은 몇 가지 고유 한 차원이 있으며, 다른 곳에서는 계정을하지 않아도됩니다. 어쨌든, 서비스는 거의 항상 모델을 소유 할 가치가 있습니다.

이제 ViewModels이 해당 역할의 데이터 전송 측면에 대한 서비스 모델을 사용/사용 가능하다고 주장 할 수 있습니다. 특히 약간의 UI에 영향을받지 않는 경향이있는 업데이트의 경우.

+0

컨트롤러 작업을 다시 사용 하시겠습니까? 아니면 API에 대해 별도의 작업을 만드시겠습니까? – Randam

+0

솔직히 말해서 약간의 전술적 결정입니다. 즉, 귀하의 컨트롤러는 도메인 마스트에서 실제 마술이 일어나야하므로 간단하고 값 싸고 쓸모가 있어야합니다. 따라서 서비스 컨트롤러를 별도로 설정해야합니다. –

관련 문제