ここで他のトピックも探しましたが、問題の解決策はまだ見つかりませんでした。
次のことをServiceContract
想像してみてくださいOperationContracts
。これらの 1 つOperationContracts
は、「データ転送オブジェクトをダウンロードする」という単純な使用例です。
サービスは次のようになります。
...
[OperationContract]
DTO Download(strind Id)
...
クラス DTO は次のようになります。
[DataContract]
public class DTO
{
[DataMember]
public string Id;
[DataMember]
public byte[] Data;
}
もちろん非常にシンプルで問題なく動作しますが、byte[]
自分で DTO を割り当てる必要があります。
マイ コードはフレームワーク コンポーネントの一部であり、大規模なメモリ制限の下で並行して動作しています。WCF にすべての byte[] を割り当ててほしくないし、ManagedHeap にそれらすべての割り当てを再度解除させたくありません。すべての並列既存バッファーを共有して再利用する必要があります。
したがって、シリアル化が完了したら、サーバー側でバッファーを再利用します。クライアント側では、 WCF にバッファを読み込ませたいのです!
XmlObjectSerialiers
ownと ownでいくつかの解決策を試しOperationBehaviors
ましたが、まだうまくいきませんでした。
他のアイデアはありますか?