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

时间:2010-01-26 21:26:35

标签: .net linq linq-to-sql choice

有时我们必须选择2到3种技术/策略来开发模块。

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

我有时会对.NET世界中的数据访问选择感到沮丧。我们无法了解市场上的每一种工具以及它为每种产品提供的产品。

提出问题的原因是最近我们必须处理一个项目,DataAccessLayer的规范已经用ADO.NET完成。大约20%的项目进入项目,新的开发人员加入了我们的部门(但不是我们的团队)。我认为他聪明,乐于助人,我们喜欢和他一起工作。

在代码审查期间,他亲自告诉我们,最好将LINQ to SQL用于我们正在处理的模块。他很有说服力。经过积极的辩论,我们同意使用LINQ to SQL。

然而,“管理层”对此并不满意。有人认为我们应该在启动模块之前提出这个“奇妙的想法”。他们的论点是到目前为止,资源已用于20%的工作,而这项工作将被浪费掉。

鉴于新产品/技术/战略经常出现的速度,我们发现很难获得有关所有这些工具和技术的所有信息。

我们使用ADO.NET取得了成功。我们对LINQ(一般),NHibrnate和其他许多人有所了解,但我们继续推进ADO.NET。我并不反对学习新事物,这就是我们共同推动使用LINQ的原因。

问题 我们在做的时候做出这个选择是不是有错?

是否有任何指标或指导方针可以决定技术在某些情况下选择哪种情况,何时不在中途切换?

7 个答案:

答案 0 :(得分:4)

在开始新项目时,要记住所有当前技术,这是一项具有挑战性且越来越困难的任务。

我总是尽量追随最前沿,以便我知道那里有什么。这是一个阅读很多博客,参加会议和保持最新状态的问题。

话虽如此,你不想总是使用最前沿的东西。我的经验法则是估计产品的发货日期。我尝试使用最新的技术,至少收到一个“服务包”,或者在我们发货之日更新。当然,这需要大量猜测,因为发货日期尚不清楚,但经验(观察行业)有很大帮助。

有一种艺术可以对有哪些技术会受欢迎,以及哪些技术会随着时间流逝而做出有根据的猜测。不幸的是,这真的是经验问题。如果您的开发人员具有多年的经验,并且掌握最新技术(重要),那么他们就是帮助您做出决策的好资源。

答案 1 :(得分:4)

时间框架和项目风险。这些都是基础。

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

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

如果项目中有时间能够吸收像LINQ这样的东西,并且即使对于新技术它也显然更好,那么我可以看到将它用于新工作,并且可能在旧的工作中进行改造

如果你有一个为期一年的项目,很容易看到在采用新技术的时间线上容易“松弛”的地方。如果这是一个为期一个月的项目,也许不是那么多。

虽然那里有许多精彩的新技术,而且他们每天都会出现,但可以说更多关于争论“你认识的魔鬼”与采用新的未经证实的东西。这就是为什么,就个人而言,我在家里以“业余爱好模式”进行大部分这种探索,这样我就可以更好地了解新项目,因为新技术可能适合我们的尝试和真实“老派”的方法。

否则,在项目规范期间需要时间来证明新技术以确定其在项目开始时是否适合。很多时候,制定规格的人都没有时间。

答案 2 :(得分:1)

凭借1年的经验,首先不选择合适的技术不是您的错。这些决定难以接受并且有经验。

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

答案 3 :(得分:1)

对于给定的解决方案或开发项目而言,有很多因素会影响哪种技术“适当”。

很多时候,你会对选项产生许多内部和外部的影响,看似“正确”,什么是受欢迎的,什么可能是最有趣的。

我认为做出“正确”的决定是选择最稳定,最有记录,最可行的解决方案。现在要做到这一点,你需要跟上技术并知道那里有什么。因此,紧跟LINQ,实体框架等是必不可少的。

真正的“艺术”决定什么是适合您的环境,每个环境都不同,您需要考虑许多不同的项目。这仅在内部使用吗?如果没有,你对环境有什么样的控制和影响?是否可以使用最新版本的VS等。

我不喜欢使用“切割边缘”只是因为它就是这样。需要有技术基础来使用新工具。

答案 4 :(得分:1)

在项目开始之后切换到Linq-to-SQL,当不是每个人都准备好了,可能是一个错误,是的。即使你应该开始使用它,最好在项目开始后坚持你所知道的。反过来又是不同的:如果你在项目开始时尝试新的东西而且情况很糟糕,那么最好切换回更熟悉的东西。

对于Linq-to-sql,它不太​​可能为您提供值得切换到项目中期的优势。这是一场赌博,不幸的是,听起来它没有成功。

.Net数据访问选项让我们许多人感到疯狂。你不是一个人。即使试图了解关于所有技术也变得越来越困难。要正确评估,您必须有经验并彻底调查。你肯定不想尝试最新的东西,因为它似乎很整洁。我们的一些旧熟悉的技术(如ADO.NET)工作正常。

答案 5 :(得分:0)

有一半时间感觉更像是使用手头上的资源(即人们知道哪种语言?)以及我们获得了哪些许可?

答案 6 :(得分:0)

在项目的开始或结束时,使用“LINQ”并不一定是“神奇”的想法。如果您的团队有使用ADO.NET的经验并且已成功使用该技术完成项目,那么您确实应该使用该技术。

重点是,如果你有一个团队“内部和外部”知道VB6 ......那么猜测......你更喜欢编写VB6。

使用大多数团队都熟悉且知识渊博的技术。(希望这是您正在招聘的目标。)

相关问题