2009-07-30 5 views
6

特に、大規模なWebアプリケーション(StackOverflowと思う)のコンテキストで見た場合、UpdateModelが「高価」な操作(モデルプロパティのReflectionルックアップのため)とみなされるのだろうか?ASP.NET MVC:UpdateModelはReflectionのために "高価な"操作ですか?

私は時期尚早の最適化を望んでいませんが、私はUpdateModelを使用するための設計選択と考えています。なぜなら、それが賢明であるかどうかを早期に知りたいのです。他の(退屈な)選択肢は、固定プロパティーを持つさまざまなドメインオブジェクトのための独自のUpdateModelメソッドを作成することです。

ありがとうございました!

答えて

5

あなたは時期尚早の最適化に従事しないようにしたいためにスマートです。特にこの「最適化」はプロセッサの時間を優先します。これははるかに高価です。

最適化の第1のルールは、遅いものを最初に最適化することです。したがって、データベースのバックエンドからの選択とモデルの実際の更新頻度を考慮してください。私はそれが1/10以下であると推測しています。ここで、データベースのバックエンドとリフレクションのコストを選択するコストについて考えてみましょう。反射のコストはミリ秒単位で測定されます。データベースのバックエンドから選択するコストは、最悪でも秒単位で測定できます。私の経験では、POSTは非常に遅くなることはめったになく、通常はPOSTでは反映されるのではなく、誤っているデータベースです。私はGETに最適化時間の大部分を費やす可能性が高いと思います。

0

私は、UpdateModelは、ビューとモデルの間に大量のカップリングを引き起こすちょっとしたショートカットだと思います。

LINQで作成したオブジェクトをデータベースから直接ビューに渡すなどの「組み込み」モデルを使用しないことを選択しました。これは、モデルをより洗練されたものに置き換えることができるからです。データベースプロバイダ。しかし、LINQtoSQL(またはADO.NET Entities)を使用して高速プロトタイプを作成することは非常に魅力的です。

私は、MVCアプリケーションを作成し、次に 'モデル'(私のドメインのOOビュー)に接続されている 'サービス'レイヤーを公開することです。そうすれば、Webサービス層を簡単に作成したり、データベースを交換したり、新しいワークフローを作成したりできます。

(そして、あなたのテストと使用DIを書くことを確認してください! - それは手間の節約)

ロブ

+3

ドメインオブジェクトを直接更新するか、特殊な編集モデルを使用するか(私もあまりにもお勧めします)、彼の質問のポイントは変わりません。 –

2

UpdateModel()呼び出しは、ネットワークの待ち時間、データベース呼び出し、一般的なIOと比べて些細なので、気にしません。

関連する問題