0

リストがあり、すべてのメッセージに画像とリストがあり、すべてのメッセージの画像と添付ファイルの BLOB URL を更新する必要があります

解決策 1 : 画像の UploadBlob を呼び出し、添付ファイルごとに UploadBlob を呼び出してから、DB 内のメッセージ オブジェクトを Blob url で更新します。

ソリューション 2 画像とすべての添付ファイルを一度にアップロードし、並列アップロードを使用して BLOB URl を更新し、メッセージを DB に保存します。すべてのメッセージには一意の ID があるため、BLOB にアップロードするときに、この ID を設定して一意の BLOB URL を作成できます。したがって、メッセージを更新するには、メッセージ ID を含む BLOB URL にメッセージ ID をマップする必要があります

コードの可読性とパフォーマンスを向上させる他のソリューションがある場合は、plsアドバイス

4

2 に答える 2

1

質問を完全に理解しているかどうかはわかりませんが...各メッセージには画像と0個以上の添付ファイルがあり、メッセージオブジェクトには画像と関連する添付ファイルへの参照が必要です。

それが正しい解釈である場合: 各アップロードは、独自の blob になります。上記の解決策 2 を使用しても、すべてのアップロード後に複数の BLOB URI が作成されます。

アップロードを行うデスクトップ アプリなのか、エンド ユーザーから画像や添付ファイルを取得して BLOB にアップロードする Web アプリなのか、アプリケーションのどこにこれが当てはまるのかわかりません (データベース レコードが書き込まれます)。 )。後者の場合:次のことをお勧めします。

  1. メッセージ レコードを書き込みます (おそらく、何らかの種類の一意の ID が返されます)。
  2. 各画像または添付ファイルを受信したら、BLOB ストレージにアップロードし、結果の URI でメッセージを更新します

並列タスクを開始して、各画像または添付ファイルをアップロードし、メッセージ レコードを更新できます。帯域幅がある限り、並列アップロードは帯域幅をより有効に活用できます。各ストレージ アカウントには、スループットの上限があります (1 秒あたり 5,000 トランザクション、および 3Gbps)。

メッセージ更新用のキューを導入したり、CQRS パターンを使用したりするなど、別のアプローチも確かに存在します。決定の一部は、アプリのアーキテクチャに基づいて行われます (前述したように、これがデスクトップ アプリで実行されているかどうかはわかりません)。アップロード. blob ストレージ、またはアップロードを実行する Web サーバー)。

于 2012-05-25T02:20:24.147 に答える
0

私の理解に基づいて、ソリューション2の方が優れているようです。

タスク並列ライブラリ ( http://msdn.microsoft.com/en-us/library/dd460717.aspx ) を使用して、複数のファイルを並列にアップロードできます。非同期パターンを使用することもできます (Begin/End メソッドを呼び出します)。ただし、同時にアップロードするファイルが多すぎない方がよいでしょう。保留中の Web 要求が多すぎると、そのうちのいくつかが失敗する可能性があります。たとえば、10 個のタスクを作成し、1 つが完了するのを待ってから 11 個目を作成することを選択できます。

よろしくお願いします、

明徐。

于 2012-05-25T08:20:04.317 に答える