1

WCFサービスの開発中に、メソッドパラメーターとして大きなデータを転送するという問題に直面しました(転送/メッセージのオーバーヘッドを考慮せずに、生のサイズが4 Mbを超える)。

この問題の解決策はチャンクまたはストリーミングを使用することですが、私が見たすべてのサンプルは、クライアントが使用された方法を認識しており、データの一部を送受信するために利用可能なブロックサイズを使用していることを前提としています。次のような1つのメソッドだけを呼び出すことはできません

SaveData(DataInformation info)

しかし、代わりに次のようにsmthを繰り返すラッパーメソッドを記述します

SaveDataChunk(byte[] buffer)

'SaveData'を呼び出すだけで、クライアントに対してどういうわけか透過的にすることができますか?

編集:小さな追加の質問、ただし別の質問に進む可能性がありますwcfストリーミングを使用する場合、ServiceContractのすべてのServiceOperationsは、「ストリーミングされたトランスポート全体で発生する操作は、最大で1つの入力または出力パラメーターを持つコントラクトを持つことができます」などの追加の制限を満たす必要があります?

サービスがメソッドの一部に対してのみストリーミングを必要とする場合、それを別のサービスコントラクトに移動する必要がありますか?それに対処する別の方法はありますか?

ありがとう

4

1 に答える 1

0

Chunking or streamed is transparent to the code it is set in the configuration file.

If you use Data Transfer Objects for input and output, like your DataInformation object you will only have one parameter.

Your byte[] could be a property on the DTO.

于 2010-04-23T11:23:04.347 に答える