7

Web サービスから厳密に型指定されたデータセットを公開し、それをクライアントに直接バインドする必要がありますか? または、asmx Web サービスのより賢明な方法はありますか? CRUD 操作 (作成、読み取り、更新、削除) を行っています。

たとえば、データセット内のテーブルに挿入する場合など、データセットを操作するのはイライラし、操作が難しいと感じています。1 つのレコードのみを挿入する場合、またはデータセット内の特定のテーブルから 1 つのレコードのみを取得する場合に、データセット全体をやり取りすることは論理的ではないようです。

より良い方法はありますか?

おそらくオブジェクトに変換して、Web サービス経由でオブジェクトを使用する必要がありますか? オブジェクトを渡すためにあらゆる場所で変換を行うことは、おそらく同じくらい退屈ですか?

4

6 に答える 6

4

相互運用性の要件によって異なります。事実上どのような環境からでも DataSet XML を処理することは完全に可能ですが、扱いにくい場合があります。相互運用していない場合は、型指定されたデータセット ルートをお勧めします。これは、C# から使用するのが非常に簡単で、「問題なく動作する」ためです。

于 2008-09-22T18:10:53.990 に答える
3

私はオブジェクトを選択すると言います.DataSetはちょっと面倒になる可能性があります. オブジェクトは見やすく、もちろんデバッグも簡単です。

ただし、抽象クラス/インターフェースに基づくコレクションがある場合は、シリアライズするのが少し面倒になる可能性があるため、抽象型を扱うときは注意してください。過去にこれに問題がありましたが、解決策を見つけました

于 2008-09-22T18:17:13.443 に答える
2

Datasetは .NET に固有のものであることに注意してください。API を相互運用可能にしたい場合は、基本的なデータ型と構造に固執する必要があります (そうしないと、.NET 以外の開発者にとって状況が煩雑になる可能性があります)。

次に、Web サービスは、1 回の移動で大きなオブジェクトをやり取りするようには設計されていません。データセットに数百 KB を超えるものが含まれている場合、クライアント側またはサーバー側の HTTP タイムアウトが発生する可能性があります (デフォルト設定を考慮)。

CRUD 操作については、WS を介して各操作を直接公開することをお勧めします。

于 2008-09-22T18:15:12.123 に答える
2

私は DataSets で大きな成功を収めました (サーバーは厳密に型指定されたデータセットを使用して返しますが、クライアントはそれを標準のデータセットとして使用します)。Tomer が警告しているように、私には相互運用性に関する懸念がないという利点があります。

更新に関しては、データセット全体を送信することはお勧めできません。AcceptChanges() が呼び出されてからのすべての編集を返す GetChanges() と呼ばれる DataSet オブジェクトと DataTable オブジェクトの両方にメソッドがあります。これにより、ネットワーク トラフィックを抑えることができます。

于 2008-09-22T18:20:37.617 に答える
0

Joannes に同意します... 公開したい操作の種類に応じたオブジェクトと特定のメソッドに固執してください。

于 2008-09-22T18:16:26.037 に答える