私は RestSharp を使用しており、シリアル化には Json.NET を使用しています (こちらを参照)。
Json.NET は BSON をサポートしています。私の要求にはバイナリ データの巨大なブロックが含まれているため、これによりアプリケーションが劇的に高速化されると思います。ただし、私が知る限り、RestSharp には BSON のサポートが組み込まれていないようです。
Json.NET の使用は、RestSharp のカスタム シリアライザーとして実装されているため、一見すると、そのカスタム シリアライザーを変更して BSON を使用できるように見えます。しかし、インターフェースのSerialize
メソッドは- を返しますが、これは (私が推測するに) BSON には不向きです。したがって、この変更を実装するには、RestSharp にさらに大きな変更を加える必要があると思います。RestSharp.Serializers.ISerializer
string
誰かがこれを行う方法を考え出しましたか?
更新: RestSharp ソースを調べたところRestRequest.AddBody
、オブジェクトを受け取り、それを要求本文にシリアル化するメソッドが最終的にRequest.AddParameter
(シリアル化されたオブジェクト データとパラメーター type を使用してRequestBody
) を呼び出すことがわかりました。
オブジェクトを BSON にシリアライズしてRequest.AddParameter
直接呼び出すことができるかもしれないと考えました。ただし、RestSharp が を実行するとRestRequest
、要求コンテンツが UTF-8 でエンコードされているという前提が他にも組み込まれているため、バイナリ コンテンツを要求に入れることができません。
したがって、このハックは機能しないようです-RestSharp自体にいくつかの変更を加える必要があり、私はその仕事の担当者ではありません...
更新 2: デバッガーを使用して、ボディ エンコーディングの問題を克服するために RestSharp をどの程度変更する必要があるかを調べることにしたので、RestSharp の NuGet バージョンを交換し、RestSharp プロジェクトを解決。そして...うまくいきました。
ここ数か月で、NuGet バージョンにはまだ含まれていない変更が RestSharp にあったことがわかりました。
したがって、既に BSON でエンコードされたオブジェクトを使用して渡すことができるAddParameter
ようになり、RestSharp は問題なくそれをサーバーに送信します。