.net 选择数据访问技术时需要考虑的问题?

.net 选择数据访问技术时需要考虑的问题?,.net,linq,linq-to-sql,choice,.net,Linq,Linq To Sql,Choice,有时,我们不得不在2或3种技术/策略之间进行选择,以开发模块 现在,对于每个小的或大的组件/模块/项目,我们几乎有无数的选择。对于那些有多年经验的人来说,这可能很容易,但对于那些不熟悉编程的人来说,比如说不到一年的时间 在.NET世界中,我有时会对数据访问的选择感到沮丧。我们不能去阅读市场上的每一种工具,以及它为每一种产品提供了什么 提出这个问题的原因是最近我们不得不在一个项目上工作,DataAccessLayer的规范是用ADO.NET最终确定的。大约20%的项目过程中,一位新的开发人员加入了

有时,我们不得不在2或3种技术/策略之间进行选择,以开发模块

现在,对于每个小的或大的组件/模块/项目,我们几乎有无数的选择。对于那些有多年经验的人来说,这可能很容易,但对于那些不熟悉编程的人来说,比如说不到一年的时间

在.NET世界中,我有时会对数据访问的选择感到沮丧。我们不能去阅读市场上的每一种工具,以及它为每一种产品提供了什么

提出这个问题的原因是最近我们不得不在一个项目上工作,DataAccessLayer的规范是用ADO.NET最终确定的。大约20%的项目过程中,一位新的开发人员加入了我们的部门(但不是我们的团队)。我认为他聪明,乐于助人,我们喜欢和他一起工作。 在一次代码审查期间,他亲自建议我们,对于我们正在开发的模块,最好使用LINQtoSQL。他很有说服力。经过积极的讨论,我们同意使用LINQtoSQL

然而,“管理层”对此并不满意。有一种观点认为,在开始模块之前,我们应该提出这个“绝妙的想法”。他们的论点是,到目前为止,20%的工作已经花费了资源,而这些工作将被浪费

鉴于新产品/技术/战略的频繁推出,我们发现很难掌握所有这些工具和技术的所有信息

我们已经成功地使用了ADO.NET。我们对LINQ(一般)、NHibrnate和其他很多东西都有一个想法,但我们还是继续使用ADO.NET。我并不反对学习新事物,这就是我们共同推动使用LINQ的原因

问题 我们当时做出这个选择是不是有错


对于在某些情况下选择哪种技术以及何时不切换中流技术,是否有任何衡量标准或指导原则?在启动新项目时,将所有当前技术牢记在心是一项具有挑战性且越来越困难的任务

我总是努力追随最前沿的东西,这样我就知道外面有什么。这是一个阅读大量博客、参加会议和了解最新情况的问题

也就是说,你不想总是使用最前沿的东西。我的经验法则是估计产品的装运日期。我尝试使用任何最新的技术,在我们将要发货的日期之前至少收到一个“服务包”或更新。当然,这涉及到很多猜测,因为船的日期不知道,但是经验(在观察行业方面)非常有帮助


对哪些技术会流行,哪些会随着时间的推移而消失进行有根据的猜测是一门艺术。不幸的是,这实际上是一个经验问题。如果您有一位拥有多年经验的开发人员,他也掌握最新的技术(很重要),那么他们是帮助您做出决策的一个很好的资源。

一半的时候,您会觉得更多的是使用您手头的资源(即,人们知道哪些语言?)我们有什么许可证呢?

有一年的经验,一开始没有选择正确的技术不是你的错。这种决定很难做出,而且需要经验


在这里谁是错的,很可能是项目经理在项目开始时没有提供正确的资源来做出那些架构决策

时间框架和项目风险。这些是基本原则

我对LINQ或ADO.NET不太熟悉,但这并不重要

在较高的层次上,我看不出LINQ和ADO.NET之间有什么区别。我可以看到LINQ“更好”,“更优雅”,代码更少,更清晰。但是,事实上,如果团队已经熟悉并熟悉ADO.NET,那么这些都不是大的项目风险。您仍然需要在数据库中输入和输出数据,而且团队已经知道如何处理“不那么优雅、代码更多、不那么清晰”的ADO.NET(请注意,这些是泛化,而不是判断本身)

如果在项目中有时间吸收像LINQ这样的东西的采用,而且即使对于一项新技术,它也明显更好,那么我可以看到在新的工作中采用它,或者在旧的、已完成的工作中对其进行改造

如果你有一个为期一年的项目,很容易看出在时间线中有足够的“空闲”来采用新技术。如果是一个为期一个月的项目,可能就不那么多了

虽然有很多很棒的新技术,而且它们每天都会出现,但关于“你知道的魔鬼”与采用新的、未经证实的东西的争论可以说很多。这就是为什么,就我个人而言,我在家里以“爱好模式”在我的时间里进行了大部分此类探索,以便我能够更好地了解新项目,当一项新技术可能比我们久经考验的真正的“老派”方法更合适时


否则,需要在项目规范期间提供时间证明新技术,以确定其是否适合在项目开始时纳入。很多时候,制定规范的人没有得到那个时间。

对于给定的解决方案或开发项目,有很多因素可以衡量什么技术是“合适的”

很多时候,在选择、什么似乎“正确”、什么受欢迎以及什么可能是最有趣方面,你会受到许多内部和外部影响

在我看来,做出“正确”的决定是为了选择最稳定、记录在案、可行的解决方案。现在要做到这一点,你需要跟上技术的发展,知道外面有什么。因此,保持LINQ、实体框架等是必要的

真正的“艺术”是决定什么是合适的