- - PR -
DataReaderとDataSetの性能比はなんと30倍
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-08 07:40
ASP/ASP.NET関連の著者として活躍しているScott Mitchell 氏が著者のWebサイトで「ASP.NETのアプリケーションでなぜ私がDataSetを使わないか」という記事を掲載しています。
著者はこの記事で、DataReaderはDataSetの30倍も高速であると、実測値を示して説明しています。WebアプリケーションでDataSetを多用されている方、再検討してみてはどうでしょうか。 http://aspnet.4guysfromrolla.com/articles/050405-1.aspx _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||||||
|
投稿日時: 2005-05-08 19:58
こんにちは。
英語がほとんど読めないのでソース見ただけですが、なんとなく場合によりけりというような感想です。「DataReaderがDataSetより高速である」というのは否定はしません。しかし小規模アプリケーションならまだしも、複数層構造(UI-Facade-Rule-DataAccess)で作るWebアプリケーションの場合、DataSetは各層でデータをやり取りするために有効な手段だと思います。 また、型なしのDataSetで計測してますが、型付きのDataSetだったらもう少し違うのかなとも思いました(自分も実際に計測したわけではないので判りませんが)。その辺りも記述されているのでしょうか?(英語がダメダメな自分が悲しい・・・) | ||||||||
|
投稿日時: 2005-05-09 05:55
もちろん、著者はDataSetを否定しているわけではありません。たとえば、WindowsのアプリケーションなどはDataSetが向いているといっております。また、Webアプリケーションでも、DataGridに表示したレコードをレコード単位で更新するのではなく、[一括更新]ボタンをクリックしたときにバッチ更新するときなどは、DataSetが有効であるといっております。 3階層のWebアプリケーションを開発するときは、DataSetが向いているように指摘していますが、型指定のDataSet(DataTable)をBL(ビジネスロジック層)に渡すと、データベースのフィールド名をそのまま渡すことになります。この場合、データベースのフィールド名が変更されたとき、BLにも影響を与えます。 DataReaderを使用するときは、データベースのフィールドに対応した独自のクラスを作成してBLに渡すことになると思います。この場合、データベースのフィールドが変更されても、DAL(データアクセス層)の変更のみでBLには影響与えません。 例:(フィールド名変更前) データベースのフィールド名→CustomerName 型指定のDataSet(DataTable)→CustomerName DataReaderの結果を格納するクラス→CompanyName 例:(フィールド名変更後) データベースのフィールド名→CustomerFullName 型指定のDataSet(DataTable)→CustomerFullName(新しい名前に変更されてしまう) DataReaderの結果を格納するクラス→CompanyName (フィールド名は以前と同じ)
_________________ ASP.NETサンプル集(Web Matrix版) [ メッセージ編集済み 編集者: Access 編集日時 2005-05-09 06:49 ] |
1