InfoQ

新闻

ADO.NET实体框架引起争议

作者 Robert Bazinet 译者 李会军 发布于 2008年7月18日 上午1时2分

社区
.NET
主题
企业架构
标签
领域驱动设计,
ADO.NET实体框架,
微软
 
由社区发起的一份请愿书表达了对关注微软即将发布的ADO.NET实体框架的关注,请愿书标题为“对ADO.NET实体框架投不信任票”,旨在提高人们对业内专家已经预见到的一些设计和实现问题的认识。

不信任

该信的意图非常明确:
这封信一致签字通过,表示对微软客户社区承担的社会福利软件项目的关切,该项目将会使用微软即将发布的ADO.NET实体框架。
过去的一年里,微软和实体框架团队从致力于.NET平台上的实体应用开发和软件构架设计的专家那里收到了大量的反馈。当微软打算为实体构架提供框架支持的公告得到热情的拥护时,证明了实体框架本身始终能引起极大的关注。
可以看出,这封信是经过深思熟虑的,目的不是阻止开发者使用ADO.NET实体框架,而是要让他们了解当前实现中可能存在的缺陷:
我们希望的实体框架是一个一流的高质量产品和超出期望值的工具,允许客户和开发者创建可持续、可维护的软件架构,它可以承受任何大规模、复杂或周期紧张的软件开发项目的压力。
该小组认为,虽然微软在框架开发中采纳了他们的意见,但反馈本身并没有被真正考虑到v1.0版本的产品中。他们的目的是提高社区对微软合作的关注程度,以帮助指导开发:
我们集体敦促微软客户要认真考虑被微软称作“技术社区精英”的专家组的所关注的东西,他们为社区做了极大的贡献以及自发的帮助他人。在.NET最初发布之时,我们就使用微软或非微软的工具构建了基于实体的应用程序,并且积累了大量基于普通实体应用程序和基于.NET实体应用程序的最佳经验。
由于实体框架当前设计和实现的技术隐患,以及由它们构成的微软客户项目未来的潜在风险,我们郑重地对ADO.NET实体框架目前的状态以及对专家社区反馈过程的持续问题投不信任的一票。
信中对细节关注采取的立场及说明:
  • 过度关注数据方面的实体导致实体架构薄弱
  • 需要额外代码来处理延迟加载的不足
  • 共享、规范模型有悖于软件最佳实践
  • 持久化忽略机制的不足,造成业务逻辑难以读写和修改,开发和维护成本过度加大
  • 在团队环境里对源代码控制过多的冲突合并

更多感兴趣的信息你可以访问“对ADO.NET实体框架投不信任票 ”主页,并且可以对信件签字,也可以查看已经签字的清单,截止发表本文时共有270人签字。

业界反应

对这个意见采取的立场不乏批评和回应。用你喜爱的搜索引擎查找这份请愿书可得出两种结论,有很多支持和反对微软的声音。
ADO.NET实体框架团队迅速对这封信做出反应,来自于该小组的Tim Mallalieu辩驳并阐述了实体框架V1.0版的目标及未来:
令人遗憾的是,这是现实的情况,我们深切关注这些意见但在V1.0版中不完全支持。在这里我可以深入探讨一些细节。需要注意的一点是对这些功能的选择需要慎重考虑,但我们不得不在尝试增加新功能与尝试保留正确的原始目标之间应对这种压力,以此为建立一个更广阔的数据平台奠定一个多发布(multiple-release)策略的核心基础。巧合的是,今天,也是我们开始下一个版本产品的工作起点,而我们决定认真讨论这个特别的开发者社区,同时继续投资整体数据平台。
与任何1.0版本的产品一样,为了使之发布,团队并不能实现所有的功能,而需要把其他功能推迟至以后发布。这些功能和反馈结果决定了2.0版本的功能。
ADO.NET团队正采取办法,开放他们正在进行的设计过程和目标,使其尽可能透明。

在过去的9个月里你也许看到了Astoria团队博客(ADO.NET数据服务),我们将采取类似的过程,在新实体框架设计博客中定期发布我们的设计说明,在我们讨论一个既定方面以及作出最后决策之前,将给您提供反馈意见的机会。关于如何进行这一过程的更多信息,请关注我们的第一篇博客 ,并希望大家及时提供更多的意见!

结论

写这封信的团体的立场是非常清楚的。但是它开放给谁才是正确的呢?在设计上,微软花了很长的时间谨慎做出关于这个框架开发的决策。正如任何争论都不止一个方面,这封信清晰的概括了一些微软1.0版本产品的关注点

开发者使用的任何产品都有遗留下来的风险。由于在使用这个产品之前,业内专家团队必须花时间提高对潜在问题的认识,因而这种情况似乎是独一无二的。如果所有产品都带有一个特别详细的警告标签,那么它会非常好。

也许部分或所有这些关注点将以自己的方式成为未来发布的ADO.NET实体框架中的功能。推出1.0版本产品不能满足开发者的需求已成为微软的一个历史,但他们会采纳大量的反馈后,为开发者提供更好的2.0或3.0版本的产品。这可能是微软自身历史的重演以及请愿书引导的方向。

可以在“对ADO.NET实体框架投不信任票 ”阅读信的全文,每一个关注点的详细回复可以在Tim Mallalieu's blog中查看。
 
查看英文原文:ADO.NET Entity Framework Taking Some Heat

译者简介:李会军(网名TerryLee),南开大学软件工程硕士,微软最有价值专家(MVP),多家IT杂志和IT网络媒体特约撰稿人,擅长基于.NET平台的Web开发,业余爱好写作,在各类技术杂志和个人技术博客上撰写了大量的技术文章。他的个人网站为:http://www.dotneteye.cn。

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。