제 3 자와 통합되는 SOAP 애플리케이션을 개발 중입니다. 이 제 3 자의 WSDL은 매우 이상하다고 생각합니다. 나는 SOAP을 처음 사용하기 때문에 깨지지 않는 경우 수정하도록 요청하고 싶지 않습니다. 다음은 기술적 인면에서 틀림없이 올바른 문서 일 것이라고 확신하지만 (필자가 제목에 "우수 사례"를 쓴 이유) 잘못된 점을 생각해 보았습니다. 또한 gSOAP을 SOAP 라이브러리로 사용하고 있는데, 이러한 것들 중 일부는 이상하다고 생각할 수 있습니다. (나는 일반적으로 SOAP보다 gSOAP에 더 익숙합니다.)WSDL 베스트 프랙티스
동일한 WSDL에서 SOAP 1.1 및 SOAP 1.2에 대해 지정된 인터페이스가 있습니다. 이로 인해 gSOAP은 필요한만큼 두 배의 클래스를 생성합니다. 1.2를 사용하기 때문에.
모든 이름 공간은
http://tempuri.org
입니다. 그건 그렇게해서는 안된다. 그렇지?RPC 호출을 정의하더라도 WSDL은 문서 형식을 사용합니다. gSOAP은 C++ 형식의 문서 형식 매개 변수를 사용하는 메서드를 생성하지 않으므로 RPC 형식으로 전환하도록 요청하고 있습니다. 대신 모든 API 함수의 입력 및 응답 데이터에 대한 새 클래스를 만듭니다. 내가 고칠 수없는 경우 gSOAP 물건 주위에 다른 API를 제공하기 위해 다른 레이어를 작성해야 할 것이다. 또한, AFAICT, 앞뒤로 이동하는 XML은 RPC로 전환 한 경우와 정확히 동일하므로 어려울 것이라고 생각하지 않습니다.
요소가 minOccurs = 0인데 아직 요청하지 않고 요청을 제출할 때 오류가 반환되어 필요하다는 것을 나타냅니다 (때때로 null 포인터 예외의 흔적을 스택하는 경우조차도). 필요한 경우 minOccurs = 1로 지정해야합니다. 맞습니까?
거의 모든 웹 서비스 함수는 성공 (실제로는 부울)과 오류 메시지 문자열을 나타내는 정수를 포함하는 응답을 지정합니다. 그들이 SOAP 결함을 사용해야합니까? gSOAP을 사용하면 오류 메시지를 쉽게 알아낼 수 있기 때문에 (오류 메시지를 간단하게 인쇄 할 수 있습니다) 응용 프로그램에서 처리하는 것이 더 쉬울 것이라고 생각합니다.
물론 제 3 자 회사가 WSDL을 변경하게 될 것이라는 희망은 없습니다. 적어도 뭔가를 배울거야 ... 내가 아는 한 모두, 이것들 중 어느 것도 틀리거나 의문의 여지가 없다. 당신의 도움을 주셔서 감사합니다.
"처음에는 아무도 실제로 WSDL을 작성하지 않습니다."- 도구로 생성 된 사람 "--- wsdl 및 xsd 파일이 편집자와 작성되어 생성되지 않은 * 두 개의 프로젝트에 참여한 사람으로서, 그 정면에 틀린가 또는 다만 심하게 과장이다. 그리고 아니요, 우리는 그 wsdls의 구현과 클라이언트 사용에 문제가 없었습니다 ... 하나의 프로젝트에는 gSOAP를 사용하는 클라이언트가 포함되었습니다. SOAPUI를 사용하여 동의했습니다. – whaley
"우선 아무도 실제로 WSDL을 쓰지 않습니다." 음 ... 그건 옳지 않습니다. 저는 여러 회사의 여러 통합 프로젝트에서 일했으며 우리는 언제나 손으로 WSDL을 작성했습니다. 어떤 도구도 도움이되지 않았습니다. 그리고 나는 통신 회사와 주 (state) 지역의 대기업에 대해서 이야기하고 있습니다. – jfajunior