2012-04-05 2 views
0

서비스를 한 번 구현하고 다른 호출자에게 다른 데이터 계약을 반환 할 수 있도록 WCF 서비스를 구성하는 영리한 방법이 있습니까? (예 : 모바일 클라이언트)WCF 모바일 계약을위한 전략

우리는 이미 데스크톱 애플리케이션에서 사용하는 서비스 세트를 개발했으며 이제 모바일 버전의 애플리케이션을 구축 중입니다. 문제는 반환 된 데이터 전송 개체 (DTO)가 너무 커서 모바일 응용 프로그램에 불필요한 멤버가 포함되어 있다는 것입니다. 모바일 네트워크를 통해 성능을 향상시키기 위해이를 줄이려고하지만 서비스 구현은 동일합니다.

아이디어 우리가 지금까지 가지고 :

  • false로 EmitDefault를 설정하고 우리가 여러 매핑 뭔가 을 할 수 있습니다 automapper 사용 (모바일 발신자에 대한 DTO의 모든 속성을 매핑하지 구성)
  • KnownType 특성을 사용하여 기본 모바일 유형을 확장하는 데스크톱 용 DTO 유형을 상속합니다.
  • 그냥 완전히 별도의 서비스를 구축하지만, 모든 논리는 (이미 있어야하는) 공유 비즈니스 서비스 계층에 확인하는
어떤 지침이 요구 사항을 위해 거기있을 경우

사람이 알고 있나요?

답변

0

개인적으로 구현을 별도로 유지합니다. 여러분이 지적 하듯이, 모바일과 데스크톱의 각 클라이언트에는 서로 다른 요구 사항이 있습니다. 서비스 계약을 공유 할 수 있으며 구현/서비스가 다릅니다. 이를 통해 각 클라이언트의 서비스를 전문화하고 확장, 수정 및 테스트를보다 쉽게 ​​수행 할 수 있습니다.

+0

응답을 환호하는 경우 문제는 실제로 데이터 형식을 지정하는 메서드뿐만 아니라 계약을 공유 할 수 없다는 것입니다. 같은 서비스를 두 번 구현하는 반복 된 코드가 많은 것처럼 보이지만 속성의 하위 집합이있는 다른 데이터 전송 객체 만 있으면이 상황을 피하려고했습니다. –

+0

그건 약간의 딜레마입니다. 당신이 "재산의 부분 집합을 가지고있다"고 말할 때 당신은 무엇을 의미합니까? 모바일 애플리케이션에 노출되는 데이터 계약이 다릅니 까? – stephenl

+0

예, 모바일 애플리케이션은 동일한 서비스를 사용하지만 많은 정보를 표시하지 않으므로 데이터 계약의 일부 속성 만 필요합니다. 그러나 성능상의 이유로 우리는 클라이언트에서 무시하는 것보다는 전선을 통해 지나가는 추가 데이터를 중단하고 싶습니다. –

관련 문제