SqlDataSource的VS的ObjectDataSource(SqlDataSource vs

2019-06-27 06:32发布

如果一个网页需要一些数据,为什么不只是有一个SqlDataSource调用存储过程? 为什么要使用一个ObjectDataSource调用的业务对象,然后调用存储过程? 据我所知,其他应用程序(可以说桌面应用程序),建立在.NET框架可以访问业务对象,但如果应用程序将永远是什么只是一个web应用程序?

为了更清楚:

当一个人应该使用SqlDataSourceObjectDataSource

怎样才能激励的选择吗?

Answer 1:

刚刚一个SqlDataSource是完全有效的,如果它只是一个演示,样机,或快速破解。 它的快速,很容易,它只是工作,并为您提供您所需要的结果。

然而,当一个应用程序的设计和制造,从长远来看,和预计的东西(的要求,客户的意愿,最终的数据库架构)可能会改变,那么它可能使整个很多更有意义,介绍一个合适的“业务”层 - 你的业务对象建模为对象,然后将这些业务对象提供从底层数据库的映射。

俗话说 - 您可以通过间接(或抽象)的又一个层解决了计算机科学几乎任何东西 - 同样适用在这里。

肯定的:你可以直接进入数据库,并肯定的是,在第一,对于第一次迭代,这可能是(或可能)的最快方式。 但是,从长远来看,当一个应用程序被内置到最后,它通常是一个单触而原始的方法-维护的成本,维护成本,需要根据不断变化的成本和精力您和您的客户的需求将增长而很快,这quick'n'dirty解决方案看起来不那么大了,在精力方面。

所以,总结一下我的观点:是的,首先,使用直接SQL数据源可能会更快,更容易 - 所以当这是很重要的一点使用方法:把事情的快速演示,验证的概念风格的应用程序来完成。 但是,从长远来看,当你在一个应用程序的寿命,它通常是值得的投资多一点(设计和编码)努力增加这个抽象层,使你的网页不直接依赖于细节下面的数据库。



Answer 2:

如果你有你使用在你的项目,一个业务层,ObjectDataSource控件是自然的选择。 这与众多的ORM合身,其中许多人提供了额外的好处(验证,撤销等)。 它也可以让你访问任何其他属性和方法,你必须对你的业务对象 - 而不仅仅是直接的SQL领域。 结合时,这可能会即时派上用场 - 因为它可以让你只绑定属性的标记,而不必编写大量的代码后面。

如果你走这条路,混合SqlDataSource和ObjectDataSource控件可以通过接下来的开发者造成混乱拿起你的项目。 在这种情况下,我坚持使用ObjectDataSource控件的代码的一致性。

如果你没有一个业务层和只是直接撞击SQL - 使用SqlDataSource。 我个人的偏好是所有的SQL代码应在业务或数据层,因为我几乎从来不使用的SqlDataSource。



Answer 3:

如果你可以在存储过程中applay你的业务层的代码它更好地使用的SqlDataSource



Answer 4:

从理论上讲ObjectDataSource控件是更好的。 但是,这一切都依赖于对象模型是如何写得很好,记录在案。 我们外包所使用的自定义代码生成器(他们不会给我们提供)来产生所有层的一家公司。 它原来是噩梦做出哪怕是很小的更改,如添加属性或更改字段类型。 我现在几乎报废他们所做的一切,只是用他们写的存储过程。

我的长期目标是重新写从地上爬起来使用商业建模工具和代码生成的应用程序。 如果你要使用的ObjectDataSource我强烈建议找到一个很好的建模工具,包括一个灵活的代码生成器。



文章来源: SqlDataSource vs ObjectDataSource