2012-10-08 7 views
0

요청 유형을 기반으로 요청 및 프로세스를 허용하는 WCF 서비스를 개발했습니다. 그러나, 나는 무엇보다도 디자인 문제에 대해 더 많이 생각해 왔습니다. 대부분의 요청과 응답은 매우 빠르고 간단하며 소량의 데이터를 송수신하므로 표준 버퍼 전송 모드에 적합합니다. 그러나 서비스에서 클라이언트로 많은 양의 데이터를 잠재적으로 반환 할 수있는 일부 요청 유형이 있습니다.이 경우 MaxRecievedMessageSize를 매우 높게 설정하거나 스트리밍 된 전송 모드로 전환해야합니다.메시지 계약을 통해 데이터 계약을 연장 할 수 있습니까?

저는 개별 요청을 설정하고 스트리밍 된 요청에 대한 새로운 계약/바인딩/등을 만드는 것이 올바른 방향임을 확신했습니다. 이제는 요청 객체 (요청에 대한 내용, 유형 등)를 전달하려는 도전에 직면하고 있으며 이것은 데이터 계약입니다. 그러나 스트리밍 전송 모드로 변환하려고하면 메시지 계약을 전달하는 제한이 있습니다.

데이터 계약을 연장하고 확장 클래스를 메시지 계약으로 호출하여 사용할 수 있습니까? 예를 들어 :

[DataContract]  
public class RequestObject 

[MessageContract] 
ExtendedRequestObject : RequestObject 

나는이 길을 갈 수없는 경우, 아키텍처는 여전히 의미가 있는지 확인하는 가장 좋은 방법은 무엇입니까? 내가 항상 하나의 객체를 전달해야하고 여러 매개 변수가있는 메소드/함수를 가지지 않고 그 객체에 대한 유효성 검사를 할 수 있다는 점이 마음에 들었습니다.

+0

내가 직접 질문에 대한 답이 '아니오 99.99 % 확신, 나는 MessageContract와 DataContract를 확장 할 수 없습니다. – Tada

답변

2

소스를 찾을 수 없지만 이상하고 불가능한 것처럼 보입니다. 기본 클래스의 DataMembers는 어떻게 처리됩니까? 통합에 대해 어떻게

그리고 상속이 필요없는 것 같습니다 :

[MessageContract] 
class ExtendedRequestObject 
{ 
    [MessageBodyMember] RequestObject Request; 

} 
+0

나는 집성을 좋아한다. Body/Headers가있는 MessageContract를 사용하면 문제가 없을 것입니다. 감사! – Tada

관련 문제