2009-04-24 11 views
1

私は、画像サムネイルの画面を表示するアプリケーションを持っています。各画像は約80kで、データベースに格納されています。応答時間を妥当なものに保つために、アプリケーションは最初に起動したときにプレースホルダ画像を表示し、後でサーバから画像をダウンロードします。私は一度に画面上に約40の画像を表示することを期待しているので、それは私のバッチサイズです。これらのイメージをクライアントに提供する最良の方法は何ですか?私は2つの選択肢を考えている。Silverlightクライアントに画像を転送する最も効率的な方法

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

  2. サーバー上に/Images/1.jpgのような要求を探して、データベースを読み取り、要求されたデータを返すHttpModuleを作成します。クライアント側では、ソースがサーバ上の仮想URLを指す多くのImageオブジェクトを持つことができます。私の理論はそれに対処するためのSilverlightに多くのURLを与えることによって、これらのいずれかの方法は、より効率的であるオプション1

に私のコードよりも効率的に画像を転送することができるかもしれないということですか、別の技術がありますこれを行うためには?ありがとう!

答えて

2

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

0

私たちは非常に似たようなことをしており、ASPXページを使用してイメージ識別子のクエリパラメータを使用してサーバーを構築しています。また、イメージをキャッシュしています.ASXページには、キャッシュされた値が存在する場合はその値が使用されます。そうでない場合は、データストアからデータを取り出し、キャッシュして送信します。それは本当にうまくいっています。

+0

キャッシングは、aspxページにいくつかのコードを書いて関与していますか?それはどのように機能するのですか? –

+0

私たちは独自のキャッシングを行いますが、VelocityやMemCachedのようなキャッシングフレームワークを考えるかもしれません –

0

Deep Zoomを使用しましたか?プログレッシブ画像の読み込みは非常に効率的で、画像が完全に読み込まれたときにはより良いユーザーエクスペリエンスを提供します。

例:

+0

素晴らしいアイデア!私はv.nextのためにそれを試みます –

関連する問題