2011-03-27 20 views
0

私はいくつかのサービスを実装するSOAのアプローチに従うことを試みています。私はWCFを使用しています。私は、操作で長いリストを処理するための最良のアプローチ/練習が何であるかを知りたいと思っていました。 たとえば、UIに戻るユーザーの一覧(Webではなくデスクトップクライアント)があります。 すべてのレコードを返すと、リストが大きすぎてサービスからクライアントに転送できず、多くのエラーが発生する可能性があります(メッセージサイズの超過や接続の切断など)。どのようにSOAの操作の戻り値を処理する大きなリストを処理する

このようなシナリオを処理するよく知られた方法はありますか?

どうもありがとう アレックス、

+0

アプリケーションは、呼び出しごとに完全なリストを必要としますか? –

+1

このような方法があります。結果をページ単位で返します。 –

答えて

0

あなたが送信しようとしているどのように多くのいくつかのアイデアを持っている場合は、あなただけのクライアントのapp.configをでメッセージサイズの制限を増やした後、ナットを行くことができます。しかし、あなたは何の理由もなく、50MBの顧客レコードをすべてのクライアントに送るべきではありません。

ユーザーが一度に閲覧できるのは、そのレコードの一部を取得して、ユーザーがリストをスクロールするときに、さらに多くのデータを取得できることです。あるいは、ユーザーに検索パターン(最初の数文字のように)を尋ねることができ、それらを取得するだけです。

+0

http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcfにお答えください。 – Lijo

0

クライアントはすべてのデータを必要とします(ただし、1つのメッセージが大きいと思われます)か、データの一部だけを必要としますか?

すべてのデータを必要としない場合は、フィルタリングできるサービスをユーザーに提供する方がよいでしょう。

ユーザーがすべてのデータを必要とする場合、「古典的な」ソリューションはすべてのデータを返すことです。 ただし、クライアントがWebアプリケーションのようなシンクライアントの場合は、この問題が発生する可能性があります。

サービスが(他のクライアントに適した)包括的なサービスであると想定されている場合、私はそれをカスタムサービスでラップして、各呼び出しで小さな「チャンク」を得ることができます。サービスが一般的でなく、このクライアント用にカスタム化されている場合は、データのチャンク化を可能にするために基本サービスを変更します。

一般的に「セッション指向」のサービスは良いアプローチではありませんが、アプリケーションとの対話は典型的なサービスではなく、通常は一般サービスプロバイダとサービスコンシューマ。

0

皆様のご意見をお寄せいただきありがとうございます。

私は結果をページングする必要があると思います。このサービスは一般的な使用のためのものです。これは、アプリケーションとして(APIとして)消費されることを意図しています。

したがって、チャンク/ページでデータを取得するのが最も適切な方法です。 クライアントアプリケーション(WPF)で特定の数の行を読み取ることができます。

アレックス。

関連する問題