InfoQ

News

ADO.NET Entity Frameworkが呼んだ白熱した議論

作者 Abel Avram, 翻訳者 編集部 投稿日 2008年5月26日 午前6時23分

コミュニティ
.NET
トピック
データアクセス
タグ
データベース,
データバインディング

最近ADO.NET Entity FrameworkプロジェクトのデベロッパであるDanny Simmons氏が、Entity Frameworkとその他のデータアクセスソリューションを比較した記事をブログに掲載(source)した。従来のADO.NETおよびLINQ to SQLと比較した後で、Danny氏はEntity FrameworkをnHibernateに照らし合わせ、他のデベロッパの反応を促した。以下はDanny氏のブログ掲載からの抜粋である。

EFおよびnHibernateの大きな違いは、Entity Data Model (EDM)およびそれを中心に構築しているデータプラットフォームに対する長期的なビジョンです。EFは専ら、クエリーのマッピングやシェーピング結果の プロセスをオブジェクトの構築や変更の追跡から分離させるような構成です。これにより、データについて希望の考えを示す概念モデルの作成がより簡単にな り、その概念モデルを単なるオブジェクトの構築の他に、さまざまなサービスに再使用することができます。長期間われわれは、EDM認識を多様な Microsoft製品にビルドする作業をおこなっています。そうすれば、Entity Data Modelがあれば、そのモデルを通じて自動的にREST指向のWebサービスを作成したり(ADO.Net Data Services aka Astoria)、そのモデルに対してレポートを書いたり(Reporting Services)、データがエンティティとして、自動移動するオフラインクライアントストアとサーバ間のデータを同期したり(それらのエンティティが サーバの複数のデータベース表から取り出されるとしても)、エンティティを意識したビルディングブロックからワークフローを作成したりすることができま す。ですから、差別化要因は、EFがnHibernateなどよりもさらにフレキシブルなマッピングをサポートするということではなく、EFが単なる ORMではないということです。エンティティを意識したデータプラットフォームのずっと大きなビジョンでの第一歩と言えます。

それに対する反応としてLLBLGen Pro(サイト・英語)およびMicrosoft MVPであるFrans Bouma氏が以下のように投稿(source)した。

理解できないですね。長い間Entity Frameworkに携わってきたDanny Simmons氏のような人を。そんな人がO/Rマッパーがエンティティの認識に関係しているという事実をどうして無視することができるのでしょうか?最 後の文で説明されていることは、O/Rマッパーの唯一の目的そのものです。 デベロッパがOO言語でエンティティインスタンスの作業ができたり、リレーショナルデータベースのような非OO環境でこうしたインスタンスを保管すること ができます。その逆も可能です。抽象的なエンティティモデルとその展開がすべてであるなら、大きなビジョンは何のためにあるのでしょうか?おそらくツール でしょうか?デベロッパにとって、こうした展開の作成するため事を簡単にし、アプリケーションコードでO/Rマッパーサービスを配置するためでしょうか?

.NETデベロッパであり、アーキテクトであるJeremy D. Miller氏は、Danny Simmons氏についてブログ(ブログ・英語)に以下のように書いた。

Entity Frameworkに対してNHibernateを使用することを考慮するという重大な事実を省いています。Entity Frameworkはアプリケーションへ立ち入っていますが、NHibernateはそうではありません。NHibernateは、POCOを使用して データベースにとらわれない方法でビジネスプロセスをモデル化させます。Entity Frameworkは、EFインフラを直接オブジェクトモデルに焼き付けることを期待します。

Danny Simmons氏は、レポート作成やMicrosoft MVPであるGreg Young氏からコメントを受けたりするなど、その他の目的でEDMを使用することの利点をブログ(ブログ・英語)に記した。

もしかすると単一モデルは、トランザクションの振る舞い、検索およびレポート作成などアプリケーションのあらゆる面には適切ではない可能性があります。... たとえば、1,000回とします。トランザクションのモデルをレポートしているなら、問題を招いています!

Headspring Systemsの上級顧問であるJimmy Bogard氏は、自身の考えをブログ(ブログ・英語)に掲載した。

境界されたコンテキスト外の人とデータモデルを共有するのは、間違っていると思います(Evans、Domain-Driven Design参照)。概念モデルやEDMまたはわれわれがこう呼ぶものすべてを共有することも間違っています。

サービス経由でドメインオブジェクトを直接公開したくはありません。それは、わたしが作成しようとしているカプセル化に違反しています。

SSRSを要求している場合、わたしはレポート作成のニーズに合った別のレポート作成データベースを提供します。レポート作成の懸念によってトランザク ションの心配に拍車をかけないでもらいたいです。SSISのような製品は可能ですが、マッピング層はこの問題を解決しないでしょう。レポート作成が必要で すか?読み取り専用のビューです。毎時、5分ごとに、毎日など好きな周期で更新されます。

そこで問題は、ADO.NET Entity Frameworkは単にO/R Mapperにとどまらないのか、そしてどのようにnHibernateと比較されるのか、ということである。EFが単なるO/Rマッパーであり、 nHibernateと比べると多くの機能が不足していると、たいていの人は考えがちである。その一方で、Danny Simmons氏はMicrosoftはEFを開始し、現在のO/Rマッピング機能以上の機能を計画していることを述べている。

原文はこちらです:http://www.infoq.com/news/2008/05/Entity-Framework-Sparks-a-Debate

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

インタビュー: Emmanuel Bernard氏にBean Validation仕様について聞く

Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。

ポーカーに学ぶ、ソフトウェア開発のレッスン

ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。

InfoQがBPEL4PEOPLEの代表と対談

恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。

CLR上でのドメイン特化言語の構築

ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。

Rubyのデバッガを調査

Rubyには、Rubyコミュニティの内外で広く知られている誤解が一つある。Rubyにはデバッガがないという誤解だ。しかし、Rubyにデバッガが無いということは誤解なのだ。実際のところ、Rubyにはデバッガ用のツールがある。

改善、成功と失敗: 中国でのスクラム導入

InfoQ Chinaは中国でスクラム(Scrum)がどのように導入されているかに関する調査を行いました。私たちはこの記事のために5つの事例をピックアップしました。これらの事例は、異なるさまざまな会社によるもので、異なるプロセスが利用され、異なる結果が生じたものです。

洗練されたサービス契約による見事なスケーラビリティ

Udi Dahan氏のチームが、サービス契約を利用した2度の失敗を避け、複数の側面でのスケーラビリティに対処しています。

塹壕より Scrum と XP

Agileを始めるときは、とても分かりにくいです。一体どこから手をつければいいのでしょう?この物語はそんな皆様の一助になれば幸いです。本書は、スウェーデンにある、とある40人ほどの会社で、どのようにAgileとXPを実行したか、プロセス改善を行ったかを記しています。