web API를 통해 로컬 시스템에서 외부 클라이언트로 제품 데이터 (예 : 제품 데이터)를 노출해야합니다. 엔티티 필드 이름 인 & 형식은 두 시스템에서 모두 다릅니다. 카테고리가 ProductCategroy에 매핑되어야하므로 유사하게 날짜 형식이 달라질 수 있습니다. 필드 형식을 둘러싼 추가적인 비즈니스 규칙이있을 수도 있습니다.웹 API에서 서로 다른 두 시스템간에 매핑 엔티티를 설계하는 방법
Automapper와 같은 매핑 도구를 사용하여 코드의 필드를 매핑하거나 사용자 정의 매퍼를 개발합니다. 필자는 필드 추가/업데이트 후에 다시 컴파일 할 필요가 없도록 구성 파일을 사용하려고합니다.
우리는 person 엔티티를 노출해야합니다. 필드 이름은 다음과 같이 다릅니다.
Person
NationalityIsoCode <--Will need mapped to--> NATIONALITY
BirthDate <--Will need mapped to--> DATEOFBIRTH
IsPersonDisabled <--Will need mapped to--> DISABLED
StartDate <--Will need mapped to--> DATEFROM
이것은 오토마터에서 매우 쉽게 처리 할 수 있습니다. 우리는 새로운 필드를 추가/제거/외부 노출해야하는 경우 해당 속성을 추가 한 후 코드를 다시 컴파일해야한다는 문제가 있습니다. 재 컴파일을 피하기 위해 이러한 속성을 구성 할 수 있기를 바랍니다.
누구나이 도구를 개발하는 데 도움이 될만한 도구/예제 또는 접근법을 제안 할 수 있습니까? 감사합니다.
엔티티가 로컬 시스템 내부에서 어떻게 반역하는지 명확하지 않으므로 일부 엔티티에 필드를 추가 할 때 이론적으로 웹 서비스의 재 컴파일을 피할 수 있습니다. 매핑의 "소스 형식"을 알지 못하면 제안을하기가 어렵습니다. – SergGr
우리의 API에 대한 클라이언트의 데이터 요청은이 데이터가 SQL Server에 저장되고 서비스 엔드 포인트를 통해 공개됩니다. Google의 미들웨어 API는 클라이언트로부터이 요청을 받고 내부 종단점을 호출합니다. 데이터가 수신 된 후'Product'와 같은 비즈니스 모델 객체는이 데이터를 임시로 보관합니다. 그런 다음 서비스 계층은 모델의 다양한 필드 주변 비즈니스 규칙에 따라이 데이터를 변환합니다. 일단 변환되면 데이터가 다시 전달됩니다. 위에서 다른 필드 이름을 가진'Person' 엔티티를 설명했습니다. – rumi
[this post] (https://lostechies.com/jimmybogard/2011/02/09/autoprojecting-linq-queries/)를보십시오. 그들은 표현 트리를 사용하여 속성 이름을 검사하는 다른 클래스에 질의를 투영합니다. 보다 구체적인 사용 : MemberInit. 그것을 편집하여 xml에서 source 및 dest 특성의 구성을로드 할 수 있습니다. 원하는 경우 원하는 wath 예제를 게시 할 수 있습니다. –