首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDataSource vs ObjectDataSource

SqlDataSource vs ObjectDataSource
EN

Stack Overflow用户
提问于 2009-07-30 15:17:13
回答 4查看 10.8K关注 0票数 16

如果网页需要一些数据,为什么不让SQLDataSource调用存储过程呢?为什么要使用ObjectDataSource来调用业务对象,然后再调用存储过程呢?我知道构建在.net框架上的其他应用程序(比如说桌面应用程序)可以访问业务对象,但如果应用程序始终只是一个web应用程序怎么办?

更清楚地说:

什么时候应该使用SqlDataSourceObjectDataSource

如何激励人们做出这样的选择?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-30 15:33:18

如果它只是一个演示、原型或快速开发,那么拥有一个SQLDataSource是完全有效的。这是快速的,它是简单的,它只是工作,并给你需要的结果。

然而,当一个应用程序是为长期而设计和构建的,并且预计事情(需求、客户意愿,最终是数据库模式)可能会发生变化,那么引入一个适当的“业务”层--将业务对象建模为对象,然后提供从底层数据库到这些业务对象的映射--可能会更有意义。

正如俗语所说--你可以通过多一层间接(或抽象)来解决计算机科学中的几乎任何问题--这里也是如此。

当然:您可以直接访问数据库,当然,在第一次迭代时,这可能是(或可能是)最快的方法。但从长远来看,当一个应用程序被构建为可持续时,它通常是一种quick-and-dirty方式-维护成本,维护成本,根据您和客户的需求进行更改所需的成本和工作量将会增长,而且非常快,就工作量而言,这种快速而肮脏的解决方案看起来不再那么棒了。

所以总结一下我的观点:是的,一开始,使用直接的SQL数据源可能会更快更容易-所以在重要的地方使用它:完成一个快速演示,一个概念验证风格的应用程序。但从长远来看,当你观察一个应用程序的生命周期时,通常值得投入更多的精力(设计和编码)来添加这一抽象层,这样你的网页就不会直接依赖于底层数据库的细节。

Marc

票数 23
EN

Stack Overflow用户

发布于 2009-07-30 15:26:21

如果您有一个在项目中使用的业务层,那么ObjectDataSource是自然而然的选择。这很适合许多ORM,而且它们中的许多都提供了额外的好处(验证、撤消等)。它还允许您访问业务对象上的任何其他属性和方法-而不仅仅是直接的SQL字段。这在绑定时非常有用-因为它允许您只绑定到标记中的属性,而不必编写大量的代码。

如果你走这条路,混用SQLDataSource和ObjectDataSource可能会导致下一位接手你项目的开发人员的混淆。在这种情况下,为了代码一致性,我坚持使用ObjectDataSource。

如果您没有业务层,只是直接使用SQL -使用SQLDataSource。我个人的偏好是所有的SQL代码都应该放在业务层或数据层,因为我几乎从不使用SQLDataSource。

票数 3
EN

Stack Overflow用户

发布于 2012-05-06 19:20:53

如果您可以在存储过程中应用您的业务层代码,那么最好使用SQLDataSource

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1207295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档