12

WebサービスにアクセスするためにgSOAPを使用してみました(たとえば、提供されたWSDLを使用してCスタブを生成し、アプリで使用しました)。ただし、生成された.cファイルとオブジェクトファイルは非常に大きい(数メガバイト)ことがわかりました。これは、私が作業している組み込み環境では問題になります。

より単純なSOAPライブラリを知っていますか、それともezXMLのような汎用XMLジェネレーターとパーサーにフォールバックする必要がありますか?

4

4 に答える 4

5

私も最近この質問を調べました、そして私が見つけた最良のオプションはgSOAPでした、それは非常に成熟していてよくテストされています。ただし、私は非SOAPルートを使用することにしました。これは、クライアント側とサーバー側の両方にいるため、オプションでした。gSOAPを使用する前に、ライセンスを使用できることを確認してください。使用方法によっては、コードをリリースするか、支払いを行う必要がある場合があります。

もう1つのオプションはApacheAxis2/ Cですが、これは経験がありません(gSOAPと同様のサイズのフットプリントがあると思います)。彼らのクライアントAPIはここにあります。クライアントAPIのチュートリアルはこちらです。

解析されたXMLルートを使用することにした場合は、このSOの質問に興味があるかもしれません(回答を参照)。

解析されたルートのboost::spiritをチェックアウトすることもできます。C ++に慣れている場合は、小さく、高速で、特殊な(そして一般的な)パーサーを作成する機能があります(リエントラントとして記述できるため、外部の「C」インターフェイスを使用して静的オブジェクトを介して呼び出すことはコーシャです。 )。私は一般的な意味でそれを保証することができます(XMLに固有ではありません)。学習曲線は急ですが、大きな見返りがあります。

于 2010-05-17T00:32:51.893 に答える
2

これはあなたが作成しているWebサービスですか?その場合は、SOAPの代わりにRESTを使用することを検討してください。RESTははるかに単純であり、巨大なHTTP-XML-SOAP変換レイヤーを経由する代わりに、既存のテスト済みで動作中のHTTPハンドラーを使用できます。

他の人のWebサービスを利用している場合は、SOAPスキーマや応答の例を調べてください。私がこれを支持しているとは信じられませんが、スキーマが拡張可能または再帰的でない場合は、SOAPまたはXMLを解析するのではなく、単純なLALRパーサーまたは生のHTTP応答での文字列照合を使用する方がよい場合があります。これは、組み込みCでの実装がはるかに簡単です。

于 2010-05-13T18:15:17.267 に答える
1

通常、適切なSOAPライブラリを使用できないXMLを直接(主に文字列連結によって)作成することにフォールバックします。

もう1つの解決策は、JSONに切り替えることです。これは、(通常は)オーバーヘッドと要求/応答のサイズが小さいため、組み込みプログラムの方が優れている可能性があります。利用可能なSOAPWebサービスしかない場合は、サーバー上でプロキシスクリプトを使用して、JSONリクエストをSOAPリクエストに、SOAPレスポンスをJSONレスポンスに変換できます。

于 2010-05-10T11:15:19.993 に答える
1

ApacheCXFを見たことがありますか。それはいくつかのコード生成機能を持っています

* Java to WSDL
* WSDL to Java
* XSD to WSDL
* WSDL to XML
* WSDL to SOAP
* WSDL to service

コンシューマーを構築するためのより役立つガイドはここにあります。

于 2010-05-16T15:58:24.047 に答える