2010-07-02 3 views
1

Microsoft의 WCF는 각 메시지 자체 웹 메서드가있는 웹 서비스를 만들 때 사용하기 쉽습니다. WCF는 모든 WSDL을 생성하며 모든 것이 쉽습니다.다른 메시지 형식을 허용하는 WCF 웹 메서드

내가 원하는 것은 여러 개의 다른 메시지를 받아들이는 하나의 웹 메서드입니다 (새 메시지 유형을 추가 할 때마다 mew 메서드를 추가하고 싶지 않습니다). 메시지 자체에는 메시지 유형을 식별하는 헤더 정보가 있습니다. 메시지 유형을 알면 나머지 메시지 구조를 알 수 있습니다.

WCF에서이 작업을 수행하는 유일한 방법은 XML 및 구문 분석으로 문자열을 받아들이는 방법입니다. 그러나 WSDL에서 다양한 메시지 유형을 게시하는 확실한 방법은 없습니다. 그래서 전체 서비스는 본질적으로 문서화되지 않았습니다.

누구나 WCF에서 사용할 기술을 알고 계십니까?

[ServiceContract] 
public interface IMessageContract 
{ 
    [OperationContract(Action = "*", ReplyAction = "*")] 
    Message ProcessRequest(Message request); 
} 

메시지 객체는 헤더에 액세스 할 수 있습니다 및 역 직렬화하는 방법이 있습니다

답변

2

당신은 행동에 *를 설정하고 메시지 객체에 걸릴함으로써 모든 메시지를 받아들이는 작업 계약을 쓸 수 있습니다 몸.

고유 한 WSDL을 내보내려면 계약 동작 또는 작업 동작에 IWsdlExportExtension을 구현하고이를 서비스에 첨부해야합니다. 이렇게하면 WsdlExporter에 액세스 할 수 있으며 직접 ContractDescription을 만들고 ExportContract를 호출하여 생성 된 WSDL에 표시되도록 할 수 있습니다.