XML-RPC:64ビット値を処理する最良の方法は何ですか?
質問
したがって、公式の XML-RPC 標準は 64 ビット値をサポートしていません。しかし現代では、64 ビット値がますます一般的になってきています。
これらをどのように処理しますか?最も一般的な XML-RPC 拡張子はどれですか?どのような言語バインディングがありますか?私は特に Python と C++ に興味がありますが、あらゆる情報を歓迎します。
解決
確かに一部のライブラリは 64 ビット拡張をサポートしていますが、標準はないようです。 xmlrpc-c, たとえば、いわゆる i8 がありますが、Python では動作しません (少なくともデフォルトでは)。
次のいずれかを推奨します。
- 整数を文字列に手動で変換し、そのまま送信します。XMLRPC はとにかく文字列に変換するので、これは合理的だと思います。
- それを 2 つの 32 ビット整数に分割し、そのまま送信します。
他のヒント
データ型として「i8」を使用することがますます一般的になってきています。最近これを Perl XML-RPC モジュールに追加しました (http://metacpan.org/pod/RPC::XML) Java で書かれたサーバーを操作するためにそれを必要とする大規模なグループからのリクエストに応えたものです。サーバーがどのツールキットを使用したかはわかりませんが、すでに i8 をタイプとして受け入れていました。
私がまだ対処する必要があると感じていることの 1 つは、「i4」の「int」エイリアスが、現在 i4 と同様に i8 も受け入れる必要があるかどうかです。さらに言えば、i8 として入力されたパラメータが、i4 として入力された入力を静かに受け入れる必要がある場合。XML-RPC は、SOAP をすべてカバーする必要がない場合に便利な、軽量でオーバーヘッドの低いプロトコルとして大きな可能性を秘めていますが、REST と SOAP の間の宗教戦争では見落とされることがよくあります。
XML-RPC は、元の作成者に許可を得ることができれば、更新と改訂が必要です...
XMLRPC をどのように拡張できるかについては何も知りませんが、見つけました。 このメール その主題について:
XML -RPCでは、すべてが文字列として送信されているため、明示的な変換関数を呼び出すための追加の不器用さを除いて、選択がそれほど悪いとは思いません。
ただし、XML-RPCには、2 ** 32を超える整数を表すことができるデータ型がありません。精度を失うことを受け入れることができる場合は、ダブルを使用できます(ただし、送信者に明示的に変換する必要があります)。
XML-RPC.NET は、リリース 2.5.0 (2010 年 9 月 5 日) 以降、<i8> をサポートしています。