BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ADO.NET Entity Frameworkが呼んだ白熱した議論

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

最近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

この記事に星をつける

おすすめ度
スタイル

BT