DataSet or オブジェクト

「DataSet or オブジェクト」についてのリンクやメモ(意訳含む)。主に.NET1.1の内容です。

    • 以下の4つの視点で「DataSet vs オブジェクト」を切り分け
      • Databaseドリブン派 vs Domainドリブン派?
      • RDBを先に設計する派(DataGateway/TableModule) vs クラスを先に設計する派(DataMapper)?
      • 使いきりアプリケーション派 vs 進化型アプリケーション派?
      • 初心者開発者 vs 経験を積んだ開発者 ?
    • 開発手法や技術者レベルに応じてプロジェクト指向で検討してね。というまとめ
    • 選択肢は「DataSet」「型付DataSet」「カスタムクラス(オブジェクト)」「XML」の4つ
    • 「DataSet」の特徴
      • ウィザードとデザイナで簡単。
      • XMLやDBなど様々なデータを統合し取り扱うことができる。
      • SQLServer/ADO.NETとの適応を考えるともっとも自然な選択。
      • 基本機能が十分なので開発費が増大しない
      • 件数が多すぎる場合、パフォーマンスに懸案
      • データベース指向とVisualStudioデザイン設計を無意識に強制する
      • DataSetは多機能で総括的であるが、データのEntityではない
      • これらはWebServiceを使うときに問題となる(WebServcieとDataSetは共用すべきではない)
    • 「型付DataSet」の特徴
      • インテリセンスが有効
      • 短所はDataSetと同じ。あとXMLスキーマが必要(XSDファイルが生成)
    • 「カスタムクラス」の特徴
      • リレーショナルモデルに強制されることなく欲しいデータを取得することができる
      • テーブルの変更の影響を受けにくい
      • ソースを書く(もしくは生成する)必要がある。
      • データの振る舞いを追加できる。
    • XML」は貧弱だから論外
    • まとめ
      • 「カスタムクラス」のメンテナンス性、拡張性、可読性の高さは魅力的。しかしコストは非常に高い。
      • DataSetはすでにコレクション機能を兼ねている。「カスタムクラス」を扱う「カスタムコレクション」にデータバインディングや様々な機能を追加する場合には、たくさんのコレクションインターフェースを実装しないといけない。
      • DataSetとADO.NETはこれらの機能を提供している。
      • DataSetの基礎を学習することが重要。NET2.0ではジェネリックスが有効。コレクションを有効に生成し管理できる。


個人的にはオブジェクトが好きですが、簡単なサンプルを作っているときにはDataSetも便利だなぁと思います。ちなみにVisual Web DeveloperのサンプルアプリケーションではObjectDataSourceを使っているものが多いように感じました。