데이터를 XML로 노출하는 REST API를 구축 중입니다. 내 도메인 계층에는 API 뒤에있는 서비스 계층과 고객에게 제공 할 클라이언트 API에 의해 소비되도록 의도 된 수많은 도메인 클래스가 있습니다. 고객은 REST API와 직접 상호 작용할 수 있지만 클라이언트 API는 작업을 단순화합니다. 내 도메인 클래스를 모든 데이터 지속성 논리로 유지하고 싶지만 도메인 클래스가 IXmlSerializable을 구현하여 노출되어 노출 된 데이터를 직렬화하는 프로세스를 간소화하는 데 도움이되는지 알아 내려고 애쓰는 중이다. API 도메인 클래스에 직렬화 논리가 없도록하고 직렬화 동작을 사용하여이를 장식한다고 생각했습니다. 직렬화를 처리하는 객체 내부에 도메인 객체를 래핑합니다. 나는 물건을 그들이 필요로하는 것보다 더 복잡하게 만들고 있습니까? 내가 어떻게 이것에 접근해야하는지에 대한 어떤 생각? 감사!도메인 개체가 IXmlSerializable을 구현해야합니까?
3
A
답변
5
도메인 클래스는 지속성 또는 직렬화가 아닌 비즈니스 논리에만 관련되어야합니다.
각 도메인 클래스 중 하나에 해당하는 DTO (Data Transfer Object) 클래스 집합을 만들어야합니다. 이 클래스에는 노출하기로 결정한 도메인 클래스의 속성 만 포함됩니다. 이렇게하면 도메인 클래스가 지속성 또는 직렬화 계층을 통해 노출되지 않는 속성을 가질 수 있습니다.
DTO 개체 만 serialize 및 deserialize됩니다.
그런 다음 도메인과 DTO 개체간에 변환 할 정적 "변환"메서드를 만드는 것이 편리 할 수 있습니다.
관련 문제
- 1. 모든 Java 도메인 클래스가 인터페이스를 구현해야합니까?
- 2. XML을 (IXmlSerializable을 통해) XmlDocument에 serialize하십시오.
- 3. onRetainNonConfigurationInstance를 구현해야합니까?
- 4. C# Xml-IXmlSerializable을 사용하여 파생 클래스 직렬화
- 5. 왜 내 도메인 개체가 INotifyPropertyChanged를 구현해야하는 단점이 있습니까?
- 6. 여기에 IDisposable을 구현해야합니까?
- 7. 저장소에 UnitOfWork를 구현해야합니까?
- 8. 클래스가 직접 인터페이스를 구현해야합니까?
- 9. Androird의 뷰에서 평탄면을 구현해야합니까?
- 10. FileNotFoundError 예외를 구현해야합니까?
- 11. 언제 RMI에서 java.io.Serializable을 구현해야합니까?
- 12. BackgroundWorker를 사용하여 이벤트 기반 비동기 패턴을 구현해야합니까?
- 13. 도메인 모델의 도메인 객체 모음
- 14. SQL 객체를 저장하는 NSMutableSet에 해시를 어떻게 구현해야합니까?
- 15. 언제 사용자 인증/세션을 구현해야합니까?
- 16. 모든 클래스가 IDisposable 인터페이스를 구현해야합니까?
- 17. 비즈니스 로직 레이어를 어떻게 구현해야합니까?
- 18. 복잡한 비즈니스 로직을 어떻게 구현해야합니까?
- 19. 이 크레딧 시스템을 어떻게 구현해야합니까?
- 20. 왜 ICloneable을 C#으로 구현해야합니까?
- 21. 어디서 구현해야합니까? 보기 또는 ViewController?
- 22. SOA를 사용하여 원격 UI를 구현해야합니까?
- 23. 동적 빌더 목록을 어떻게 구현해야합니까?
- 24. POP3 프로토콜은 메일 서버에 구현해야합니까?
- 25. MVP :보기에서 발표자의 인터페이스를 구현해야합니까?
- 26. 이 specflow 단계는 어떻게 구현해야합니까?
- 27. AndEngine의 ITouchArea.convertSceneToLocalCoordinates()는 어떻게 구현해야합니까?
- 28. 유효성 검사 로직을 어디에 구현해야합니까?
- 29. C++ MVC 모델 - 어떻게 구현해야합니까?
- 30. 내 애플리케이션에 "초안"콘텐츠를 구현해야합니까?
직렬화 계층은 어떻게 생겼을까요? DTO를 XML로 출력하는 메소드가 있습니까? 또는 스트림을 가져 와서 직렬화 하시겠습니까? – csano
그것은 내가 필요한 것에 달려 있습니다. .NET에서 많은 XML 기반 API의 패턴을 따르고 'XmlWriter'를 대상으로 삼는 경향이 있습니다. 스트림에서'XmlWriter'를 반복적으로 생성하는 호출 코드를 찾으면 스트림을 사용하는 오버로드를 추가합니다. 'XmlWriter'를 만들기 위해'XPathNavigator.AppendChild'를 사용하여 호출 코드를 찾았다면'IXmlNavigable'을 받아들이는 오버로드를 작성합니다. –
감사합니다, John, 고맙습니다. – csano