DataContact/DataMember 특성을 사용하여 WCF 서비스를 노출하면이 서비스에 대한 다른 프로젝트에서 만든 각 서비스 참조는 DataContract/DataMember 특성 (IExtensibleDataObject 인터페이스 구현 등)이있는 클래스를 생성합니다.WCF 프록시 생성 클라이언트에서 사용 된 serializer는 무엇이 결정됩니까?
다른 프로젝트에서는 WSDL이 WCF에 의해 생성되지 않은 SOAP 서비스를 사용해야하지만 모르는 다른 도구에서 동작을 변경할 수 없습니다.
내 문제는 내는 svcutil 프록시에 의해 생성 된 코드는 조금 덜 유연하다는 것이다 :
- 클래스 대신 DataContract의 직렬화 속성을 사용 (GeneratedCode 속성이 시스템 대신에서 System.Xml의 사용을 지정합니다 .Runtime.Serialization)
- IExtensibleDataObject 직렬화가 초래되는
- OptionalField 특성이 XMLELEMENT
- 의 순서가 고정 를 사용하지 않는 구현되지 않은 경우에는 새로운 XS를 실패 요소에 삽입 wsdl xs : sequence의 중간 ...
내가 사용하는 svcutil 도구/wsdl에서 이런 식으로 코드를 생성해야합니까?
내 경우에는 WCF 또는 asmx 서비스를 사용하지 않습니다. svcutil.exe는 well-formed wsdl에 대한 클라이언트 프록시를 생성 할 수 있습니다 (사용 된 구문에 대한 일부 제한이 있지만 어쨌든). 그래서 wsdl에서 datacontract 또는 xml serialization을 사용할지 결정합니다. 이 문서에 대한 msdn 어딘가에 있나요? –
답변을 업데이트했습니다. – VJAI