メモリ使用量を改善するために、WCF で「カスタム」キャッシュを実装することは可能ですか? それとも、WCF がサポートされているのでしょうか? または、それは不可能であり、物事がどのように機能するかを十分に理解していません。
たとえば、サーバー メモリ キャッシュに大きなオブジェクトのコレクションがあります (バイナリ シリアル化後、各アイテムが最大 50 個/各アイテムが最大 7KB)。そのため、メモリに配置しても問題はありません。各オブジェクトは小さく、ヒープに配置されます。しかし、そのコレクションを WCF 経由で送信すると、コレクションはシリアル化され、サイズは約 400KB になります。現在、バイト配列はラージ オブジェクトであるため、Large Object Heap に配置されます。まったく同じコレクションが WCF を介して非常に頻繁に送信され、これにより、要求ごとに大量のバイト配列が再作成されるため、メモリが吹き飛ばされます。現在、「通信ページング」(コレクションを小さな部分に分割し、すべてのアイテムを取得するためにいくつかの要求を行う)によって解決しています。
コレクションを事前にシリアル化してから、同じバイト配列を WCF 経由で送信することはできますか? それがバイト配列の同じインスタンスになる場合、それがLOHに収まっても、コレクションごとに配列のインスタンスが1つしかなく、リクエストごとに大きな配列を再作成することでメモリが吹き飛ばされることはないと思います。
可能であれば、どこから始めて、これを実装するために何を読む必要がありますか?