频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

ADO.NET实体框架引发争论

作者: 朱永光译 出处:infoq 2008-06-11 15:40    砖    好    评论   进入论坛
阅读提示:一个在ADO.NET实体框架(Entity Framework,EF)项目中的微软开发人员Danny Simmons,他最近发表了一个对实体框架和其他数据访问解决方案比较的博客帖子。在和传统的ADO.NET及LINQ to SQL比较之后,Danny又把实体框架和nHibernate进行比较,这就引起了其他开发人员的反对

一个在ADO.NET实体框架(Entity Framework,EF)项目中的微软开发人员Danny Simmons,他最近发表了一个对实体框架和其他数据访问解决方案比较的博客帖子。在和传统的ADO.NET及LINQ to SQL比较之后,Danny又把实体框架和nHibernate进行比较,这就引起了其他开发人员的反对。下面是Danny的帖子的摘录:

在EF和nHibernate之间最大的不同是,实体数据模型(Entity Data Model,EDM),以及我们基于这个东西构建的需要长久运行的数据平台。EF通过了特别的构造,将查询/形成结果的映射过程,与构建对象和变更跟踪分离开来。这种方式让创建概念模型变得更为容易,而概念模型使你可以考虑如何实现数据,以便随后能在其他很多包含了这些构建对象的服务中重用。长期以来,我们把EDM这样的思想融入到多个其他微软产品中,以至于假如你拥有一个实体数据模型,你可以基于这个模型自动创建面向REST的Web Service(ADO.NET Data Service,即Astoria);可以基于这个模型编写报表(Reporting Services);可以在服务器和脱机客户端存储库中同步数据,这些数据可以作为实体进行原子性地移动,就算这些实体是从服务器上的多个数据库表中抽取而来;可以从实体感知的构建部件中创建工作流;等等,等等……所以,所谓的不同点不是EF比Nhibernate能支持更复杂的映射功能或其他类似的东西,而是在于——EF不仅仅是一个ORM,它是在基于实体理念的数据平台中庞大愿景中的第一步。

作为回应,Frans Bouma,LLBLGen Pro的主创人员,一个微软MVP,在它的帖子中写到:

我不同意这种说法:一个像Danny Simmons这样工作于实体框架中如此久的人,这样的人怎么能忽略这样一个事实——任何O/R Mapper都是针对实体理念的。在他最后一句话中所描述的东西,实际上是一个单一目的的O/R Mapper:就是让开发人员能在OO语言中使用实体实例,并把这些实例保存到如关系数据库这样的非OO环境中,反之亦然。假如所有的东西就是抽象的实体模型和它的投射,那么更大的愿景是什么呢?也许工具?它让开发人员创建这些投射和在应用程序代码中调用O/R Mapper服务根据容易。

Jeremy D. Miller,一个.NET开发人员和构架师,在他的博客中说到Danny Simmons:

他在比较NHibernate和实体框架过程中遗漏了一个重要的事实。实体框架对你的应用程序具有很强的入侵性,而Nhibernate没有。NHibernate让我能使用POCO的方式来对业务过程进行建模而无需知晓数据库。而,实体框架却要我把EF的基础结构直接加入到我的业务对象中。

Danny Simmons提到的为其他目的(如报表)而使用EDM的好处,Greg Young——一个微软的MVP,在他的博客上对其进行了评论

一个单一的模型不可能适应你的应用程序里包括事务行为、搜索和报表在内的所有方面……可以举出很多这样的内容来。如果你基于你的事务模型来创建报表,那么你就会遇到麻烦!

Jimmy Bogard,一个Headspring Systems的高级顾问,也在他的博客中回应到:

我认为把数据模型共享给你边界外的任何人,是错误的(参看Evans,Domain-Driven Design)。把概念模型或EDM或其它我们以任何名字称呼它的东西共享出来也是错误的。

我从来不把域对象直接通过服务暴露出来。这是对我尽量创建的封装的一种侵害。

如果任何人想要一个SSRS【译者注:SQL Server Reporting Service】,那么我会给他们一个单独的报表数据库——为报表所需而定制的。我不希望报表的关注点影响了我们的事务关注点。一个映射层不能解决这样的问题,但类似SSIS【译者注:SQL Server Integration Service】这样的产品却可以。你想要报表?好,这里有你需要的只读视图,每小时、5分钟、每天或随时进行更新。

所以,现在的问题是:ADO.NET实体框架是否已经不仅仅是一个O/R Mapper了,以及它如何和nHibernate进行比较?很多人倾向于认为EF是一个简单的O/R Mapper,并认为它相对于nHibernate而言缺乏很多特性。另外一方面,Danny Simmons说微软刚刚开始开发EF,他们的计划是未来要超越当前的O/R映射功能。

【相关文章】

【责任编辑:碧海蓝天 TEL:(010)68476606】

专题
ADO.NET实用技巧专题
初探敏捷开发
WCF开发基础
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看80454次)
·UML类图详解 (查看71936次)
·C++是垃圾语言?! (查看41866次)
·C#技术开发指南 (查看39465次)
·UML统一建模语言 (查看38949次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (252个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
SQL Server 2008/2005全解
SQL Server 2008/..
浏览器的战国时代
浏览器的战国时代
运营商封堵ADSL共享 中小企业如何应对
运营商封堵ADSL共..
· 运营商封堵ADSL共享 中..
· 微软出价446亿美元收购..
· 技术人求职简历完备手册
· 开源虚拟化技术Xen
· Windows Server 2008专..
· 隐私保护技术探讨
· 绿色IT人健康生存手册
· 网络工程师职业规划与..
· 杀毒软件评测专题
· 访问控制列表(ACL)介绍
· Vista SP1对决XP SP3
· 华为员工自杀频频拷问..
· 2008中国互联网大会
· 勇闯IT培训黑色围城
· CISSP认证成长之路
· 解析35岁技术人的价值..
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
· 专题:AIX操作系统管理..
· 访问控制列表(ACL)介绍
· 反垃圾邮件技术应用
· ASP.NET 2.0基础开发指..
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
SQL Server入门到精通
SQL Server入门到..
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· 路由器设置与口令恢复
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· PHP开发应用手册
· 专题:AIX操作系统管理..
· 交换机故障解决指南
· 三层交换技术专题