gSOAP을 사용하여 웹 서비스에 액세스하려고했습니다 (예 : 제공된 WSDL을 사용하여 C 스텁을 생성 한 다음 앱에서 사용함). 그러나 생성 된 .c 및 개체 파일이 꽤 크고 (수 메가 바이트), 이는 내가 작업하는 임베디드 환경의 문제임을 발견했습니다.가벼운 gSOAP 대안이 있습니까?
간단한 SOAP 라이브러리에 대해 알고 계시거나 ezXML과 같은 일반 XML 생성기 및 구문 분석기로 전환해야합니까?
gSOAP을 사용하여 웹 서비스에 액세스하려고했습니다 (예 : 제공된 WSDL을 사용하여 C 스텁을 생성 한 다음 앱에서 사용함). 그러나 생성 된 .c 및 개체 파일이 꽤 크고 (수 메가 바이트), 이는 내가 작업하는 임베디드 환경의 문제임을 발견했습니다.가벼운 gSOAP 대안이 있습니까?
간단한 SOAP 라이브러리에 대해 알고 계시거나 ezXML과 같은 일반 XML 생성기 및 구문 분석기로 전환해야합니까?
최근에 나는이 문제에 대해서도 살펴 봤는데, 내가 찾은 최선의 선택은 gSOAP이었고, 매우 성숙하고 잘 테스트되었다. 그러나 SOAP이 아닌 경로를 선택하기로 결정했습니다. 클라이언트와 서버 양쪽에 있기 때문에 옵션이었습니다. gSOAP를 사용하기 전에 라이센스를 가지고 살 수 있는지 확인하십시오. 사용법에 따라 코드를 공개하거나 지불해야 할 수 있습니다.
또 다른 옵션은 Apache Axis2/C입니다. 경험이 없지만 gSOAP와 비슷한 크기의 풋 프린트가 있다고 생각합니다. 클라이언트 API는 here입니다. 클라이언트 API에 대한 자습서는 here입니다.
파싱 된 XML 경로로 이동하려면 this SO 질문 (답변 참조)에 관심이있을 수 있습니다.
구문 분석 된 경로에 대해 boost :: spirit도 체크 아웃 할 수 있습니다. C++에 익숙하다면 작고 빠르며 특수하고 일반적인 파서를 만들 수 있습니다 (재진입 가능하도록 작성할 수 있으므로 extern "C"인터페이스가있는 정적 객체를 통해 호출하는 것이 정결합니다.). 나는 일반적인 의미로 그것을 보증 할 수있다 (XML과 관련이 없다). 가파른 학습 곡선이지만 큰 보수.
일반적으로 우리는 좋은 SOAP 라이브러리를 사용할 수없는 XML (직접 문자열 연결)을 사용합니다.
또 다른 해결책은 JSON으로 전환하는 것일 수 있습니다. 일반적으로 JSON은 작은 오버 헤드와 요청/응답 크기를 가지므로 내장 된 프로그램에서 더 좋을 수 있습니다. SOAP WebService 만 사용할 수있는 경우 서버에서 JSON 요청을 SOAP 요청 및 SOAP 응답을 JSON 응답으로 변환하는 프록시 스크립트를 사용할 수 있습니다.
만들고있는 웹 서비스입니까? 그렇다면 SOAP 대신 REST을 사용해보십시오. REST는 훨씬 간단하며 거대한 HTTP-XML-SOAP 변환 계층을 거치지 않고 기존의 테스트되고 작동중인 HTTP 처리기를 사용할 수 있습니다.
다른 사람의 웹 서비스를 사용하는 경우 SOAP 스키마 및/또는 응답 예를 검토하십시오. 나는 이것을지지한다고 믿을 수는 없지만, 스키마가 확장 가능하거나 재귀적인 것이 아니라면 간단한 LALR 파서를 사용하거나 SOAP 또는 XML을 파싱하는 대신 원시 HTTP 응답에서 문자열을 매칭하는 것이 더 나을 것이다. 이것은 임베디드 C에서 구현하는 것이 훨씬 간단합니다.
당신은 Apache CXF을 보았습니까? 이 세대는 소비자가 here입니다 구축
* Java to WSDL
* WSDL to Java
* XSD to WSDL
* WSDL to XML
* WSDL to SOAP
* WSDL to service
더 도움이 가이드 기능을 몇 가지 코드가 있습니다.
멋지다. 그러나 Java 만 지원하는 것 같고 클라이언트 측에서 Java 런타임을 사용할 수있는 옵션이 없다. – che
SOA (Service Oriented Architecture)에 대한
돼지코끼리 솔루션에 오신 것을 환영합니다. –왜 SOAP가 여기에 책임이 있는지 알지 못합니다. SOAP과 아무 관련이없는 서비스 정의의 크기입니다. XML 또는 JSON over REST는 크기면에서 동일합니다.하지만 결국에는 모든 코드를 생성하는 편리한 데이터 바인딩없이 ** 모든 ** 직렬화를 직접 코딩해야하기 때문에 아마 더 나빠질 것입니다. 자동화 된 데이터 바인딩을 위해 gSOAP을 사용합니다. 확실한 승자입니다. 그렇지 않으면 gSOAP가 없기 때문에 프로그래머가 지루한 XML 또는 JSON API로 대규모 서비스를 코딩하는 데 오랜 시간을 소비하게되었습니다. –
gSOAP와 XML 메시지 교환을위한 꽤 표준적인 응용 프로그램이 100k 미만의 코드를 사용하고 10k 메시지/초를 실행한다는 (자세한 내용은 https://www.genivia.com/dev.html#performance를 참조하십시오). 대부분 도구로 자동 코딩되며 열심히하지 않습니다. 자동 코딩의 미래에 오신 것을 환영합니다. –