1

データの永続性のために RESTful WCF サービス アプリケーションを使用する既存の ASP.NET MVC 2 クライアント アプリケーションがあります。既存のドメイン オブジェクト (製品) の 1 つに添付/関連付けられたイメージをサポートするという新しい要件が発生しました。

現在、クライアント アプリケーションはサービスを呼び出して、(軽量の ProductInfo オブジェクトのリストの形式で) Products のリストを取得し、そのリストをユーザーに表示します。ユーザーがリスト内の項目をクリックすると、クライアントはサービスを呼び出して、ユーザーによる編集をサポートする特定の Product オブジェクトを取得します。保存すると、クライアントは更新された製品を永続化のためにサービスに送信します。

新しい要件では、関連付けられた画像をリストに表示し、製品の編集時にユーザーが画像を設定/置換できるようにする必要があります。現在の画像は製品エディターにも表示されます。各製品に関連付けられる画像は 1 つのみで、画像は必須です。

  1. Stream はクライアントとサーバー間で画像データを渡す最良の方法ですか、それとも Byte[] を使用する必要がありますか?

  2. リストについては、Stream (または Byte[]) 型の ProductInfo に新しい Image プロパティを追加するか、画像をダウンロードするためにサービスを個別に呼び出す必要がありますか?

  3. 同様に、編集の場合、画像データを他のプロパティとして扱い、画像プロパティを使用してネットワーク上でやり取りするだけですか?

4

2 に答える 2

1

Stream はクライアントとサーバー間で画像データを渡す最良の方法ですか、それとも Byte[] を使用する必要がありますか?

これは、使用しているバインディングによって異なりますが、SOAP では、最終的にシリアライザーがネットワーク経由で送信する必要があるときに Stream を選択した場合でも、base64 でエンコードされたバイト配列になります。

リストについては、Stream (または Byte[]) 型の ProductInfo に新しい Image プロパティを追加するか、画像をダウンロードするためにサービスを個別に呼び出す必要がありますか?

製品IDを指定して各画像をダウンロードするために、個別の呼び出しを行います。これにより、帯域幅を節約できるプレビューなしで製品情報を表示するたびに画像をダウンロードする必要がなくなります.

もう 1 つの可能性は、WCF サービスからすべての画像を一度に読み込み、AJAX を使用してそれらをダウンロードするコントローラー アクションを呼び出すことです。次に、それらをbase64データとしてHTMLに埋め込みます(Googleが結果ページの画像プレビューで行う方法)

同様に、編集の場合、画像データを他のプロパティとして扱い、画像プロパティを使用してネットワーク上でやり取りするだけですか?

編集のために、更新する項目のバイト配列と ID を取得するサービス メソッドを使用できます。

于 2011-05-12T19:19:29.557 に答える
0

私は Darin の反応に感謝し、当初はその道を進んでいましたが、最終的にはPro ASP.NET MVC 2 Frameworkで概説されているのと同じアプローチに行き着きました。

第 6 章では、製品オブジェクトの編集ページの一部として画像をアップロードし、コントローラ アクションを使用して別のページに表示する方法について説明します。私のアプリケーションの唯一の違いは、永続性が RESTful Web サービス インターフェイスを介して別の層で処理されることです。ただし、この本に示されているアプローチに基づいて、バイナリ イメージ データと文字列 MIME タイプ情報のプロパティを含む単一の DTO を使用することにしました。

別の UI やより重いオブジェクトを渡す必要がある場合は、間違いなくこのアプローチを再検討しますが、今回はこれでうまくいきました。

于 2011-05-18T17:22:15.993 に答える