2012-01-25 4 views
2

Aspxページ。ステータスを更新するだけでオブジェクト全体を送信しますか?

多くのフィールドがフォームにあります。

私たちはJSオブジェクトのすべてのフィールドを表しています。

私たちはのレコードのステータスを「0」に変更します。 (ui内)

DBに新しいステータスを保存する必要があります。


質問:

たちは

1)オブジェクトへのすべてのフィールドを埋める必要があり、AJAXを介してサーバにオブジェクト全体を送信しているかを確認するために、サーバに自分のフィールドをウォークスルーかわった ?

または

2)は、ステータスのみを変更するための特別なコマンドを生成し、サーバにAJAXを使用してコマンドを送信しますか?

最初のものは、よりOOP'edですが、私は、サーバーへのすべてのフィールドを送信する時に任意のロジックを見つけるいけない - ちょうどステータスを変更するために...

P.S.

これは私が二番目を提案し、私と同僚

の間で論争から来ています。彼は、最初の1つ

+0

2番目のアプローチは間違いありません。 – Sid

答えて

1

CQS/CQRSパースペクティブ(コマンドクエリ分離/コマンドクエリ責任分離)から考えると、2番目のアプローチ(あなたのアプローチ)は、説明するものが特定のコマンドコード内での発行と処理。あなたが送っているあなたのコマンドには、あなたのシステムに何かをさせるために必要なすべての情報が含まれています(命令的なトーン)。このようにすれば、単一の責任を果たすコードが得られ、より読みやすく、保守性の高いコードにつながります。

私はあなたの議論の中であなたと共謀したいと思います。

幸運を祈る!

0

私は1つの値を渡すだけでオブジェクト全体を送信する理由はありません。これがすべてバックエンドコード内で発生していた場合、そのオブジェクトはすでに存在しており、参照を渡すだけでしたが、それは一つのことです。ネットワーク経由でこれを渡すので、送信されるデータは小さくなります。

0

私はGeneric Handler(.ashx)を作成し、ユーザーがステータス変更を行うときにAjax経由で呼び出します。あなたは、オブジェクトのIDと新しいステータスを渡すだけでよいでしょう。

OOPは多くの点で優れていますが、すばやく軽い編集を行うことは実際にはその1つではありません。

唯一知っておいていただきたいのは、通常はプロパティの変更のために起動するセカンダリロジックだけです。たとえば、オブジェクト全体を再検証する必要があるかどうかを変更するにはどうすればよいですか?

そうでない場合は、心配しないでください。もしそうなら、それをどのように単純化するかを検討してください。

0

私は仕事が少ない代替を選択します。アーキテクチャーの観点からは、これはあまり重要ではありません。

0

他の場所で提案されているように、問題のページでジェネリックハンドラ(.ashx)、Webサービス(.asmx)、またはWebMethodのタグ付きパブリックメソッドを使用することもできます。この場合、単純なAjax呼び出し(Microsoft Ajax Toolkitと混同しないでください)が必要です。

たとえば、jQuery's post methodを参照してください。このような電話をかけるのはかなり簡単です。従来のwebformsプロジェクトでは、aspxの内部にあるWebMethodタグを使ってashx、asmxを個人的に使用します。 MVCにはもっと多くのオプションがあります(JsonResult)。

私がASP.Net WebFormsで持っている重大な問題の1つは、ビューステートとすべての要求で転送される膨大な量のデータです。単純な/より軽いハンドラーや、JSからターゲットを絞ったWebサービスを持つ方がよいでしょう。

関連する問題