1

画像のサムネイルの画面を表示するアプリケーションがあります。各画像は約80kで、データベースに保存されています。応答時間を合理的に保つために、アプリケーションは最初に起動したときにプレースホルダーイメージを表示し、後でサーバーからイメージをダウンロードします。一度に約40枚の画像が画面に表示されることを期待しているので、それが私のバッチサイズです。これらの画像をクライアントに提供するための最良の方法は何ですか?私は2つのオプションを念頭に置いています。

  1. Imagesデータベーステーブルをクライアントに公開するADO.NETデータサービスを作成します。クライアントは、一度に1つずつ非同期で画像を要求し、サーバーから戻ってきたときに画像を表示できます。私はこのソリューションを実装しましたが、うまくいくようです。速度はそれほど速くなく、一度に3つの画像をリクエストすることで、Httpパイプをより有効に活用できると思います。

  2. サーバー上にHttpModuleを作成し、/ Images / 1.jpgのようなリクエストを探してから、データベースを読み取り、リクエストされたデータを返します。クライアント側では、ソースがサーバー上の仮想URLを指す多くのImageオブジェクトを持つことができます。私の理論では、Silverlightに処理する多くのURLを与えるだけで、オプション1のコードよりも効率的に画像を転送できる可能性があります。

これらの方法のどちらかがより効率的でしょうか、それともこれを行うための別の手法がありますか?ありがとう!

4

3 に答える 3

2

それがより効率的かどうかはわかりませんが、HTTPハンドラー(ashx)を使用して非常によく似たタスクを実行しました。ハンドラーは、URI(画像ID)のパラメーターに基づいてデータベースから画像をプルし、Silverlightは、ImageコントロールのSourceプロパティを、必要な特定のIDを持つハンドラーのURIに設定することにより、非同期で画像をフェッチします。クエリ文字列。次に、ImageコントロールはItemsControl内にあり、複数の画像を表示できます。

于 2009-04-24T14:33:10.323 に答える
0

非常によく似た処理を行っており、ASPXページを使用して、画像識別子のクエリパラメーターを使用してサーバーを提供しています。画像もキャッシュしており、ASPXページはキャッシュされた値が存在する場合はそれを使用します。そうでない場合は、データストアからプルしてキャッシュし、送信します。それは私たちにとって本当にうまくいっています。

于 2009-04-24T14:32:47.453 に答える
0

Deep Zoomの使用について調べましたか? プログレッシブ イメージの読み込みに関しては非常に効率的であり、イメージが完全に読み込まれると、より優れたユーザー エクスペリエンスが得られます。

例:

于 2009-04-25T14:42:17.373 に答える