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。

相关赞助商

InfoQ中文站.NET社区,关注.NET和微软的其他企业开发解决方案,通过新闻、文章、视频访谈和演讲以及迷你书等为中国.NET社区提供一流资讯。

没有回复

回复

独家内容

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。

Hadoop基本流程与应用开发

本文介绍了Hadoop的基本流程、业务场景、代码范例以及集成测试。本文是《分布式计算开源框架Hadoop入门实践》三部曲的最后一部。