저는 ASP.NET WebAPI를 사용하여 RESTful API를 작성하고 있으며 다른 API 버전을 지원해야합니다. URL (api/v1/style) 또는 사용자 정의 HTTP 헤더를 기반으로 컨트롤러 선택을 구현하는 방법을 알고 있습니다. 이 방법을 사용하면 서로 다른 API 버전의 서로 다른 네임 스페이스에 서로 다른 컨트롤러를 갖게 될 것입니다. 그러나 나는 생각할 또 다른 문제가있다. 내 모델이 v1과 v2 사이에서 변경되면 어떻게 될까요? v1 API가 직렬화 된 출력을 변경하지 못하게하려면 어떻게해야합니까? Entity Framework Code First 접근법을 사용하기 때문에 모델 변경은 쉽게 구현할 수 있지만 내 v1 API가 손상 될 수 있습니다. 각 API 버전의 일관성을 유지하는 최선의 방법은 무엇입니까?버전 관리 WebAPI - 모델 변경
0
A
답변
2
Entity Framework와 관련이 없습니다. EF 모델을 직접 직렬화하지 않기를 바랍니다. 그렇게한다면 정말로 문제가 생깁니다.
대신보기 모델을 사용해야합니다. 이러한 뷰 모델은 컨트롤러 버전 관리와 동일한 방식으로 버전을 지정할 수 있습니다. 당신은 contollers의 다른 버전에 대한 서로 다른보기 모델을해야합니다.
이렇게하면 전선을 통해 직렬화되는 것을 완벽하게 제어 할 수 있습니다. 이제 EF 모델을 원하는만큼 내부적으로 변경할 수 있습니다. 그리고 언젠가는 EF를 떨어 뜨리기로 결정할 수도 있습니다 (블록에 새로운 아이가있을 수도 있습니다). 그리고 완전히 다른 것으로 교체하십시오.이 변경 사항은 웹 API 전체에 반영되지 않으며 노출되는 것은 무엇입니까? 외부는 간단히보기 모델을 노출하고 있기 때문입니다.
관련 문제
- 1. 도메인 모델 버전 관리
- 2. 장고 관리 도구 새 버전 모델 변경
- 3. JSAP에서 WebAPI 모델 바인딩
- 4. 버전 관리 모델 분야에서 무엇을 했습니까?
- 5. 핵심 데이터 모델 버전 관리 문제
- 6. 모델 인스턴스 버전 관리? 이전 기록을 추적하십시오
- 7. XCode 4 데이터 모델 버전 관리 버그?
- 8. iPhone - 핵심 날짜 모델 버전 관리 - 사실 이후 버전 관리? project.pbxproj 문제?
- 9. WebApi 수신 모델
- 10. 속성 데이터 유형 변경 - CoreData 버전 관리
- 11. Windows Phone 앱의 버전 변경 관리
- 12. 주요 변경 사항에 대한 버전 관리
- 13. 동기화 스키마 버전 관리
- 14. 버전 정보 코어 데이터 모델
- 15. CouchDB를 버전 관리 전략
- 16. 데이터베이스 버전 관리
- 17. 버전 관리 연습
- 18. ASP.NET MVC 면도기에서 모델 변경 관리
- 19. 버전 관리 (공백)
- 20. 소프트웨어 버전 관리 표준
- 21. 데이터베이스 및 버전 관리 시스템
- 22. CouchDB 문서 버전 관리
- 23. 버전 관리 생산 환경
- 24. Rails PaperTrail 버전 관리
- 25. JSON 파일 버전 관리
- 26. 데이터베이스 공유/버전 관리
- 27. WCF 버전 관리 Enums
- 28. XML 버전 관리 알고리즘
- 29. Papertrail 버전 관리 및 최신 버전 저장?
- 30. 민첩한 버전 관리?
그냥 POCO 클래스 인 EF 모델을 직렬화합니다. 최대 절전 모드로 전환 할 때 이러한 클래스를 사용할 수 있습니다. 예를 들어, 일부 매핑을 연결해야합니다. –
http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-part- 1 이 자습서에서도 문제가없는 것 같습니다. –
그렇습니다. API를 사용하기 때문에 모든 클라이언트를 무력화시키고있는 엔티티에 손을 대는 순간은 예외입니다. 그리고 그것이 바로 당신이이 질문을 한 이유입니다. 내 대답은 매우 간단합니다 : ** 결코 도메인 엔티티를 직렬화하지 마십시오 **. ** 항상 **보기 모델을 사용하십시오. 여기에서 링크하는 자습서는 웹 API를 시작하는 방법에 대한 기본 예제 일뿐입니다. 실제 응용 프로그램을 디자인 할 때는 고려해야 할 사항이 많으며 * 시작하기 * 자습서에서 다룰 내용이 많습니다. 그 중 하나가 버전 관리입니다. –