开发人员是不是必须关心将来更改 ORM 的可能性?
Posted
技术标签:
【中文标题】开发人员是不是必须关心将来更改 ORM 的可能性?【英文标题】:Must developers care about possibility of changing ORM in future?开发人员是否必须关心将来更改 ORM 的可能性? 【发布时间】:2009-12-24 06:21:12 【问题描述】:假设我开始开发一个项目。那么我必须认真关心将来更改 ORM 的可能性吗?
或者,更准确地说:
-
您想将您在当前项目中使用的 ORM 更改为不同的 ORM。如果有,原因是什么?
您实际上做过吗?如果有,原因是什么?
实际上,我在考虑投入大量精力尝试开发与 ORM 无关的解决方案是否有价值。
【问题讨论】:
对我来说“有价值”=如果迁移到另一个 ORM 的概率是 10% 并且从头开始迁移的成本(即如果项目是在根本不关心迁移可能性的情况下开发的)是 C,而不是它将最多 C * 10% 的精力用于透明的迁移支持是合理的。 ORM 代表什么? 即实体框架、LINQ to SQL、NHibernate 等 【参考方案1】:在项目过程中更改 ORM 的几率非常低。很有可能您为确保可以切换 ORM 所做的任何努力最终都将付诸东流。您必须权衡更改 ORM 的微小可能性与使更改 ORM 成为可能的额外努力。
回答您的问题:
-
没有
如果您正在使用的工具无法满足某些实质性需求,通常您会更改您的 ORM。我真的想不出任何这样有意义的例子 - 通常你可以解决这些问题。
在一天结束的时候,我会简单地确保我选择了一个适合我的 ORM(像 NHibernate 这样的东西不会真的出错)并确保你的代码是松散耦合的,这应该确保你的数据访问代码是隔离的。这不仅从可维护性的角度来看是好的,而且对于可测试性也是如此。
【讨论】:
这取决于您如何定义“项目”以及您的项目持续多长时间。我认为对于某些项目(永远持续下去的项目)来说,这是很有可能的。【参考方案2】:是的,我认为你应该关心它,到什么程度是完全主观的事情。应考虑应用程序的所有层,特别是如果您认为您的代码将在任何相当长的时间内都存在,或者如果您认为您的应用程序将有显着增长。
就您的具体问题而言:
-
我有几个项目使用各种不同的存储系统和框架来管理数据,如果它们之间有一致的策略会很好,但我们会努力完成我们有时间完成的工作。我对与我合作的团队的一般指导是仅选择对项目有意义的 ORM,并将抽象放在适当的位置以方便使用。一般来说,我更喜欢 NHibernate(我有更多的经验),但有很多好的解决方案可供选择
是的,我至少参与了两个项目,我们被引入的唯一目的是删除现有的第三方组件(包括 ORM 框架)并用其他组件替换它们。在一种情况下,我们从自制的 ORM 迁移到 NHibernate,在另一种情况下,我们从第三方 ORM 迁移到客户要求我们为他们设计的 ORM。这两个项目都很复杂,并且涉及很多应用程序无法正常处理的更改。部分原因(不是全部)可归因于代码与其数据存储策略紧密结合的事实。
【讨论】:
大约 2 - 迁移到另一个 ORM 确实不是您描述的重构的主要原因,即有更重要的问题最终导致决定如此显着地重构项目项目(更改所有组件通常〜=几乎完全重写它)? 实际上,DAL 是对一个项目进行重构的重要原因。有问题的客户试图让他们的应用程序进入比他们以前的目标更大的业务(即公司而不是 SMB),并且客户的要求是 DAL 不能很好地处理某些与数据库相关的策略。具体来说,比如允许运行 SP 而不是直接查询等。这些是(当时)他们选择的 ORM 的主要限制。 谢谢 - 同意,DAL 是非常重要的部分。 IE。那里的问题可能会导致轻松进行重大重构。以上是关于开发人员是不是必须关心将来更改 ORM 的可能性?的主要内容,如果未能解决你的问题,请参考以下文章