2012-07-02 4 views
0

에 대해 DataContracts를 정의하는 최선의 방법에 대한 지침이 필요합니다. 1. 원시 데이터를 업로드 할 웹 메서드가 두 개 있습니다. 2.이 데이터는 특정 계산을위한 서버. 즉, 항목은 계산 집합을 가지고 있습니다. 3. 항목 엔티티에 계산 엔티티 집합이있는 것과 같은 엔티티 설계가 있습니다. 컬렉션이 DataMember로 표시되어 있지 않습니다. 4. GetItemDetails 메서드는 계산 컬렉션과 함께 각 항목을 반환합니다. 5. Item은 내 비즈니스 로직 작업에 사용되는 주요 주체이지만 계산 컬렉션은 서버 측에서 생성되어 수요에 따라 반환되어야하는 데이터이므로 Upload 및 GetItemDetails 작업에 대해 2 개의 differet DataContracts를 정의하는 결과가되었습니다. (GetItemDetails). 데이터를 처리하기 때문에 계산 컬렉션에 입력이 없으므로 업로드시 공개하는 것은 적절하지 않은 것처럼 보입니다. 6. GetItemDetails 메서드에서 'Item'엔티티를 사용하고 resp를 사용하여 항목 컬렉션을로드합니다. 계산 컬렉션을 생성 한 다음이를 항목 및 컬렉션이 모두 공개 된 내 출력 datacontract로 변환합니다.WCF 입력/출력 데이터 정의 정의 지침

이 접근법은 동일한 엔터티 표현에 대해 2 개의 데이터 계약을 유지해야한다는 단점이 있습니다. GetItemDetails 메서드에 대한 Calculation 컬렉션에 DataMember 특성을 동적으로 추가하는 옵션을 성공적으로 검색하려고했습니다. 시나리오가 명확하면 좋겠습니다. 내 질문은 이러한 시나리오에서 데이터 계약을 정의하는 가장 좋은 방법은 무엇이며 클라이언트는 업로드 및 가져 오기에 대해 동일한 entiy를 나타내는 두 개의 다른 프록시 클래스를 처리 할 필요가 없습니다. 사용자가 내 업로드 작업에 제공 할 것으로 예상되지 않더라도 업로드 계약이 Calculation 컬렉션을 공개하고 (그리고 나서 Calculation 컬렉션을 무시하는) 동일한 엔티티가 둘 다에 사용되는 경우 올바른 솔루션일까요?

감사의 말 :

답변

0

KnownType WCF 속성을 확인해야합니다. 이렇게하면 받아 들일 수있는 추가 객체를 지정할 수 있습니다.

KnownType attribute on MSDN

또 다른 옵션은 상속을 사용하고 최소 속성과 기본 클래스에서 상속보다 강력한 클래스가 기본 클래스를 가지고있다. 중복 엔티티 객체를 둘러 볼 수는 없지만 최소한 업 캐스팅/다운 캐스팅은 작동 할 수 있습니다.

다른 옵션은 별도의 개체를 갖는 것입니다. 클라이언트는 무엇이 설정되어야하는지 구체적으로 알 것입니다. 짐작할만한 일은 없습니다. 당신이 필요로하는 것을 드러내십시오. 나는이 옵션을 향하여 대부분의 또는 상속 옵션에 기대다.